基于FPGA的DDS信号发生器设计 (1).doc
《基于FPGA的DDS信号发生器设计 (1).doc》由会员分享,可在线阅读,更多相关《基于FPGA的DDS信号发生器设计 (1).doc(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、物理与电子信息学院本科毕业论文目 录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)指导教师:包秀荣摘要:直接数
2、字频率合成器(DDS)是近些年迅速发展起来的一种频率合成技术,具有频率转换速度快、分辨率高、稳定度高、相位噪声低、易实现多种输出信号等诸多优点,广泛应用在通信、数字电视、卫星定位、航空航天、雷达和电子对抗等领域,具有广阔的应用前景1。传统传统的用分立元件或通用数字电路元件设计电子线路的方法设计周期长,花费大,可移植性差。与传统的频率合成方法相比,DDS合成信号具有频率切换时间短频率分辨率高相位变化连续等诸多优点。本文主要研究内容是使用硬件语言在 FPGA 中,对 DDS 系统进行设计与实现,用fpga实现DDS具有高性能,高集成度,并且可以克服传统DDS设计中的不足,从而设计出性能优良的DDS
3、系统关键词:直接数字频率合成器;FPGA;Verilog分类号: TN91 文献标识码: B1 绪论随着我国高新技术及无线通信技术的高速发展,原来的信号频率源质量已经远远不能跟上近些年的科技发展所需要的参数性能。社会的通信技术在发展,频率随着传输速度以及范围的扩大也越来越高。之前所存在的老一代的信号频率产生技术已经不能满足现阶段社会所需要的高频率,高质量,高分辨率等技术特点3。因此为了满足现阶段的技术水平要求,提出了一种新型的频率合成技术。直接数字频率合成技术的概念最早在美国被提出,但是当时由于世界的发展原因,被提出的概念并没有被众人所重视,近年来科技进步后,人们才越来越认识到直接数字频率合成
4、技术的重要性4。新型的频率合成技术之所以迅速发展主要是源于它的直接性,频率转换速度非常快,并且相对带宽较宽;相位连续;并且控制还非常方便;可以较为容易的控制输出任意波形;并且幅度相位等关键参数可调。这些优点为直接数字频率合成技术广泛应用奠定了重要地位。目前来说在国内专门开发研究DDS相关技术的厂家屈指可数,这原因仅仅是因为相关从事开发人员的开发经验不足,而且国内的其他航空航天行业以及一些高新科技的通信行业发展都是要以此为基础信号源,在进行接下来的开发技术研究,所提出的新型的FPGA数字频率直接合成技术可以比较完美的切合实际,解决当下这一难题。另一方面来讲,如果采用基于FPGA的直接数字频率合成
5、技术,还具有其他方面的优势,比如说FPGA如果开发研制相关技术,在精度上会比其他相关硬件技术高得多,这得益于FPGA的高速时钟5。在此基础上使用FPGA来开发完成相关设计,其整个功能的控制性也比较容易操作,这比使用单片机或者DSP技术实现要更具有优势。除此之外,直接数字频率合成技术可能会需要在存储器中要写入一些波形数据,采用FPGA开发可以直接使用用户开发工具中的一些内置IP核,直接调用ROM工具,这样不仅节省了外部存储器,开发起来还十分方便。2 直接数字频率合成技术的工作原理2.1直接数字频率合成器的基本构成直接数字频率合成器 (Direct Digital Synthesis,简称DDS
6、)是基于抽样定理中的时域采样定理设计而成的,将相位数据作为查找表的地址来寻址最终输出幅值数据的一种技术8。图 2.1所示为 基本直接数字频率合成器的工作原理,其中主要组成部分有:外部输入频率控制字 F、内部构成相位累加器(加法器)、内部存储器ROM 查找表、D/A数模转换器以及最后输出波形需要的低通滤波器,最为关键的是整个系统的参考时钟。 图2.1 DDS基本构成框图由上图的DDS的基本原理构成之后,对整个工作过程做一个详细的说明:在一个标准的参考时钟源下,每次来一个参考时钟,全加器就负责累计计数,使其当前累加器的数据加上频率控制字,然后将其结果送入香味寄存器中,相位寄存器的N位数据在转换成只
7、读存储器的地址入口,在事先存储好的存储器在查找相应的数据,输出的数据在经过数模转换器后进行一些必要的滤波操作9。最后就是可以直接观测的波形。2.2 直接数字频率合成器工作原理DDS 的基本工作过程是:在一个标准的参考时钟fclk,作为时钟源,作为时钟源,每送来一个时钟(fclk),N 位全加器的会将此时的数据加上频率控制字,其结果送给寄存器。这个寄存器的数据传输出是作为ROM的地址输入。寄存器的 N 位数据作为 ROM 查找表的地址,查找表中存储的是所需信号的幅值数据,ROM 查找根据相位寄存器传过来的相位数据作为的地址信号,输出与之相对应的幅值数据,然后再经过数模转换器和低通滤波器的平滑滤波
8、,最终输出所需信号。另一方面,相位寄存器输出的当前相位数据会反馈给全加器,在下一个时钟 fclk的驱动下,全加器再次与频率控制字 F 相加,从而使得相位数据以 F递增,如此循环,直到一个周期的相位数据溢出,全加器归零,重新开始累加数据10。下边对整个DDS工作原理进行具体分析:设该系统的的频率控制字是F,时钟周期是Tc,频率是,相位累加器的位宽是N,那么可以推导出由这个系统输出的信号的频率是: (1)从公式的左端可以得到结论,输出的频率是与采样的标准时钟,外部频率控制字,相位累加器的位宽N有关。当为定值的时候,输出的频率大小可以根据相位控制字来改变,F=1的时候,整个系统输出的P频率最小,将此
9、时的输出结果记作 11: (2)公式(2)中为 DDS 的系统频率的精度表示。当为采样信号时,连续采样两次间的相位增量 (3)其中。离散的相位序列为: (4)当相位累加器的输出是N位时候, (5)输出的信号频率为: (6)有这个计算公式可以推导出:输出的信号频率与存储器的ROM的高M位无关,就是说明如果是一个确定的值的时钟,输出的频率是由频率控制字来决定的12。在接下来的实际设计中都是根据这一原理来进行具体的逻辑代码设计。至此本章节就已经完成。下边章节将介绍在软件中编写设计文件,以及建立工程的描述。3 主要软件流程在本次的设计中,使用到的是英特尔旗下的开发软件。Quartus II 是Alte
10、ra公司(现在已经被英特尔公司收购)的综合性CPLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程14。首先进行的是新建工程,打开用户开发软件之后,点击如图所示相应的新建工程按键就可以重新按照开发用户的想法重新建立一个新的工程。图3.1 软件系统界面建立工程完成之后,就要选择添加设计文件,在这个阶段用户可以直接添加已经写好的开发文件,选择工程的类型完成后,下一步操作是添加设计文件,Add sour
11、ce界面,有“加号”选择项,可以直接点击这个加号,也可以点击下边的Add source 选项,如果文件事先没有编写完成也可以直接越过这个步骤直接先进行下一步操作15。图3.2 添加设计文件界面在添加文件设置完成之后,就到了建立工程的最后一个阶段,根据工程的需要对器件进行选择。选择器件时可以根据引脚数(pin)或者芯片的家族(Family)来进一步缩小一个小的范围,当然越高端的芯片其内置资源就越多。可以根据设计的需要以及功能复杂程度来选择相对合适的芯片,做到不浪费资源,来达到降低成本的目的。最后选定芯片之后点击Finish完成即可16。图3.3 芯片选择界面图3.4 选择设计文件类型界面最后在完
12、成设置工程的时候需要注意使用的是VHDL还是verilog语言选项。在本次的工程设计中,采用verilog语言编写,所以在这个界面选择verilog即可,不要选择VHDL。下边章节开始介绍整个系统的测试部分。4 主要功能模块设计4.1系统框图设计图4.1 系统框图根据前边部分章节的分析,在这个章节开始设计实现DDS波形发生器。有第二章节部分的理论分析中,得知DDS波形发送器主要需要累加器,存储波形数据的ROM存储器,以及最后的滤波输出。根据这样的理论,在整体结构设计中,主要设计了DDS顶层模块,方波波形数据存储模块,三角波形数据存储模块,正弦波波形数据存储模块。最后的amp_sel波形选择模块
13、。下面根据每个模块的不同功能进行详细的设计介绍。4.2主要模块设计根据前边部分章节的分析,在这个章节开始设计实现DDS波形发生器。有第二章节部分的理论分析中,得知DDS波形发送器主要需要累加器,存储波形数据的ROM存储器,以及最后的滤波输出。下面根据每个模块的不同功能进行详细的设计介绍。4.2.1 DDS结构设计基于FPGA设计一个多功能的DDS信号发生器通过写入输入信号,可以输出正弦波三角波方波和锯齿波四种波形信号,然后通过控制频率字模块来选择频率,然后通过控制幅度信号来选择不同的幅度。信号发生器的控制模块可以用选择器来实现,通如下图所,是多功能信号发生器的RTL级图。图4.2 DDS设计R
14、TL级视图整个DDS信号发生器系统的设计框图。如图,是4.2所示。其中主要包括频率控制模块,还有正弦波模块,三角波模块,锯齿波模块,方波模块和幅度控制模块。本章将描述信号产生系统中信号传输的基本技术框架,并主要介绍DDS系统的FPGA实现,在下面的章节会具体介绍DDS系统的主要模块及各功能模块的功能以及端口说明。4.2.2地址产生模块图4.3 频率控制字模块信号名称I/O功能描述clkI模块时钟 rst_nI模块复位 fre_incrI 频率控制oacc_dataO输出地址其中主要的端口有时钟信号,异步复位信号,频率控制信号(11:0),输出地址数据信号(11:0)一共四个信号。频率控制字主要
15、元素是累加器,通过累加器完成整个操作。由频率控制(fre_incr)通波改变rom中所存信号的地址来实现频率可调功能, 使得输出地址(oacc_data)发生改变。累加器模块:它是DDS的核心,可以看成是一个简单的计数器,由全加器和寄存器两部分构成。图4.4 累加实现过程如图4.4所示,相位累加器是利用信号递增的相位信息。实现每次在时钟 fclk的驱动下,对相位编码的逐级累加,最终作为 ROM 查找表的地址来寻址幅值数据。 4.2.2正弦信号产生模块图4.5 正弦信号产生模块信号名称I/O功能描述clockI模块时钟addressI 输入地址qO正弦波数据主要的端口有时钟信号,输入地址信号,正
16、弦波数据信号(11:0)这些一共三个信号。正弦波信号存储在已经写入的rom中,而rom中的地址在本模块中就是adress的值,其实是量化的地址序列,然后输出的正弦波形是数据对应地址所量化的幅度,因为正弦波形存储在rom中,而rom中的存储容量是有限的。4.2.3三角信号产生模块图4.6 三角信号产生模块信号名称I/O功能描述clockI模块时钟 addressI 输入地址qO三角波数据主要的端口有时钟信号,输入地址信号,三角波数据信号(11:0)这些一共三个信号。三角波信号存储在已经写入的rom中,而rom中的地址在本模块中就是adress的值,其实是量化的地址序列,然后输出的三角波形是数据对
17、应地址所量化的幅度,因为三角波形存储在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模块时钟
18、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
19、_inI方波输入信号signal_selected_outO输出信号 主要的端口有时钟信号,复位信号,幅度选择信号(1:0),信号选择信号(1:0),正弦波输入信号(11:0),三角波输入信号(11:0),锯齿波输入信号(11:0),方波输入信号(11:0),输出信号(11:0)这些一共九个信号。幅度控制的核心是全加器。全加器会把幅度控制字与寄存器输出的数据加起来,作为输入送给寄存器,寄存器再把这次输入值送到全加器13。5 系统测试与结论在上一章中,已经对设计完的DDS信号发生设计的各个模块进行了模块级别的仿真验证测试,本小结主要内容的主要工作是采用 Quartus II 开发软件,调用Mod
20、elsim开发软件,通过 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的对话
21、窗口中,右击node finder会出现一个选择输入输出的仿真必须信号的会话窗口,然后点击list,选择你需要仿真的输入输出波形信号,然后点击OK按钮。如图5.3所示。图5.3 输入输出信号点击波形文件的name栏的时钟信号,选中时钟信号进行编辑,然后点击导航框中的时钟图标,这个图标编辑编辑clk的时钟频率,设置clk开始时间为0ps,结束时间是10us,设置时间周期为10ns,占空比为百分之五十后点击OK,再编辑复位信号。根据VHDL的设计,复位信号是高电平复位。所以选取一段复位的时间段设置为高电平“1”,其余时间则设置为低电平“0”。 选取的方式是按住鼠标左键盘一直拖拽到选取所需要的时间为
22、止,然后点击导航栏中的高电平信号,则刚才所选取的时间段则变为高电平“1”。编辑其他的输入信号,按住鼠标左键盘一直拖拽到选取所需要的时间为止,然后点击导航栏中的问号图标,则设置信号的进制(二进制,八进制,十进制,十六进制),还有设置的值。如下图5.4所示是已经设置好的输入输出波形仿真信号图5.4 输入仿真信号点击Quartus II 中的Processing。然后在点击Simulator Tool。首先我们要先进行功能仿真,所以在Simulation mode中选择Functional,然后再点击generate function Simulation Netlist。功能仿真提示成功后,点击确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于FPGA的DDS信号发生器设计 1 基于 FPGA DDS 信号发生器 设计
限制150内