00频率可变的任意波形发生器的设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

深圳大学实验报告课程名称:Verilog数字系统设计教程实验项目名称:频率可变任意波形发生器的设计学院:电子科学与技术专业:微电子指导教师:刘春平报告人:潘志钟学号:2007160051班级:07级微电1班实验时间:2009-12-8~2010-1-11实验报告提交时间:2010-1-4教务处制(·····这里可加前言摘要之类的东西····自己想来写···)1设计原理DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。直接数字频率合成技术(DDS)是一种以采样定理为基础的全数字化频率合成波形的方法。DDS频率合成器主要由频率寄存器、相位寄存器(需要时可加入)、相位累加器、波形存储表(ROM),DAC转换器和模拟低通滤波器(LPF)等组成。在系统时钟(SYSCLK)输入一定的情况下,频率寄存器中的频率控制字决定系统输出频率,而相位累加器的位数决定了系统频率分辨率。总体设计方案及其原理说明:图1-1系统总体设计方案相位累加器由N位加法器和N位累加寄存器级联而成。每当系统时钟SYSCLK产生一个上升沿,N位加法器将频率寄存器中的频率控制字(FREQDATA)与上一个系统时钟累加寄存器输出的累FPGA加相位数据相加,相加后的结果送累加寄存器。这样在系统时钟的作用下,不断对频率控制字进行线性相位累加,相位累加器的溢出率就是DDS任意波形发生器的输出频率。2设计与实现实际上DDS就是通过改变地址增量来达到控制输出频率的目的,而波形存储器(ROM)是以相位为地址,存有一个或多个按相位划分幅值的波形幅度信息。参考频率f_clk为整个合成器的工作频率,输入的频率字保存在频率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形(数模转换在这里不作要求)。△P为频率字,即相位增量;参考频率为f_clk;相位累加器的长度为N位,输出频率f_out为:式中F_out为输出信号的频率;F_clk为基准时钟频率。N为相位累加器的位数;△P为频率控制字(步长)。理论上通过设定F_clk、N和△P就可以得到各种频率波形的输出。在本设计中,相位累加器位数N=6,f_clk位长为32,系统时钟频率为27MHz。3各模块实现3.1相位累加器在设计波形发生器时,要实现频率可变,相位累加器是关键的一个部分。在modelsim开发环境下,本实验通过改变△P的值来变换输出频率f_out。假设△P初值为0,每个波形(正弦波、方波、正三角波、反三角波)的采样数据点的仿真数值输出,△P累加一次,即△P=△P+n,n=16;当△P=56时,△P置零,依此循环累加。频率的不同,即波形周期的不同,函数单周期内输出波形的量化数据的宽度也不一样。(正弦波为例)如下图所示:(····你用自己的方式表示····我的是以这种方式··你用其他方式吧,怕老师为难)图1-2正弦波的仿真输出如图,当P=16时,将P值代入公式,在本设计中,相位累加器位数N=6,f_clk位长为32,系统时钟频率f_clk为27MHz,则可计出输出频率f_out=16/64*27000000=6.75MHZ;同理可求出当P=32、48或64时对应的输出频率f_out。3.2模9计数器本实验各个波形一个周期内采取9个量化数据点,所以用模9计数器。八位段寄存器D的低四位D【3:0】用于计数,高四位D【7:4】用于波形选择。D【7:4】=DH,当DH=0000时,输出为正弦波;DH=0001时,输出为方波;DH=0010时,输出为正三角波;DH=0011时,输出为反三角波。累加器部分和计数器部分的主要程序代码如下:always@(posedgef_clk)beginD[7:4]=DH;beginif(p=56)beginp=n;beginif(D[3:0]=4'b1000)D[3:0]=0;elseD[3:0]=D[3:0]+4'b0001;endendelsep=p+n;endend3.3ROM波形存储表本实验设计一个ROM按顺序间隔存放所有波形的量化数据,并在modelsim开发环境下进行波形数字仿真输出。各波形的量化数据表设计如下:段地址基地址D7D6D5D4D3D2D1D0000000000000000017000000101000000011700000100000000101-700000110-1000000111-70001000010000100011000010010100001001110000101001000010101-1000010110-1000010111-1000100000000100001100100010200100011300100100400100101500100110600100111700110000000110001-100110010-200110011-300110100-400110101-500110110-600110111-7图1-3函数查找表的设计四种波形单周期的取样示意图如下:图1-4四种波形单周期的取样示意图程序编写用function函数来对ROM波形函数存储表存储各波形的量化数据。各波形量化数据表设计程序代码如下:function[7:0]ROM;input[7:0]D;case(D)//正弦波的量化采样数据//8'b00000000:ROM=0;8'b00000001:ROM=7;8'b00000010:ROM=10;8'b00000011:ROM=7;8'b00000100:ROM=0;8'b00000101:ROM=-7;8'b00000110:ROM=-10;8'b00000111:ROM=-7;8'b00001000:ROM=0;//方波的量化采样数据//8'b00010000:ROM=10;8'b00010001:ROM=10;8'b00010010:ROM=10;8'b00010011:ROM=10;8'b00010100:ROM=10;8'b00010101:ROM=-10;8'b00010110:ROM=-10;8'b00010111:ROM=-10;8'b00011000:ROM=-10;//正三角波的量化采样数据//8'b00100000:ROM=0;8'b00100001:ROM=1;8'b00100010:ROM=2;8'b00100011:ROM=3;8'b00100100:ROM=4;8'b00100101:ROM=5;8'b00100110:ROM=6;8'b00100111:ROM=7;8'b00101000:ROM=8;//反三角波的量化采样数据//8'b00110000:ROM=0;8'b00110001:ROM=-1;8'b00110010:ROM=-2;8'b00110011:ROM=-3;8'b00110100:ROM=-4;8'b00110101:ROM=-5;8'b00110110:ROM=-6;8'b00110111:ROM=-7;8'b00111000:ROM=-8;default:ROM=8'bx;endcaseendfunctionassigndate=ROM(D);4仿真试验在modelsim开发环境下,编写一个仿真程序,并可仿真输出各波形的量化数据。仿真程序如下:`includeDDS.vmoduletest;wire[7:0]date,D;wire[27:0]p;regf_clk;reg[27:0]n;reg[3:0]DH;always#10f_clk=~f_clk;initialbeginf_clk=0;DH=0;n=16;#720DH=1;#720DH=2;#720DH=3;endtestw4(.p(p),.D(D),.date(date),.f_clk(f_clk),.n(n),.DH(DH));endmodule下面是所设计的DDS任意波形发生器在modelsim中的时序仿真。(·········图你自己找其他的,这些图我删了一些,这部分你自己想办法修一下···)图1-5正弦波的仿真输出如图所示,当段地址DH=0000时,单周期内输出正弦波采样数据点的仿真数据date对应的数值依此为0、7、10、7、0、-7、-10、-7、0。图1-6方波的仿真输出如图所示,当段地址DH=0001时,单周期内输出方波采样数据点的仿真数据date对应的数值依此为10、-10;图1-8正三角波的仿真输出如图所示,当段地址DH=0010时,单周期内输出正三角波采样数据点的仿真数据date对应的数值依此为0、1、2、3、4、5、6、7、8;图1-10反三角波的仿真输出如图所示,当段地址DH=001时,单周期内输出反三角波采样数据点的仿真数据date对应的数值依此为0、-1、-2、-3、-4、-5、-6、-7、-8;5体会(这部分你要自己写)················指导教师批阅意见:成绩评定:指导教师签字:年月日备注:

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功