《南京理工大学DDS实验报告(共17页).doc》由会员分享,可在线阅读,更多相关《南京理工大学DDS实验报告(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上南 京 理 工 大 学直接数字频率合成器实验报告 学号: 姓名: 学院: 指导老师: 时间: 目录摘要与关键字-3实验设计内容-3设计原理-3概念-3设计基本要求-3实验要求-4 设计提高部分要求-4基本框图-4工作原理-4整体电路图-5各子模块设计原理-6 频率预置和调节电路-6累加器-7波形存储器-9DDS电路-9分频电路-9测频电路-11译码电路-11显示电路-14 调试仿真及下载-15实验感想-16参考文献-17摘要报告内容为设计一个具有清零、使能、频率控制、相位控制、输出多种波形(包括正余弦、三角波、锯齿波、方波)、经过D/A转换之后能在示波器上显示的直接数
2、字频率合成器。直接数字频率合成技术是一项非常实用的技术,它广泛的应用于数字通信系统。报告分析了DDS的设计原理和整个电路的工作原理,介绍了ROM查找表设计和相位累加器设计,还分别说明了各子模块的设计原理和调试、仿真、编程下载的过程。在试验中我们用到了QuartusII 7。0软件。AbstractThe report tells Direct digital synthesizer can control using、reset、change frequency and phase、output various wave form(including sine(cosine), triangl
3、e wave, sawtooth, square waveform)and after conversion after also displayed on the oscilloscope。 Direct digital synthesizer technology is a useful subject ,its widely applied in digital communication。 Also,it analyzes the theory and design about direct digital synthesize(DDS) and analyzed the princi
4、ple of all work and explained the designing principle of different parts separately and describes the principle and features of DDS 。The realizing method of ROM finding-table and phase counter and introduced in detail。 At the same time it introduced the debugging, simulating, compiling, programming。
5、 with the help of QuartusII 7。0 we complete well。 关键字DDS ROM QUARTUSII 输出波形 KeywordsDirect digital synthesizer ROM QuartusII output various wave form 实验要求说明一. 实验设计内容 设计一个频率及相位均可控制的具有正弦和余弦输出的直接数字频率合成器(Direct Digital Frequency Synthesizer 简称DDFS或DDS)。二设计原理1、概念 直接数字频率合成器(Direct Digital Frequency Synthe
6、sizer)是一种基于全数字技术,从相位概念出发直接合成所需波形的一种频率合成技术。 2、 设计基本要求(1)利用QuartusII软件和SmartSOPC实验箱实现DDS的设计;(2)DDS中的波形存储器模块用Altera公司的Cyclone系列FPGA 芯片中的RAM实现,RAM结构配置成21210类型; (3)具体参数要求:频率控制字K取4位;基准频率fc=1MHz,由实验板上的系统时钟分频得到; (4)系统具有使能功能;(5)利用实验箱上的D/A转换器件将ROM输出的数字信号转换为模拟信号,能够通过示波器观察到正、余弦两路波形;(6)通过开关(实验箱上的Ki)输入DDS的频率和相位控制
7、字,并能用示波器观察加以验证。3、设计提高部分要求(1)通过按键(实验箱上的Si)输入DDS的频率和相位控制字,以扩大频率控制和相位控制的范围;(注意:按键后有消颤电路) (2)在数码管上显示生成的波形频率;(3)设计能输出多种波形(三角波、锯齿波、方波等)的多功能波形发生器; (4)充分考虑ROM结构及正弦函数的特点,进行合理的配置,提高计算精度; (5)基于DDS的AM调制器的设计; (6)自己添加其他功能。4、基本框图5、工作原理 DDS的基本结构主要由相位累加器、相位调制器、正弦波数据表(ROM)、D/A转换器构成。相位累加器由N位加法器N位寄存器构成。每来一个CLOCK,加法器就将频
8、率控制字fwrod与累加寄存器输出的累加相位数据相加,相加的结果又反馈送至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此,相位累加器在每一个时钟脉冲输入时,把频率控制字累加以此,相位累加器输出的数据作为波形存储器的相位取样地址,这样就可把存储在波形存储器内的波形抽样值进行找表查出,完成相位到幅值的转换。由于相位累加器为N位,相当于把正弦信号在相位上的精度定为N位,所以分辨率为1/2N。若系统时钟频率为fc,频率控制字fword为1,则输出频率为fOUT=fC/2N,这个频率相当于基频。若fwo
9、rd为K,则输出频率为:fout=K* fC/2N当系统输入时钟频率fC不变时,输出信号的频率由频率控制字K所决定。由上式可得:K=2N*fout/fC其中,K为频率字,注意K要取整,有时会有误差。选取ROM的地址时,可以间隔选项,相位寄存器输出的位数D一般取10-16位,这种截取方法称为截断式用法,以减少ROM的容量。D太大会导致ROM容量的成倍上升,而输出精度受D/A位数的限制未有很大改善。DDS工作流程示意图:6、 整体电路图各子模块设计原理一 频率预置和调节电路(1)设计原理: K为相位增量,也叫频率控制字。DDS的输出频率表达式为fout=K* fC/2N,当K=1时,DDS输出最低
10、频率(也即频率分辨率)为fc/2N,而DDS的最高输出频率由Nyquist采样定理决定,即fc/2,也就是说K的最大值为2N-1。因此,只要N足够大,DDS可以得到很细的频率间隔。要改变DDS的输出频率,只要改变频率控制字K即可。设计模块时,用74161设计模16模块,1HZ信号输入让其变化。该模块有清零和保持端,由开关控制,以便计数到需要值时保持或清零。输出作为频率控制字低四位,高八位置零,输入累加器进行累加。(2) 电路图如下:(a)频率控制 由频率控制字控制频率的低4位,使频率在0Hz16Hz间变化,从而达到控制频率的目的。电路图如下:(b)相位控制 由相位控制字控制相位的高4位,使相位
11、较大幅度的变化,从而达到改变相位的目的。电路图如下:二 累加器(1)设计原理: 相位累加器由12位加法器与12位寄存器级联构成。每来一个时钟脉冲,加法器将频率控制字K与寄存器输出的累加相位数据相加,再把相加后的结果送至寄存器的数据输入端。寄存器将加法器的上一个时钟作用后所产生的相位数据反馈至加法器的输入端,以使加法器在下一个时钟作用下继续与频率控制字进行相加。这样,相位累加器在时钟作用下,进行相位累加。当相位累加器累加满量时就会产生一次溢出,完成一个周期性的动作。(2) 原理如下图: (3)电路图如下:其中加法器和寄存器器用VHDL语言编写,代码如下:library ieee;use ieee
12、.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder_12 is/加法器port(clr,clk: IN std_logic;in1,in2: IN std_logic_vector(11 Downto 0);ci: OUT std_logic;shuchu: OUT std_logic_vector(11 Downto 0);end adder_12;architecture behave of adder_12 isbegin process(clr,clk) variable temp_shuchu:std_lo
13、gic_vector(11 Downto 0); variable temp_ci:std_logic;beginif(clr=0) thenci=0;shuchu0);elsif(clkevent and clk=1) thentemp_ci:=0;for i in 0 to 11 looptemp_shuchu(i):=in1(i) xor in2(i) xor temp_ci;temp_ci:=(in1(i) and in2(i) or (in1(i) xor in2(i) and temp_ci);end loop;shuchu=temp_shuchu;ci=temp_ci;end i
14、f;end process;end behave;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity suocun is/寄存器port(D:in std_logic_vector(11 downto 0); clk:in std_logic; Q:out std_logic_vector(11 downto 0) );end suocun;architecture behave of suocun isbeginprocess(clk) is begin if(clkevent and
15、 clk=1) then Q=D;end if ;end process;end behave;三 波形存储器首先创建一个新的mif文件,将要储存的数据输入进去,点击保存。再创建一个新的ROM,创建过程中选择不同的mif文件即可储存不同的波形。生成的ROM如下:四DDS电路利用LPM_MUX实现波形选择,从正余弦、三角波、锯齿波、方波选择波形输出。总DDS电路图如下:五分频电路(1)设计原理: 脉冲发生电路是为计时器提供计时脉冲的,因为设计的是计时器,所以需要产生1Hz的脉冲信号。EDA实验系统的输入时钟为48MHz,那么要产生1Hz的脉冲信号,则要对输入时钟48MHz进行分频,依次进行48分
16、频、两次1000分频即可得到1Hz的脉冲信号,一次2分频得到0.5Hz。(2)电路图如下:(3) 程序代码 分频电路用Verilog语言编写,代码如下:module div_clk48(clk_in,reset,clk_out);input clk_in,reset;output clk_out;reg clk_out;reg width(n)-1:0 count;parameter n=24;/n为参数,可设置成不同分频always (posedge clk_in)if(reset) count=0;else if(count=n-1) count=0;else count0;width=w
17、idth+1) size=size1;endendfunctionendmodule六、 测频电路(1)设计原理: 测频就是计算1秒钟内脉冲的个数。我们利用计数器和锁存器实现这一功能。由于累加器以频率控制字K为间隔,当累加器满量时就会产生一次溢出,完成一次周期性的动作,这个周期也就是DDS信号的一个频率周期,所以将累加器的最高位作为测频电路技术器的脉冲。 将1HZ的时钟信号二分频,得到0.5Hz。将0.5Hz脉冲送入锁存器的时钟端,0.5Hz反相延时后的脉冲送入计数器的清零端。这样就使计数器在2s的脉冲周期内,1s内清零,1s内计数。由于锁存器的脉冲和计数器的脉冲是反相的,且有一定的延时,所以
18、当锁存器有效脉冲来到时,计数器是清零状态,锁存器就锁存前1s内计数器的计数信号。这样就完成了1s内的脉冲计数,再将锁存器的输出送入译码显示电路,就可以在数码管上显示波形频率了。(2) 原理如下图: (3) 电路图如下: 七、 译码电路(1)设计原理: 频率控制字和相位控制字都是四位的二进制码,要转换成8421BCD码才能在数码管上显示。因此先通过译码电路实现此转换再输入显示电路。(2) 对应转化如下表:频率控制字kf十进制个位(kfg3.0)十进制十位(kfs3.0)0000(0)0000(0)00000001(1)0001(1)00000010(2)0010(2)00000011(3)001
19、1(3)00000100(4)0100(4)00000101(5)0101(5)00000110(6)0110(6)00000111(7)0111(7)00001000(8)1000(8)00001001(9)1001(9)00001010(10)0000(0)00011011(11)0001(1)00011100(12)0010(2)00011101(13)0011(3)00011110(14)0100(4)00011111(15)0101(5)0001(3)VHDL程序代码如下:library ieee; use ieee.std_logic_1164.all;entity yima is
20、port(pl_kz: in std_logic_vector(3 downto 0);xw_kz: in std_logic_vector(3 downto 0);plh:out std_logic_vector(3 downto 0);pll:out std_logic_vector(3 downto 0);xwh:out std_logic_vector(3 downto 0);xwl:out std_logic_vector(3 downto 0);end yima;architecture behave of yima isbeginwith pl_kz selectplh=0000
21、 when 0000,0000 when 0001,0000 when 0010,0000 when 0011,0000 when 0100,0000 when 0101,0000 when 0110,0000 when 0111,0000 when 1000,0000 when 1001,0001 when 1010,0001 when 1011,0001 when 1100,0001 when 1101,0001 when 1110,0001 when others;with xw_kz selectxwh=0000 when 0000,0000 when 0001,0000 when 0
22、010,0000 when 0011,0000 when 0100,0000 when 0101,0000 when 0110,0000 when 0111,0000 when 1000,0000 when 1001,0001 when 1010,0001 when 1011,0001 when 1100,0001 when 1101,0001 when 1110,0001 when others;with pl_kz selectpll=0000 when 0000,0001 when 0001,0010 when 0010,0011 when 0011,0100 when 0100,010
23、1 when 0101,0110 when 0110,0111 when 0111,1000 when 1000,1001 when 1001,0000 when 1010,0001 when 1011,0010 when 1100,0011 when 1101,0100 when 1110,0101 when others;with xw_kz selectxwl=0000 when 0000,0001 when 0001,0010 when 0010,0011 when 0011,0100 when 0100,0101 when 0101,0110 when 0110,0111 when
24、0111,1000 when 1000,1001 when 1001,0000 when 1010,0001 when 1011,0010 when 1100,0011 when 1101,0100 when 1110,0101 when others;end behave;八、显示电路(1)设计原理:本次实验中用到七位数码显示即七个数码显示管,为控制七个数码管循环点亮,首先设计一个模七计数器,后将其输出经过一个三-八译码器输出位地址,即译码电路7448将输入信号对应的输出信号控制数码管数字的显示,而模块74138译码器选择七个数码管中哪个接受信号。每个数码显示管同步显示需要显示的数字,由于同
25、一时间至点亮一个数码管,用较高的频率来数码管循环显示,利用人眼的视觉惰性,就实现了动态显示功能。2)电路图如下:调试仿真及下载调试先保存,将上述电路以字母输入方式输入并保存在工程文件夹中。再将文件置顶,最后进行编译,在主菜单 中选择processing项,在弹出的对话框中选择Start complication键,则编译开始。在编译过程中,若有任何信息、错误和警告消息,都将显示在自动打开的Message-Compiler窗口中;若由于文件出错而没有通过,则需要返回原文件进行修改,修改后存盘,再编译直至文件通过。仿真新建一个“Vector Waveform file”文件,并在下拉列表中选.vw
26、f扩展名,生成波形文件。右键单击,在弹出的菜单中选Enter Nodes Frome SNF,在弹出的对话框中选择要观测的节点。选OptionGrid Size和FileEnd Time,设置相应选项,并给输入引脚加上适当的信号。然后,选FileSave保存。接着选择主菜单中的Simulator项,打开模拟器,点击Start开始仿真。下载1. 在主菜单Assignments中选择Device项,在弹出的对话框中选择相应的器件EP1C12Q240C8。2. 在主菜单Assignments 选“Pins”,打开平面布置图编辑器窗口,将设计的电路图中的各输入输出锁定在相应的管脚上。具体管脚号参见课程
27、设计参考资料附录五。3. 在主菜单选FileSave保存文件,再次编译项目,生成.sof文件,以用于下载。4. 在主菜单Tools 选Programmer,在弹出的对话框中单击start,即可完成下载。5. 要注意在实验的不同阶段,系统板上各短路帽、跳线帽的插拔与否。 实验总结 本次实验我们还是只用了不到4天的时间设计了一个直接数字频率合成器,相比上星期的EDA难度增加了很多。也许是老师的训练重点变了,上星期重点是熟悉EDA设计的主要工具QuartusII软件,而这星期就应该将重点转入利用这个工具完成设计。这次实验用到了很多以前没接触过的知识,像VHDL语言,本设计里虽然那有几个模块是用VHD
28、L语言编的,但是都是很简单的程序,还是现学的,终于明白了我们所谓的本科大学生对于专业技术还只是略懂一二而已。看来以后要加强自己的专业知识的积淀。同时在分频电路中也是用Verilog语言编写,因为是初学,所以从图书馆借阅了Verilog的相关书籍,在刚开始编写时也会出现各种各样的小错误,但是后来都在老师和助教的帮助下一一解决了。实验中一个难点就是生成ROM表,由于要考虑量化值,所以数据的填写就成了难点,要清楚的了解正弦、方波、三角波、锯齿波的特点。其次就是生成ROM符号,要注意先建立Mif文件。在这个试验开始的第一天中我们只解决了这一个问题。实验完了之后仍觉得这部分是整个实验的核心,也是一个很大
29、的难题。在我们设计的模块中,我们没有设计防抖动开关,所以在后来的频率的调节中,频率跳动太大,对调节数据很不方便。解决的方法可以是设计一个防抖动开关,也可以将频率数据直接接在电路中,这样通过改变电路中的输入频率来达到实验目的。如果以后还有机会,这方面很值得改进。其次,在精度方面我们设计的也不是很全面,由于正弦下半周期的数据可以是上半周期取负数,所以可以压缩数据表提高精度与空间利用率。方波、三角波、锯齿波都可以同理进行压缩。总的来说,设计的大方向上大家都是一样,主要是小的细节的不同,但也就是这些小的细节让整个设计有了很大的变化,因为电路的设计的功能直接关系到在电路箱上的显示与调节,如果没有合理的设
30、计,最终的结果就不是很理想,对用的人来说也不是很方便,会出现各种各样的问题。所以在设计当中应逐步消除各种不同的影响。体会:在这一个星期中,我们通过不断地发现问题、解决问题,学到了很多,收获了很多。记得开始时我们对这个实验充满了疑惑,不知道从何下手,尤其是DDS那块,但后来在老师的耐心指导下,虽然问题还是很多,但一切开始步入了正轨。在后面几天里我们主要解决的问题就是电路的问题,因为首次用语言编写程序,在编译过程中还是存在很多问题,我们根据提示的错误一一改正,最终建立了我们想要的功能模块。在原理图搭建好之后下载到试验箱的过程中也会出现很多问题,所以就要一点一点检查自己的原理图,这是很考验耐心和技巧
31、的时候,在检查时,要逐个模块的检查、调试,有时还要看清管脚,不要接错,和电路中的对应好。尤其是对复杂的图形,更要耐心的看清每一部分。 搭建电路图要细心,要是继续在原有图上进行改进时就更要细心了,有时,在初始的设计中有很多问题考虑不周全,后面要修改时就要改动原有的电路图,这是最容易出错的地方。管脚的命名,线的连接,各种各样的问题只要不注意都会出现。参考文献1、付文红、花汉兵编著.EDA技术与实验.机械工业出版社2、蒋立平编著.数字电路.南京理工大学出版社3、南京理工大学电子技术中心编.EDA设计实验指导书4、王毅评、张振荣编著.VHDL编程与仿真.北京人民邮电出版社5、潘松、黄继业编著.EDA技术实用教程.北京科学出版社6、邹彦编著.EDA技术与数字系统设计.北京电子工业出版社7、谭会生、瞿遂春等编.EDA技术综合应用实例与分析.西安电子科技大学出版社专心-专注-专业