您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > DDS信号发生器设计
课程设计(论文)题目名称DDS信号发生器设计课程名称专业课程设计(二)学生姓名李西军学号0941301222系、专业信息工程系、电子科学与技术班指导教师许建明2012年6月6日摘要采用了直接数字频率合成技术(DDS)和计算机控制技术,选择美国AnalogDevices公司的高度集成DDS芯片AD9851和AT89S52单片机作为控制器件,设计了一种基于DDS的程控信号发生器。用C语言进行了软件应用设计。实验结果表明,该信号发生器能较好地产生较高稳定度的激励信号,具有较高的实用价值。关键词:DDS;信号发生器;AD9851;AT89S52;AbstractThedirectdigitalfrequencysynthesistechnology(DDS)andcomputercontroltechnology,selectionofAmericanAnalogcompanyDeviceshighlyintegratedDDSchipAD9851andAT89S52singlechipmicrocomputerascontroldevice,designedakindofprogramcontrolsignalgeneratorbasedonDDS.TheuseofClanguagesoftwareapplicationdesign.Theexperimentalresultsshowthat,thesignalgeneratorcangeneratehigherstabilityexcitationsignal,andhashighpracticalvalueKeyword:DDSAD9851;AT89S52;signalgenerator目录摘要1设计目的.................................................................................................12设计功能及端口.....................................................................................12.1设计实现的功能..........................................................................22.2输入输出端口..............................................................................33、功能介绍..............................................................................................33.1设计功能模块介绍:..................................................................33.2系统结构框图:..........................................................................54设计源代码.............................................................................................54.1设计源代码:..............................................................................55验证方案和仿真激励:.........................................................................76功能仿真.................................................................................................87综合布线与电路图...............................................................................107.1综合与布局布线:............................................................................108下载代码和引脚分布报告...................................................................118.1下载代码.............................................................................................118.2引脚分布.............................................................................................11结论...........................................................................................................11参考文献..................................................................................................1211、概述信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器的实现方法通常是采用分立元件或单片专用集成芯片,但其频率不高,稳定性较差,且不易调试,开发和使用上都受到较大限制。随着可编程逻辑器件(FPGA)的不断发展,直接频率合成(DDS)技术应用的愈加成熟,利用DDS原理在FP-GA平台上开发高性能的多种波形信号发生器与基于DDS芯片的信号发生器相比,成本更低,操作更加灵活,而且还能根据要求在线更新配置,系统开发趋于软件化、自定义化。本文研究了基于FPGA的DDS信号发生器设计,实现了满足预定指标的多波形输出。DDS建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经D/A转换器转换为模拟量,将保存的波形重新合成出来。DDS基本原理框图如图1所示。除了滤波器(LPF)之外,DDS系统都是通过数字集成电路实现的,易于集成和小型化。系统的参考时钟源通常是一个具有高稳定性的晶体振荡器,为各组成部分提供同步时钟。频率控制字(FSW)实际上是相位增量值(二进制编码)作为相位累加器的累加值。相位累加器在每一个参考时钟脉冲输入时,累加一次频率字,其输出相应增加一个步2长的相位增量。由于相位累加器的输出连接在波形存储器(ROM)的地址线上,因此其输出的改变就相当于查表。这样就可以通过查表把存储在波形存储器内的波形抽样值(二进制编码)查找出来。ROM的输出送到D/A转换器,经D/A转换器转换成模拟量输出。2、设计功能及端口2.1设计实现的功能用一个8×128的ROM完成对所要显示正弦波形数据的存储,即生成正弦波的波形数据查找表,通过VerilogHDL编写DDS直接数字频率合成代码,在QuartusII与modelsim工具软件的环境中进行设计和仿真,要求能根据相位累加产生的地址并按照不同的频率控制信号(freq)读取ROM波形查找表中的数值做为输出,并正确显示波形。同时还可通过改变相移变量(pha)控制程序从不同的位置开始读取ROM波形查找表中的数据。32.2输入输出端口inputwireclk;//时钟inputwirerst;//复位信号(低电平有效)inputwire[6:0]freq;//频率控制信号inputwire[6:0]pha;//相移变量信号inputwirekey;//使能开关信号(高电平有效)outputwire[7:0]data;//ROM查找表数据3、功能介绍3.1设计功能模块介绍:本次设计总体实现的是一个能产生正弦波形的DDS信号发生器,该DDS信号发生器的程序代码模块主要有以下内容:(1)ROM地址产生:当时钟的上升沿到来时,如果复位信号有效,则把地址变量addr清零;否则当使能开关信号key有效时,则将频率控制字写到内部寄存器里,再将频率控制字和上一时刻的地址变量进行相加,将加的结果作为地址输出。另外,还可通过频率控制信号freq控制读取频率,通过相移变量信号pha控制初始读取位置。(2)ROM查找表:当时钟的上升沿到来时,如果复位信号有效,则把输出置为零;否则根据4ROM地址产生模块产生的地址读取ROM中存储的数值。另外需通过C语言生成ROM正弦波查找表数据,C语言程序代码如下:#includestdio.h#includeconio.h#includemath.hmain(){inti;floatj;inty;FILE*fp;if((fp=fopen(rom.mif,wa))==NULL)exit(1);for(i=0;i128;i++){y=128*sin(j)+128;fprintf(fp,%d:%d;\n,i,y);j+=2*3.1416/128;}fclose(fp);printf(Hello,world\n);getch();}53.2系统结构框图:4、设计源代码4.1设计源代码:moduleDDS(clk,rst,freq,pha,key,data);inputwireclk;//时钟inputwirerst;//复位信号(低电平有效)inputwire[6:0]freq;//频率控制信号inputwire[6:0]pha;//相移变量信号inputwirekey;//使能开关信号(高电平有效)outputwire[7:0]data;//ROM查找表数据ROM查找表D/A转换ROM地址产生模块rstaddrkeyclkdata输出clkrstkey输出addr地址6reg[6:0]addr;reg[6:0]phase;reg[6:0]frequency;always@(posedgeclk)beginif(key==1)beginphase=pha;//将相移变量值赋给寄存器phasefrequency=freq;//将频率控制变量值赋给frequencyendendalways@(posedgeclkornegedgerst)beginif(!rst)beginaddr=0;//复位endelsebeginif(key==1)addr=phase;//将寄存器phase存储的相值赋给addrelseaddr=addr+frequency;//ROM地址产生endendrom1rom_1(.address(addr),.clock(clk),.q(data));//实例化调用rom1波形查找表endmodule75验证方案和仿真激励:`timescale1ns/100ps//设置仿真的时间单位和时间精度modulestimulus;regclk,rst;reg[6:0]freq,pha;regkey;wire[7:0]data;initialbeginfreq=7'd2;pha=7'd0;key=1'b0;#20key=1'b1;#100key=1'b0;endinitialbeginclk=1'b0;rst=1'b1;#40rst=1'b0;#40rst=1'b1;endalways#10clk=~clk;//时钟翻转DDSLXC
本文标题:DDS信号发生器设计
链接地址:https://www.777doc.com/doc-4504221 .html