《本科毕业设计论文--eda课程设计报告dds直接数字合成器设计.doc》由会员分享,可在线阅读,更多相关《本科毕业设计论文--eda课程设计报告dds直接数字合成器设计.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、EDA课程设计报告 DDS直接数字合成器设计 姓 名: 班 级: 学 号: 指导老师: 日期: 华南农业大学电子工程学院电子信息工程系6摘 要本文主要研究了基于直接数字合成器(Direct Digital Synthesizer)技术的波形发生器(Arbitrary Waveform Generator)的整体方案和核心部分的硬软件设计。同时,对整个系统的性能进行了理论分析。文中讨论了DDS的基本概念和理论,在理论研究的基础上,设计了整个系统的完成方案,用复杂可变成逻辑器件(CPLD)完成了DDS主要部分的设计,其中涉及到软件设计的部分都进行了仿真和说明,从完成电路的性能和综合指标看,基本达到
2、了课题的要求。关键字:直接数字合成 波形发生器目 录1方案比较与选择21.1 方案选择21.2 方案比较22 DDS原理22.1 DDS基本结构22.1 DDS工作原理33 DDS硬件设计53.1 创龙FPGA开发板53.2 TL5724-DAC模块54 DDS软件设计64.1 DDS驱动代码编程64.2 Testbench与ISIM仿真75仿真及下载75.1 调试75.2 仿真75.3 下载76讨论及进一步研究建议87课程设计心得9Abstract10参考文献10附录111方案比较与选择1.1方案选择(1)CPLD,FPGA实现。(2)采用分立IC电路系统实现,一般有CPU,RAM,ROM,
3、D/A,CPLD,模拟滤波器等组成。(3)采用高性能DDS单片电路的解决方案。1.2方案比较因为本次实验要求是:(1) 实现锯齿波、正弦波、方波的输出。 (2) 实现频率可调,如调节频率倍数10。 (3) 用Verilog HDL语言对此DDS发生器进行建模。 (4) 用Xilinx ISE14.7开发套件进行仿真测试。基于广州创龙公司提供的FPGA开发板,我们选择使用上述方案一。2DDS原理2.1 DDS基本结构直接合成法是用一个或多个石英晶体振荡器的振荡频率作为基准频率,由这些基准频率产生一系列的谐波,这些谐波具有与石英晶体振荡器同样的频率稳定度和准确度;然后,从这一系列的谐波中取出两个或
4、两个以上的频率进行组合,得出这些频率的和或差,经过适当方式处理(如经过滤波)后,获得所需要的频率。DDS 是直接数字式频率合成器(Direct Digital Synthesizer)的英文缩写。直接数字式频率合成器(DDS)是从相位概念出发直接合成所需波形的一种新的频率合成技术,由相位累加器、波形 ROM、D/A 转换器和低通滤波器构成。时钟频率给定后,输出信号的频率取决于频率控制字,频率分辨率取决于累加器位数,相位分辨率取决于 ROM 的地址线位数,幅度量化噪声取决于 ROM 的数据位字长和 D/A 转换器位数。结构框图如图1所示。图12.2 DDS工作原理DDS 的基本原理是利用采样定理
5、,通过查表法产生波形 1。由于,(2-1)其中为一个采样间隔 T 之间的相位增量,采样周期,即:(2-2)控制就可以控制不同的频率输出。是由频率控制字 M 控制的,即:(2-3)所以改变 M 就可以得到不同的输出频率。该 DDS 系统的核心是相位累加器,它由一个 N 位加法器和一个 N 位相位寄存器级联构成。它的作用是在基准时钟源的作用下进行线性累加,当产生溢出时便完成一个周期,即 DDS的一个频率周期。加法器将频率控制字 M 与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器
6、在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此,可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是 DDS 输出的信号频率。用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,然后输入到正弦查询表地址上。正弦查询表包含一个周期正弦波的数字幅度信息,每个地址对应正弦波中的0360范围的一个相位点。查询表把输入的地址相位信息映射成正弦波幅度的数字量信号,驱动 DAC,输出模拟量。相位寄存器每经过2N /M(其中 N 是相位累加器的字长,对于
7、AD9834芯片,N = 28)个 fc 时钟后基本回到初始状态,相应地正弦查询表经过一个循环也基本回到初始位置,于是整个 DDS 系统输出一个正弦波周期。在图2-1中,相位累加器输出位并不全部加到查询表,而是只截取高12位。相位截断减小了查询表长度,但并不影响频率分辨率,对最终输出仅增加一个很小的相位噪声。DAC 分辨率一般比查询表长度还要小24位。图中的参考时钟是一个稳定的晶体振荡器,用来同步整个合成器的各个组成部分,AD9834用的是50MHz 的石英晶体振荡器。D /A 变换器把数字量变成模拟量,正弦幅度量化序列 S(n)经 D/A 转换后变成了包络为正弦波的阶梯波 S(t),D/A
8、转换器的分辨率越高,合成的正弦波 S(t)台阶数就越多,输出的波形的精度也就越高。低通滤波器滤除高次谐波和杂散信号,得到所需的信号波形。DDS 的输出频率 fout 和参考时钟 fc、相位累加器长度 N 以及频率控制字 M 的关系为:(2-4)DDS 的频率分辨率为:(2-5)由于 DDS 的输出最大频率受奈奎斯特抽样定理限制,为了保证信号的输出质量,输出频率不要高于时钟频率的33%,以避免混叠或谐波落入有用输出频带内。所以, 一般取 2 。3.DDS硬件设计3.1 创龙FPGA开发板本设计的硬件开发板采用广州创龙电子科技有限公司的FPGA开发板,选择使用FPGA的原因有以下几点:(1)性能:
9、利用硬件并行的优势,FPGA打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务。(2)上市时间:尽管上市的限制条件越来越多,FPGA技术仍提供了灵活性和快速原型的能力。用户可以测试一个想法或概念,并在硬件中完成验证,而无需经过自定制ASIC设计漫长的制造过程。(3)成本:自定制ASIC设计的非经常性工程(NRE)费用远远超过基于FPGA的硬件解决方案所产生的费用。(4)稳定性:FPGA电路是真正的编程“硬”执行过程对于任何给定的处理器内核,一次只能执行一个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占的风险。 而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定
10、性硬件,可减少稳定性方面出现问题的可能。(5)长期维护:FPGA芯片是现场可升级的,无需重新设计ASIC所涉及的时间与费用投入。开发板外观图如图2所示:图23.2 TL5724-DAC模块ADC (Digital analog to converter),即数模转换器,是将时间离散、幅值也离散的数字信号转换为时间连续、幅值也连续的模拟量;精度指标主要有转换精度、转换时间。TL5724是广州创龙基于AD5724开发的快速评估模块,与广州创龙 OMAP-L138/AM1808/TMS320C6748 等开发板配套使用,用于多路 DA 串行输出,在电力行业应用广泛,以下为此模块的特点: (1)12
11、位,4 通道,SPI 串行读取方式,高达 30MHz 刷新速率; (2)板载/外部模拟电源可选; (3)支持单/双电源,供电方式灵活; (4)pin to pin 兼容 AD5734(14 位)、AD5754(16 位); (5)软件可调输出范围:0+5 V、0+10 V、0+10.8 V、5 V、10 V、10.8 V; (6)-40+85,工业级设计,稳定性强,精度高。模块外观图如图3所示:图34 DDS软件设计4.1 DDS驱动代码编程DDS驱动代码如下:module dds #( parameter PHASE_W = 24, parameter DATA_W = 12, parame
12、ter TABLE_AW = 12, parameter MEM_FILE = SineTable.dat)( input PHASE_W - 1 : 0 FreqWord, input PHASE_W - 1 : 0 PhaseShift, input Clock, input ClkEn, output reg signed DATA_W - 1 : 0 Out) ; reg signed DATA_W - 1 : 0 sinTable2 * TABLE_AW - 1 : 0; / Sine table ROM reg PHASE_W - 1 : 0 phase; / Phase Accu
13、mulater wire PHASE_W - 1 : 0 addr = phase + PhaseShift; / Phase Shift initial begin phase = 0; $readmemh(MEM_FILE, sinTable); / Initialize the ROM end always(posedge Clock) begin if(ClkEn) phase = phase + FreqWord; end always(posedge Clock) begin Out = sinTableaddrPHASE_W - 1 : PHASE_W - TABLE_AW; /
14、 Look up the table end endmodule FPGA建模效果图如图4所示:图44.2 Testbench与ISIM仿真timescale 1ns/1psmodule testbench; reg clk; reg 23:0 freq; wire 23:0 phaseShift = 24b0; wire clkEn = 1b1; wire signed 11:0 out; initial begin clk = 1b1; freq = 24h04_0000; #10010 freq = 24h08_0000; #20000 freq = 24h0C_0000; #30000
15、 freq = 24h10_0000; #40000 freq = 24h18_0000; #50000 freq = 24h20_0000; #60000 freq = 24h30_0000; #70000 $stop(); end always begin #10 clk = clk; end DDS dds_inst( .FreqWord(freq), .PhaseShift(phaseShift), .Clock(clk), .ClkEn(clkEn), .Out(out) ;endmodule 仿真波形如图5所示:图54.仿真及下载4.1调试先保存,将上述电路以字母输入方式输入并保存
16、在工程文件夹中。再将文件置顶,最后进行编译,在主菜单 中选择processing项,在弹出的对话框中选择Start complication键,则编译开始。在编译过程中,若有任何信息、错误和警告消息,都将显示在自动打开的Message-Compiler窗口中;若由于文件出错而没有通过,则需要返回原文件进行修改,修改后存盘,再编译直至文件通过。4.2仿真新建一个“Vector Waveform file”文件,并在下拉列表中选.vwf扩展名,生成波形文件。右键单击,在弹出的菜单中选Enter Nodes Frome SNF,在弹出的对话框中选择要观测的节点。选OptionGrid Size和Fi
17、leEnd Time,设置相应选项,并给输入引脚加上适当的信号。然后,选FileSave保存。接着选择主菜单中的Simulator项,打开模拟器,点击Start开始仿真。4.3下载1. 在主菜单Assignments中选择Device项,在弹出的对话框中选择相应的器件EP1C12Q240C8。 2. 在主菜单Assignments 选“Pins”,打开平面布置图编辑器窗口,将设计的电路图中的各输入输出锁定在相应的管脚上。具体管脚号参见课程设计参考资料附录五。 3. 在主菜单选FileSave保存文件,再次编译项目,生成.sof文件,以用于下载。 4. 在主菜单Tools 选Programmer
18、,在弹出的对话框中单击start,即可完成下载。 5. 要注意在实验的不同阶段,系统板上各短路帽、跳线帽的插拔与否。5. 讨论及进一步研究建议本次实验设计所要求的能输出正余弦、三角波、锯齿波、方波四种波形,经过D/A转换之后能在示波器上显示,而且能通过SerialDebug.exe软件人工改变输出波形的频率。讨论进一步建议是本次实验头一次使用veilog hdl语言编写DDS,一星期的学习一种新的语言比较困难,造成在编写DDS运行程序时遇到各种错误,所以建议使用Vhdl语言编写程序,毕竟这学期有学习VHDL这门课,能够更好的理解编写的程序。6.课程设计心得1、 经过近一个星期的课程设计,我们基
19、本掌握了DDS的基本原理及用FPGA实现DDS的方法,学会基本的Verilog HDL语言,熟练掌握了示波器的使用,掌握了用Quartus II进行仿真的方法 。 2、 通过实验我们对DDS产生正弦信号有了较深刻的了解,对信号量化编码有一定理解,对Nyquist抽样定理有了更加直观的理解。 3、 虽然没有亲自设计制作实验板,但是通过对FPGA管脚的配置,了解了一个DDS信号发生器的硬件组成及各部分参数的相互影响。4、 通过实验大大提高了自己的动手能力,对以后的工作有一定的帮助。AbstractThis text mainly studied according to the hard soft
20、ware design of the whole project and the core part that the direct numeral synthesizes a form of machine( the Direct Digital Synthesizer) occurrence machine( the Arbitrary Waveform Generator).At the same time, carried on the theories analysis to the whole function of system.It discussed the DDS basi
21、c concept and theorieseses in the text, on the foundation that the theories study, designed the whole system to complete the project, use complications variable become the logic machine piece( CPLD) completed the main part of DDS of design, among them involved the parts that the software design to a
22、ll carry on to imitate true and elucidation, from complete the function and comprehensive index signs of the electric circuit to see, basic come to a the request of the topic.Keywords:Direct Digital Synthesizer Waveform参考文献1. 潘松,黄继业.EDA技术实用教程:VHDL版.北京科学出版社.2010=3年.2. JBhasker 著;夏宇闻,甘伟 译. Verilog HDL
23、入门(第3版).北京航空航天出版社.2008.附录:源程序:include romtab.vinclude claadd8s.vinclude loadfw.vinclude loadpw.vinclude sinlup.vinclude phasea.vinclude phasemod.vinclude pngen.v/* * * * * Project Name : DDS * * Author : Daniel J. Morelli * Creation Date : 03/04/96 21:51:00 * Version Number : 1.0 * * Revision Histor
24、y : * * Date Initials Modification * * * Description : * * This is the top level of the Direct Digital Synthesizer * * */ module dds(RESETN,/ global resetPNCLK,/ PN generator clockSYSCLK,/ system clockFREQWORD,/ input frequency word from external pinsFWWRN,/ low asserted frequency word write strobeP
25、HASEWORD,/ input phase word from external pinsPWWRN,/ low asserted frequency word write strobeIDATA,/ I axis dataQDATA,/ Q axis dataCOS,/ digital cos outputSIN,/ digital sin outputMCOS,/ modulated digital cos outputMSIN,/ modulated digital sin outputDACCLK,/ DAC clock to signal when to load DDS sin
26、valueDACOUT);/ DAC output of sin wave/ Port typesinput SYSCLK, PNCLK, RESETN, FWWRN, PWWRN;input31:0 FREQWORD;input7:0 PHASEWORD;output DACCLK, COS, SIN, MCOS, MSIN, IDATA, QDATA;output7:0 DACOUT;wire31:0 syncfreq;/synchronous frequency wordwire7:0syncphswd;/synchronous phase wordwire7:0 phase;/ pha
27、se output from phase accumulatorwire7:0modphase;/ modulated phase value after phase mod block/ design architectureassign DACCLK = SYSCLK;/-/ this module is not part of the NCO/ this module is used to generate random data/ to modulate the NCO output/- pngen U_pngen(RESETN,/ global resetPNCLK,/ PN gen
28、erator clockIDATA,/ I axis dataQDATA);/ Q axis data/- loadfw U_loadfw(RESETN,/ global resetSYSCLK,/ system clockFREQWORD,/ input frequency word from external pinsFWWRN,/ low asserted frequency word write strobesyncfreq);/ synchronous frequency word loadpw U_loadpw(RESETN,/ global resetSYSCLK,/ syste
29、m clockPHASEWORD,/ input phase word from external pinsPWWRN,/ low asserted frequency word write strobesyncphswd);/ synchronous phase word phasea U_phasea(SYSCLK,/ system clock inputRESETN,/ global resetsyncfreq,/ synchronous frequency wordCOS,/ digital cos outputSIN,/ digital sin outputphase);/ 8 bi
30、t quantized phase output phasemod U_phasemod (SYSCLK,/ system clock inputRESETN,/ global resetsyncphswd,/ synchronous phase wordphase,/ 8 bit quantized phase valueMCOS,/ modulated digital cos outputMSIN,/ modulated digital sin outputmodphase);/ modulated phase output sinlup U_sinlup (SYSCLK,/ system
31、 clock inputRESETN,/ global resetmodphase,/ modulated phase outputDACOUT);/ DAC output of sin waveEndmodule仿真程序:timescale 1ns/1psmodule testbench; reg clk; reg 23:0 freq; wire 23:0 phaseShift = 24b0; wire clkEn = 1b1; wire signed 11:0 out; initial begin clk = 1b1; freq = 24h04_0000; #10010 freq = 24h08_0000; #20000 freq = 24h0C_0000; #30000 freq = 24h10_0000; #40000 freq = 24h18_0000; #50000 freq = 24h20_0000; #60000 freq = 24h30_0000; #70000 $stop(); end always begin #10 clk = clk; end DDS dds_inst( .FreqWord(freq), .PhaseShift(phaseShift), .Clock(clk), .ClkEn(clkEn), .Out(out) ;endmodule
限制150内