资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,正弦波调制信号发生器的设计,-160408113,朱春鑫,-160408123,邱术海,正弦波调制信号发生器目录,一、设计要求,二、设计方案,三、单元模块设计,四、系统软件设计,五、系统功能,指标参数,1.,测试仪器,2.,整机测试,六、设计总结,一、设计要求,1,基本要求,(,1,)制作完成一路正弦波信号输出,频率范围,20,Hz,20,kHz,;,(,2,)具有频率设置和频率步进功能,频率步进,10,Hz,;,(,3,)输出信号频率稳定度优于,10-5,,用示波器观察时无明显失真;,(,4,)输出电压幅度:在,10,k,负载电阻上的电压峰,-,峰值,V,opp,20,V,;,(,5,)数字显示正弦波的电压有效值、频率等,电压有效值精度,5%,,频率精度,0.1%,。,2,发挥部分(,1,)将正弦波输出信号扩展到三相输出,波形无明显失真,频率可调范围扩展到,1,Hz,30,kHz,,频率步进,1,Hz,;(,2,)在上述信号频率范围内,任两相间的相位差在,0,359,范围内可任意预置,相位差步进,1,;(,3,)在,1,Hz,30,kHz,频率范围内,增加矩形波输出信号,频率可任意预置,频率步进,2,Hz,,,频率精度,0.05%,;矩形波信号的占空比可以预置,占空比步进,当占空比为 时,误差,;(,4,)信号发生器能输出载波频率约为,10,kHz,的调频信号输出,要求调制信号频率在,100,Hz,1,kHz,频率范围内可变,用示波器观察载波信号无明显失真;,二、设计方案,方案一:用专用的,DDS,芯片,ADI,公司的,AD9959,,,AD9959,可以实现最多,16,电平的,频率、相位和幅度调制,还可以工作在线性调频、调相或调幅模式。,AD9959,的应用范围包括相控阵列雷达卢纳系统、仪表、同步时钟和,RF,信号源,并且有,4,路带,10,位,DAC,的,DDS,通道,最高取样频率为,500 MSPS,,完全可以满足题目要求。,方案二:,FPGA,实现,DDS,技术,把,DDS,中的,ROM,改用,SRAM,,,SRAM,作为一个波形抽样数据的公共存储器,只要改变存储波形信息的数据,就可以灵活地实现任意波形发生器。,方案比较:方案一中使用到专用的,DDS,芯片,利用专门,DDS,芯片开发的信号源比较多,它们输出频率高、波形好、功能也较多,但它们的,ROM,里一般都只存有一种波形(正弦波),加上一些外围电路也能产生少数几种波形,但速度受到很大的限制,因此使用不是很灵活。用,FPGA,设计,DDS,电路比采用专用,DDS,芯片更为灵活。因为只要改变,SRAM,中的数据,就可以产生任意波形,因而具有相当大的灵活性。,FPGA,芯片还支持在线升级,将,DDS,设计嵌入到,FPGA,芯片所构成的系统中,并采用流水线技术,其系统成本并不会增加多少,而购买专用芯片的价格则是前者的很多倍。因此,采用,FPGA,来设计,DDS,系统具有很高的性能价格比。因此我们选择方案一。,三、单元模块设计,本系统由,FPGA,、单片机控制模块、键盘、,LCD,液晶显示屏、,DAC,输出电路和稳压电源电路构成。用,FPGA,实现直接数字频率合成技术(,DDS,),产生正弦波、方波、三角波,合成,FSK,、,ASK,、,PSK,、,AM,、,FM,等信号。采用单片机,ATMAGE128,控制直接数字频率合成器(,DDS,)的工作、按键及显示。整个系统结构紧凑,电路简单,功能强大,可扩展性强,1.,系统框图,2,、,FPGA,、,DDS,模块,3,、单片机最小系统级显示电路,4,、,DA,转换器模块,5,、,3,路,OPA452,后级运算放大电路,四、系统软件设计,1,、单片机显示控制程序流程图,五、系统功能、指标参数,1,、系统功能:实现三相三相正弦信号输出,从以上数据可以得出,系统完全符合指标。,设定,输出,误差,506Hz,505.8Hz,0.2Hz,1000Hz,999.7Hz,0.3Hz,20548Hz,20547.5Hz,0.5Hz,50000Hz,49999.9Hz,0.1Hz,1,、测试仪器,Tektronix TDS 2024B,示波器,Luyang,YB1731B 3A DC POWER SUPPLY;,数英,TFG3150L DDS,函数信号发生器,2,、整机测试,六、设计总结,本设计提出了一种使用经济有效的低频信号发生器的设计方法,系统可以实现各种频率各种相位的输出,可以实现,ASK,、,FSK,调制信号的输出,其他的调制信号也可在以后系统升级中需要的时候设置,也可在载波位,10K,模拟调频信号的输出,调制信号在,100HZ,到,1KHZ,范围内可调。系统功能强大,更可以升级扩长,系统,DDS,部分用的是,Verilog,HDL,和,VHDL,混合编程实现,可以很方便的下载到,FPGA,芯片中测试,可以得到广泛的应用。,附录,B,DDS,得,VHDL,程序,:,library,ieee,;,use ieee.std_logic_1164.all;,use,IEEE.STD_LOGIC_arith.all,;,use,IEEE.STD_LOGIC_unsigned.all,;,use,work.sine_lut_pkg.all,;,package,dds_synthesizer_pkg,is,component,dds_synthesizer,generic(,ftw_width,:integer,);,port(,clk_i,:in,std_logic,;,rst_i,:in,std_logic,;,ftw_i,:in std_logic_vector(ftw_width-1,downto,0);,phase_i,:in std_logic_vector(PHASE_WIDTH-1,downto,0);,phase_o,:out std_logic_vector(PHASE_WIDTH-1,downto,0);,ampl_o,:out std_logic_vector(AMPL_WIDTH-1,downto,0),);,end component;,end,dds_synthesizer_pkg,;,package body,dds_synthesizer_pkg,is,end,dds_synthesizer_pkg,;,-Entity Definition,library,ieee,;,use ieee.std_logic_1164.all;,use,IEEE.STD_LOGIC_arith.all,;,use,IEEE.STD_LOGIC_unsigned.all,;,use,work.sine_lut_pkg.all,;,entity,dds_synthesizer,is,generic(,ftw_width,:integer:=32,);,port(,clk_i,:in,std_logic,;,rst_i,:in,std_logic,;,ftw_i,:in std_logic_vector(ftw_width-1,downto,0);,phase_i,:in std_logic_vector(PHASE_WIDTH-1,downto,0);,phase_o,:out std_logic_vector(PHASE_WIDTH-1,downto,0);,ampl_o,:out std_logic_vector(AMPL_WIDTH-1,downto,0),);,end,dds_synthesizer,;,architecture,dds_synthesizer_arch,of,dds_synthesizer,is,signal,ftw_accu,:std_logic_vector(ftw_width-1,downto,0);,signal phase :std_logic_vector(PHASE_WIDTH-1,downto,0);,signal,lut_in,:std_logic_vector(PHASE_WIDTH-3,downto,0);,signal,lut_out,:std_logic_vector(AMPL_WIDTH-1,downto,0);,signal,lut_out_delay,:std_logic_vector(AMPL_WIDTH-1,downto,0);,signal,lut_out_inv_delay,:std_logic_vector(AMPL_WIDTH-1,downto,0);,signal quadrant_2_or_4 :,std_logic,;,signal quadrant_3_or_4 :,std_logic,;,signal quadrant_3_or_4_delay:,std_logic,;,signal quadrant_3_or_4_2delay:,std_logic,;,begin,phase_o,=phase;,quadrant_2_or_4=phase(PHASE_WIDTH-2);,quadrant_3_or_4=phase(PHASE_WIDTH-1);,lut_in,=phase(PHASE_WIDTH-3,downto,0)when quadrant_2_or_4=0 else conv_std_logic_vector(2*(PHASE_WIDTH-2)-conv_integer(phase(PHASE_WIDTH-3,downto,0),PHASE_WIDTH-2);,ampl_o,=,lut_out_delay,when quadrant_3_or_4_2delay=0 else,lut_out_inv_delay,;,process(,clk_i,rst_i,),begin,if,rst_i,=1 then,ftw_accu,0);,phase 0);,elsif,clk_ievent,and,clk_i,=1 then,ftw_accu,=,conv_std_logic_vector(conv_integer(ftw_accu,)+,conv_integer(ftw_i,),ftw_width,);,phase =conv_std_logic_vector(conv_integer(ftw_accu(ftw_width-1,downto,ftw_width,-PHASE_WIDTH)+,conv_integer(phase_i,),PHASE_WIDTH);,if quadrant_2_or_4=1 and,phase(PHASE_WIDTH,-3,downto,0)=,conv_std_logic_vector,(0,PHASE_WIDTH-2)then,lut_out,=conv_std_logic_vector(2*(AMPL_WIDTH-1)-1,AMPL_WIDTH);,else,lut_out,=,sine_lut(conv_integer(lut_in,);,end if;,quadrant_3_or_4_delay=quadrant_3_or_4;,quadrant_3_or_4_2delay=quadrant_3_or_4_delay;,lut_out_inv_delay,=conv_std_logic_vector(-1*,conv_integer(lut_out,),AMPL_WIDTH);,lut_out_delay,=,lut_out,;,end if;,end process;,end,dds_synthesizer_arch,;,
展开阅读全文