基于FPGA的DDS信号发生器设计 (1).doc
物理与电子信息学院本科毕业论文目 录1 绪论22 直接数字频率合成技术的工作原理32.1直接数字频率合成器的基本构成32.2 直接数字频率合成器工作原理33 主要软件流程54 主要功能模块设计94.1系统框图设计94.2主要模块设计95 系统测试与结论165.1系统调试165.2仿真测试195.3资源消耗分析266 结论28参考文献:29ABSTRACT30致 谢31附录A 程序清单32共40页 共10598字27基于FPGA的DDS信号发生器设计王泽斌(学号:20171102832)(物理与电子信息学院 2017级电子信息工程2班,内蒙古 呼和浩特 010022)指导教师:包秀荣摘要:直接数字频率合成器(DDS)是近些年迅速发展起来的一种频率合成技术,具有频率转换速度快、分辨率高、稳定度高、相位噪声低、易实现多种输出信号等诸多优点,广泛应用在通信、数字电视、卫星定位、航空航天、雷达和电子对抗等领域,具有广阔的应用前景1。传统传统的用分立元件或通用数字电路元件设计电子线路的方法设计周期长,花费大,可移植性差。与传统的频率合成方法相比,DDS合成信号具有频率切换时间短频率分辨率高相位变化连续等诸多优点。本文主要研究内容是使用硬件语言在 FPGA 中,对 DDS 系统进行设计与实现,用fpga实现DDS具有高性能,高集成度,并且可以克服传统DDS设计中的不足,从而设计出性能优良的DDS系统关键词:直接数字频率合成器;FPGA;Verilog分类号: TN91 文献标识码: B1 绪论随着我国高新技术及无线通信技术的高速发展,原来的信号频率源质量已经远远不能跟上近些年的科技发展所需要的参数性能。社会的通信技术在发展,频率随着传输速度以及范围的扩大也越来越高。之前所存在的老一代的信号频率产生技术已经不能满足现阶段社会所需要的高频率,高质量,高分辨率等技术特点3。因此为了满足现阶段的技术水平要求,提出了一种新型的频率合成技术。直接数字频率合成技术的概念最早在美国被提出,但是当时由于世界的发展原因,被提出的概念并没有被众人所重视,近年来科技进步后,人们才越来越认识到直接数字频率合成技术的重要性4。新型的频率合成技术之所以迅速发展主要是源于它的直接性,频率转换速度非常快,并且相对带宽较宽;相位连续;并且控制还非常方便;可以较为容易的控制输出任意波形;并且幅度相位等关键参数可调。这些优点为直接数字频率合成技术广泛应用奠定了重要地位。目前来说在国内专门开发研究DDS相关技术的厂家屈指可数,这原因仅仅是因为相关从事开发人员的开发经验不足,而且国内的其他航空航天行业以及一些高新科技的通信行业发展都是要以此为基础信号源,在进行接下来的开发技术研究,所提出的新型的FPGA数字频率直接合成技术可以比较完美的切合实际,解决当下这一难题。另一方面来讲,如果采用基于FPGA的直接数字频率合成技术,还具有其他方面的优势,比如说FPGA如果开发研制相关技术,在精度上会比其他相关硬件技术高得多,这得益于FPGA的高速时钟5。在此基础上使用FPGA来开发完成相关设计,其整个功能的控制性也比较容易操作,这比使用单片机或者DSP技术实现要更具有优势。除此之外,直接数字频率合成技术可能会需要在存储器中要写入一些波形数据,采用FPGA开发可以直接使用用户开发工具中的一些内置IP核,直接调用ROM工具,这样不仅节省了外部存储器,开发起来还十分方便。2 直接数字频率合成技术的工作原理2.1直接数字频率合成器的基本构成直接数字频率合成器 (Direct Digital Synthesis,简称DDS )是基于抽样定理中的时域采样定理设计而成的,将相位数据作为查找表的地址来寻址最终输出幅值数据的一种技术8。图 2.1所示为 基本直接数字频率合成器的工作原理,其中主要组成部分有:外部输入频率控制字 F、内部构成相位累加器(加法器)、内部存储器ROM 查找表、D/A数模转换器以及最后输出波形需要的低通滤波器,最为关键的是整个系统的参考时钟。 图2.1 DDS基本构成框图由上图的DDS的基本原理构成之后,对整个工作过程做一个详细的说明:在一个标准的参考时钟源下,每次来一个参考时钟,全加器就负责累计计数,使其当前累加器的数据加上频率控制字,然后将其结果送入香味寄存器中,相位寄存器的N位数据在转换成只读存储器的地址入口,在事先存储好的存储器在查找相应的数据,输出的数据在经过数模转换器后进行一些必要的滤波操作9。最后就是可以直接观测的波形。2.2 直接数字频率合成器工作原理DDS 的基本工作过程是:在一个标准的参考时钟fclk,作为时钟源,作为时钟源,每送来一个时钟(fclk),N 位全加器的会将此时的数据加上频率控制字,其结果送给寄存器。这个寄存器的数据传输出是作为ROM的地址输入。寄存器的 N 位数据作为 ROM 查找表的地址,查找表中存储的是所需信号的幅值数据,ROM 查找根据相位寄存器传过来的相位数据作为的地址信号,输出与之相对应的幅值数据,然后再经过数模转换器和低通滤波器的平滑滤波,最终输出所需信号。另一方面,相位寄存器输出的当前相位数据会反馈给全加器,在下一个时钟 fclk的驱动下,全加器再次与频率控制字 F 相加,从而使得相位数据以 F递增,如此循环,直到一个周期的相位数据溢出,全加器归零,重新开始累加数据10。下边对整个DDS工作原理进行具体分析:设该系统的的频率控制字是F,时钟周期是Tc,频率是,相位累加器的位宽是N,那么可以推导出由这个系统输出的信号的频率是: (1)从公式的左端可以得到结论,输出的频率是与采样的标准时钟,外部频率控制字,相位累加器的位宽N有关。当为定值的时候,输出的频率大小可以根据相位控制字来改变,F=1的时候,整个系统输出的P频率最小,将此时的输出结果记作 11: (2)公式(2)中为 DDS 的系统频率的精度表示。当为采样信号时,连续采样两次间的相位增量 (3)其中。离散的相位序列为: (4)当相位累加器的输出是N位时候, (5)输出的信号频率为: (6)有这个计算公式可以推导出:输出的信号频率与存储器的ROM的高M位无关,就是说明如果是一个确定的值的时钟,输出的频率是由频率控制字来决定的12。在接下来的实际设计中都是根据这一原理来进行具体的逻辑代码设计。至此本章节就已经完成。下边章节将介绍在软件中编写设计文件,以及建立工程的描述。3 主要软件流程在本次的设计中,使用到的是英特尔旗下的开发软件。Quartus II 是Altera公司(现在已经被英特尔公司收购)的综合性CPLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程14。首先进行的是新建工程,打开用户开发软件之后,点击如图所示相应的新建工程按键就可以重新按照开发用户的想法重新建立一个新的工程。图3.1 软件系统界面建立工程完成之后,就要选择添加设计文件,在这个阶段用户可以直接添加已经写好的开发文件,选择工程的类型完成后,下一步操作是添加设计文件,Add source界面,有“加号”选择项,可以直接点击这个加号,也可以点击下边的Add source 选项,如果文件事先没有编写完成也可以直接越过这个步骤直接先进行下一步操作15。图3.2 添加设计文件界面在添加文件设置完成之后,就到了建立工程的最后一个阶段,根据工程的需要对器件进行选择。选择器件时可以根据引脚数(pin)或者芯片的家族(Family)来进一步缩小一个小的范围,当然越高端的芯片其内置资源就越多。可以根据设计的需要以及功能复杂程度来选择相对合适的芯片,做到不浪费资源,来达到降低成本的目的。最后选定芯片之后点击Finish完成即可16。图3.3 芯片选择界面图3.4 选择设计文件类型界面最后在完成设置工程的时候需要注意使用的是VHDL还是verilog语言选项。在本次的工程设计中,采用verilog语言编写,所以在这个界面选择verilog即可,不要选择VHDL。下边章节开始介绍整个系统的测试部分。4 主要功能模块设计4.1系统框图设计图4.1 系统框图根据前边部分章节的分析,在这个章节开始设计实现DDS波形发生器。有第二章节部分的理论分析中,得知DDS波形发送器主要需要累加器,存储波形数据的ROM存储器,以及最后的滤波输出。根据这样的理论,在整体结构设计中,主要设计了DDS顶层模块,方波波形数据存储模块,三角波形数据存储模块,正弦波波形数据存储模块。最后的amp_sel波形选择模块。下面根据每个模块的不同功能进行详细的设计介绍。4.2主要模块设计根据前边部分章节的分析,在这个章节开始设计实现DDS波形发生器。有第二章节部分的理论分析中,得知DDS波形发送器主要需要累加器,存储波形数据的ROM存储器,以及最后的滤波输出。下面根据每个模块的不同功能进行详细的设计介绍。4.2.1 DDS结构设计基于FPGA设计一个多功能的DDS信号发生器通过写入输入信号,可以输出正弦波三角波方波和锯齿波四种波形信号,然后通过控制频率字模块来选择频率,然后通过控制幅度信号来选择不同的幅度。信号发生器的控制模块可以用选择器来实现,通如下图所,是多功能信号发生器的RTL级图。图4.2 DDS设计RTL级视图整个DDS信号发生器系统的设计框图。如图,是4.2所示。其中主要包括频率控制模块,还有正弦波模块,三角波模块,锯齿波模块,方波模块和幅度控制模块。本章将描述信号产生系统中信号传输的基本技术框架,并主要介绍DDS系统的FPGA实现,在下面的章节会具体介绍DDS系统的主要模块及各功能模块的功能以及端口说明。4.2.2地址产生模块图4.3 频率控制字模块信号名称I/O功能描述clkI模块时钟 rst_nI模块复位 fre_incrI 频率控制oacc_dataO输出地址其中主要的端口有时钟信号,异步复位信号,频率控制信号(11:0),输出地址数据信号(11:0)一共四个信号。频率控制字主要元素是累加器,通过累加器完成整个操作。由频率控制(fre_incr)通波改变rom中所存信号的地址来实现频率可调功能, 使得输出地址(oacc_data)发生改变。累加器模块:它是DDS的核心,可以看成是一个简单的计数器,由全加器和寄存器两部分构成。图4.4 累加实现过程如图4.4所示,相位累加器是利用信号递增的相位信息。实现每次在时钟 fclk的驱动下,对相位编码的逐级累加,最终作为 ROM 查找表的地址来寻址幅值数据。 4.2.2正弦信号产生模块图4.5 正弦信号产生模块信号名称I/O功能描述clockI模块时钟addressI 输入地址qO正弦波数据主要的端口有时钟信号,输入地址信号,正弦波数据信号(11:0)这些一共三个信号。正弦波信号存储在已经写入的rom中,而rom中的地址在本模块中就是adress的值,其实是量化的地址序列,然后输出的正弦波形是数据对应地址所量化的幅度,因为正弦波形存储在rom中,而rom中的存储容量是有限的。4.2.3三角信号产生模块图4.6 三角信号产生模块信号名称I/O功能描述clockI模块时钟 addressI 输入地址qO三角波数据主要的端口有时钟信号,输入地址信号,三角波数据信号(11:0)这些一共三个信号。三角波信号存储在已经写入的rom中,而rom中的地址在本模块中就是adress的值,其实是量化的地址序列,然后输出的三角波形是数据对应地址所量化的幅度,因为三角波形存储在rom中,而rom中的存储容量是有限的。4.2.4锯齿信号产生模块图4.7 锯齿信号产生模块信号名称I/O功能描述clockI模块时钟 addressI 输入地址qO锯齿波数据主要的端口有时钟信号,输入地址信号,锯齿波数据信号(11:0)这些一共三个信号。锯齿波信号存储在已经写入的rom中,而rom中的地址在本模块中就是adress的值,其实是量化的地址序列,然后输出的锯齿波形是数据对应地址所量化的幅度,因为锯齿波形存储在rom中,而rom中的存储容量是有限的。4.2.4方波信号产生模块图4.8 锯齿信号产生模块信号名称I/O功能描述clockI模块时钟 addressI 输入地址qO方波数据主要的端口有时钟信号,输入地址信号,方波数据信号(11:0)这些一共三个信号。方波信号存储在已经写入的rom中,而rom中的地址在本模块中就是adress的值,其实是量化的地址序列,然后输出的方波形是数据对应地址所量化的幅度,因为锯齿波形存储在rom中,而rom中的存储容量是有限的。4.2.5幅度控制模块图4.9 幅度控制模块信号名称I/O功能描述clkI模块时钟rst_nI模块复位amp_selectI幅度选择信号signal_selI信号选择信号sin_inI正弦波输入信号sanjioa_inI三角波输入信号juchi_inI锯齿波输入信号fangbo_inI方波输入信号signal_selected_outO输出信号 主要的端口有时钟信号,复位信号,幅度选择信号(1:0),信号选择信号(1:0),正弦波输入信号(11:0),三角波输入信号(11:0),锯齿波输入信号(11:0),方波输入信号(11:0),输出信号(11:0)这些一共九个信号。幅度控制的核心是全加器。全加器会把幅度控制字与寄存器输出的数据加起来,作为输入送给寄存器,寄存器再把这次输入值送到全加器13。5 系统测试与结论在上一章中,已经对设计完的DDS信号发生设计的各个模块进行了模块级别的仿真验证测试,本小结主要内容的主要工作是采用 Quartus II 开发软件,调用Modelsim开发软件,通过 Simulation把设计好的DDS信号发生器的波形仿真出来,观察波形并调试,直到波形调试正确为止。5.1系统调试首先,新建DDS发生器的仿真波形文件。然后点击quartus导航栏中的new按键,然后会出现一个新建文件窗口,然后选择一个Vector Waveform File文件,然后点击波形文件,选择OK按钮。图5.1 新建波形文件然后会弹出如下的对话框,将鼠标放置对话框的空白部分,单击鼠标右键,会有一个insert的选择项,然后选择insert node or bus,如图5.2所示。图5.2 插入输入输出信号然后会出现的insert node or bus的对话窗口中,右击node finder会出现一个选择输入输出的仿真必须信号的会话窗口,然后点击list,选择你需要仿真的输入输出波形信号,然后点击OK按钮。如图5.3所示。图5.3 输入输出信号点击波形文件的name栏的时钟信号,选中时钟信号进行编辑,然后点击导航框中的时钟图标,这个图标编辑编辑clk的时钟频率,设置clk开始时间为0ps,结束时间是10us,设置时间周期为10ns,占空比为百分之五十后点击OK,再编辑复位信号。根据VHDL的设计,复位信号是高电平复位。所以选取一段复位的时间段设置为高电平“1”,其余时间则设置为低电平“0”。 选取的方式是按住鼠标左键盘一直拖拽到选取所需要的时间为止,然后点击导航栏中的高电平信号,则刚才所选取的时间段则变为高电平“1”。编辑其他的输入信号,按住鼠标左键盘一直拖拽到选取所需要的时间为止,然后点击导航栏中的问号图标,则设置信号的进制(二进制,八进制,十进制,十六进制),还有设置的值。如下图5.4所示是已经设置好的输入输出波形仿真信号图5.4 输入仿真信号点击Quartus II 中的Processing。然后在点击Simulator Tool。首先我们要先进行功能仿真,所以在Simulation mode中选择Functional,然后再点击generate function Simulation Netlist。功能仿真提示成功后,点击确定,然后再点击Start,如图5.5所示,功能仿真。图5.5 功能仿真功能仿真成功后,会弹出一个对话框,也就提示仿真成功,然后点击report就可以查看仿真结果。5.2仿真测试 当信号选择为正弦波,incr_fre=26214时,amp_sel选择为“00”。表示的波形的幅度是按照存储在rom中的正弦波的值进行输出。下图是产生的正弦信号,波形的幅度为2400。 图 5.6 正弦波仿真信号(1) 改变正弦波的幅值,通过修改设计代码中的amp_sel,设置正弦波的值为1200,此时可以看到rom中的正弦波的幅度值减少,如图5.7所示,此时仿真波形的图比较amp_sel为“00”的值时,幅度减少一半。图 5.7 正弦波仿真信号(2)改变正弦波的频率,通过修改设计代码中的频率控制字incr_fre的值,设置正弦波的incr_fre值为56428,此时可以看到rom中的正弦波的频率增加,如图5.8所示,此时仿真波形的图比较前面两幅正弦波的频率图时,频率增加了一倍。当信号选择为正弦波,incr_fre=26214时,amp_sel选择为“00”。表示的波形的幅度是按照存储在rom中的正弦波的值进行输出。下图是产生的正弦信号,波形的幅度为2400。 图 5.8 正弦波仿真信号(3) 改变仿真波的波形,通过signal_sel来选择波形,设置signal_sel=01,所得到的的波形为三角波,其他的波形变量保持不变仍为incr_fre=26214时,amp_sel选择为“00”。所得到的波形为三角波,如图5.9所示的仿真波形。图 5.9 三角波仿真信号(1)改变三角波的幅值,通过修改设计代码中的amp_sel,设置三角波的值为1200,此时可以看到rom中的三角波的幅度值减少,如图5.10所示,此时仿真波形的图比较amp_sel为“00”的值时,幅度减少一半。图 5.10 三角波仿真信号(2)改变仿真波的波形,通过signal_sel来选择波形,设置signal_sel=10,所得到的的波形为锯齿波,其他的波形变量保持不变仍为incr_fre=26214时,amp_sel选择为“00”。所得到的波形为锯齿波,如图5.11所示的仿真波形。图 5.11 锯齿波仿真信号(2)根据设计章节可知,设计完成之后需要进行,仿真地址产生模块,通过频率控制来控制rom中正弦波地址的值,如下5.12所示,一个时间周期的rom地址值与上一个时间周期的rom地址之间差值也会随着频率的增加而逐渐增加。图5.12地址产生仿真图5.13波形输出类型仿真图5.14波形输出类型界面仿真幅度变化对整个信号发生器系统产生的波形的影响,如图5.14所示,通过累加器控制幅度的变化,定性的来观察,信号的频率相比较之前的产生的仿真波形信号变的低矮。设置之前的幅度值为全部,设置后的幅度值为一半。波形图之后的波形图是之前的波形图的幅度值一半。图5.15方波测试界面对设计所产生的波形进行分析,信号频率调节功能,主要体现在根据输入的参数不同,进而产生出频率不一样的同种波形。如图所示5.15中,在不同时间段设置波形的不同输出频率。比如说根据测试激励文件设置的参数,freq的设置值不同,相应的应该产生出相同波形不同频率下的波形。根据图对不同时间下频率的设置,可以看到图中方波产生频率也发生一样的频率变化。Freq=26214时就是对应方波脉宽最宽的波形;Freq=56428时就是对应方波脉宽最窄的波形。信号幅度调节功能,主要体现在根据输入的参数不同,进而产生出不一样的幅度波形。比如说根据测试激励文件设置的参数,amp_rate=1,相应的应该产生出相应波形的1倍高度;amp_rate =0,相应的应该产生出相应波形的2倍高度,由高度的变化来验证波形幅度调节功能的正确性。具体结果可以结合图5.15中方波的脉宽的宽度的变化来验证。根据设置的频率以及输出的方波波形的脉宽不同可以验证频率调节功能的是完全正确的。可以看到如图所示5.15中,上边有方波波形,三角波波形,以及正弦波波形。图5-16正弦波测试界面对设计所产生的波形进行分析,对设计所产生的波形进行分析,信号频率调节功能,主要体现在根据输入的参数不同,进而产生出频率不一样的同种波形。如图所示5.16中,在不同时间段设置波形的不同输出频率。比如说根据测试激励文件设置的参数,freq的设置值不同,相应的应该产生出相同波形不同频率下的波形。根据图对不同时间下频率的设置,可以看到图中方波产生频率也发生一样的频率变化。Freq=26214时就是对应正弦波脉宽最宽的波形;Freq=56428时就是对应正弦波脉宽最窄的波形。信号幅度调节功能,主要体现在根据输入的参数不同,进而产生出不一样的幅度波形。比如说根据测试激励文件设置的参数,amp_rate=1,相应的应该产生出相应波形的1倍高度;amp_rate =0,相应的应该产生出相应波形的2倍高度,由高度的变化来验证波形幅度调节功能的正确性。图5.17三角波测试界面对设计所产生的三角波形进行分析,信号频率调节功能,主要体现在根据输入的参数不同,进而产生出频率不一样的同种波形。如图所示5.16中,在不同时间段设置波形的不同输出频率。比如说根据测试激励文件设置的参数,freq的设置值不同,相应的应该产生出相同波形不同频率下的波形。根据图对不同时间下频率的设置,可以看到图中三角波产生频率也发生一样的频率变化。Freq=26214时就是对应三角波最宽的波形;Freq=56428时就是对应三角波最窄的波形。信号幅度调节功能,主要体现在根据输入的参数不同,进而产生出不一样的幅度波形。比如说根据测试激励文件设置的参数,amp_rate=1,相应的应该产生出相应波形的1倍高度;amp_rate =0,相应的应该产生出相应波形的2倍高度,由高度的变化来验证波形幅度调节功能的正确性。具体结果可以结合图5.17中三角波的宽度的变化来验证。根据设置的频率以及输出的三角波波形的脉宽不同可以验证频率调节功能的是完全正确的。该波形频率分辨率为 1/220 * 50M。5.3资源消耗分析图 5.18 资源消耗分析最后分析过设计的DDS信号发生器,对整个工程进行编译分析,看看整个设计所使用到的逻辑资源及利用率。如上图5.18所示,整个设计使用到的芯片是EP3C5F256A7,在整个设计中使用到的寄存器资源一共是36个。占据整个新品资源的不到1%,由于使用带IP的ROM工具,所以使用了196608个存储器资源,没有使用到芯片的锁相环资源,经分析整个设计使用的逻辑资源较为合理,设计基本符合要求。物理与电子信息学院本科毕业论文6 结论随着数字信号处理技术和芯片集成技术的迅速发展,在航空、通信、雷达、遥控、遥感等领域的频率合成技术得到了广泛的应用。为了解决系统对频率稳定性、频谱范围和纯度以及多频率输出等的高性能要求,多种频率合成技术相继产生。作为第三代频率合成技术,直接数字频率合成技术DDS(Direct Digital Frequency Synthesis)具有连续相位变化,高频率分辨率,快速切换,易于调制,高集成度,低功耗等特点,因此 DDS 技术给频率合成带来了很大的方便17。但是,由于它是一种纯数字结构系统,也会带来工作频带受限和输出频谱杂散抑制差的影响。因此,因此,有效降低系统合成输出频谱中的杂散水平很有必要。同时国内集成电路的发展,FPGA的核心优点体现的越来越明显18。可编程灵活性高、开发周期短、并行计算可编程灵活性高。在很多实际应用的场景中,FPGA的灵活性也较高。实际应用中,FPGA的现场可重复编程性使开发人员能够用软件升级包通过在片上运行程序来修改芯片,而不是替换和设计芯片(设计和)时间成本巨大),甚至FPGA可通过因特网进行远程升级19。在本文的研究过程中,本人主要做了以下方面的工作 (1)对常见的频率合成技术直接数字频率合成技术 DDS 做了简单介绍,概述了各自的基本原理和优缺点,介绍了国内外相关领域的 DDS 技术在国内外的研究现状和发展趋势。 (2)具体分析DDS相关产生的原理以及相关理论知识,结合硬件描述语言的特点,对整题设计进行划分,并使用自顶向下的设计方法划分出具体实验的模块功能。详细划分具体模块的相关功能。 (3)结合已经划分好的相关模块,根据每个模块的具体功能,分别设计完成各个功能模块。最后根据顶层设计将各个功能模块联合,完成了以Verilog语言的硬件描述语言的DDS波形控制发生器。并且编写相关激励测试文件,对已经完成的设计进行全方面的测试验证。参考文献:1 阎石数字电子技术基础(第四版)M北京:高等教育出版社,1998 2 毕满清电子技术实验与课程设计M北京:机械工业出版社,2001 3 陈汝全电子技术常用器件应用手册(第二版)M北京:机械工业出版社,20004 戴佳,戴卫恒51单片机C语言应用程序设计实例精讲M北京:电子工业出版社,2006 5 沙占友,王彦朋等单片机外围电路设计(第二版)M北京:电子工业出版社,2006 6 何香玲,郑钢,范秋华 数控式步进可调稳压源J现代电子技术,2007(5):142-1447 李桂平,黄有全直流数控可调稳压电源的设计J电子设计工程,2009,17(7):76-77 8 贾玉贵.现代对空情报雷达.北京:国防工业出版社,2004,12-179 吴怀明,周善波,李泳东.直接数字合成技术实现函数信号发生器J.电子产品世界,2015,22(12).10吴怀明,周善波,李泳东.直接数字合成技术实现函数信号发生器J.电子产品世界,2015,22(12).11刘科,田书林,肖寅东.多通道任意波形发生器精密相位控制方法J.信息与控制,2011,40(2):209-213.12王亮亮.基于DDS和PLL技术的高分辨率可变频综器设计与实现D.国防科学技术大学, 2011.13吴怀明,周善波,李泳东.直接数字合成技术实现函数信号发生器J.电子产品世界,2015,22(12).14杏运,吕幼新,姒强.基于虚拟仪器的任意波形发生器J.电子测量技术,2011, 34(6):68-72.15谭勇. 集成 CMOS 正弦信号发生器的电路设计J. 电子制作, 2014(8).16周登荣, 周玉荣. 一种任意波形信号发生器的实现方法J. 重庆师范大学学报:自然科学37AbstractDesign of CNC stepper DC power supplyWang Zebin (Student ID: 20171102832)(Class of Electronic Information Engineering, Grade 2017, College of Physics and Electronic Information, Inner Mongolia Normal University, Hohhot, Inner Mongolia 010022)Director: Bao XiurongAbstract: Direct digital frequency synthesizer (DDS) is a frequency synthesis technology that has developed rapidly in recent years. It has many advantages such as fast frequency conversion, high resolution, high stability, low phase noise, and easy realization of multiple output signals. It is widely used in the fields of communications, digital television, satellite positioning, aerospace, radar and electronic countermeasures, and has broad application prospects 1. The traditional method of designing electronic circuits with discrete components or general digital circuit components has a long design cycle, high cost, and poor portability. Compared with the traditional frequency synthesis method, DDS synthesis signal has many advantages such as short frequency switching time, high frequency resolution and continuous phase change. The main research content of this paper is to use hardware language in FPGA to design and implement the DDS system. Using FPGA to realize DDS has high performance and high integration, and can overcome the shortcomings of traditional DDS design, thereby designing a DDS system with excellent performance. Key words: Direct digital frequency synthesizer;FPGA;Verilog致 谢 衷心感谢学院给我这次难得的机会来做此次毕业设计,让我从中学到很多书本上没有的知识,理论与实践相结合!衷心感谢我的指导老师的指导,他们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪!这篇论文的每个细节和每个数据,都离不开你们的细心指导。你们开朗的个性和宽容的态度,帮助我能够很快的融入我们这个毕业设计!在此,学生衷心表示感谢:“老师,您辛苦了!”此外还要感谢我的同学和寝室兄弟们,是他们在我生活和学习上给予了很多无私的帮助,值此机会,我向你们说声谢谢!此外,还要感谢评阅老师对本论文进行的认真评阅和批评指正。最后,向所有给予我关怀和帮助的师长和同学们表示衷心的感谢!在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!最后,非常感谢各位评审老师对我的论文提问、审核和验收。附录A 程序清单*初始化程序*library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity acc is port( clk : in std_logic; -时钟 rst_n : in std_logic; -复位 fre_incr : in std_logic_vector(11 downto 0);-频率控制字 oacc_data : out std_logic_vector(11 downto 0)-累加后的地址 ); end acc; architecture behav of acc is signal acc_data : std_logic_vector(11 downto 0); begin oacc_data <= acc_data; process(rst_n,clk) -每个时钟上升沿都加上fre_incr begin if rst_n='0' then acc_data <= (others => '0'); elsif rising_edge(clk) then acc_data <= acc_data + fre_incr; end if; end process; end behav; -地址累加模块-三路信号有三个累加值-频率计算公式为(fre_incr/212)*clk-比如fre_incr1 = 0010000000 = 128 ,clk = 50Mhz-正弦波的频率f=(128/4096)*50Mhz-tri_signal为rom,里面存了4096个点,是一个正弦波周期library ieee; use ieee.std_logic_116