您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页频率可变的任意波形发生器的设计

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

来源:华佗小知识
深 圳 大 学 实 验 报 告

课程名称:Verilog数字系统设计教程

实验工程名称:频率可变任意波形发生器的设计

学院: 电子科学与技术

专业: 微电子

指导教师: 刘春平

报告人: 潘志钟学号: 2007160051班级: 07级微电1班

实验时间:2009-12-8 ~ 2010-1-11

实验报告提交时间:2010-1-4

教务处制

(·····这里可加前言摘要之类的东西····自己想来写···)

1设计原理

DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。直接数字频率合成技术(DDS)是一种以采样定理为基础的全数字化频率合成波形的方法。DDS频率合成器主要由频率寄存器、相位寄存器(需要时可加入)、相位累加器、波形存储表(ROM),DAC转换器和模拟低通滤波器(LPF)等组成。在系统时钟(SYSCLK)输入一定的情况下,频率寄存器中的频率控制字决定系统输出频率,而相位累加器的位数决定了系统频率分辨率。矚慫润厲钐瘗睞枥庑赖。 总体设计方案及其原理说明:

FPGA

图 1-1 系统总体设计方案

相位累加器由N位加法器和N位累加寄存器级联而成。每当系统时钟SYSCLK产生一个上升沿,N位加法器将频率寄存器中的频率控制

字(FREQDATA)与上一个系统时钟累加寄存器输出的累加相位数据相加,相加后的结果送累加寄存器。这样在系统时钟的作用下,不断对频率控制字进行线性相位累加,相位累加器的溢出率就是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/*27000000=6.75MHZ;同理可求出当P=32、48或时对应的输出频率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 @(posedge f_clk) begin D[7:4]=DH。 begin if(p>=56) begin p=n。 begin if(D[3:0]>=4'b1000) D[3:0]<=0。 else D[3:0]<=D[3:0]+4'b0001。 end end else p=p+n。 end end

3.3ROM波形存储表

本实验设计一个ROM按顺序间隔存放所有波形的量化数据,并在 modelsim开发环境下进行波形数字仿真输出。鹅娅尽損鹌惨歷茏鴛賴。 各波形的量化数据表设计如下:

段地址 基地址 D7 D6 D5 D4 D3 D2 D1 D0

0000 0000 0 0000 0001 7 0000 0010 10 0000 0011 7 0000 0100 0 0000 0101 -7 0000 0110 -10 0000 0111 -7 0001 0000 10 0001 0001 10 0001 0010 10 0001 0011 10 0001 0100 10 0001 0101 -10 0001 0110 -10 0001 0111 -10 0010 0000 0 0010 0001 1 0010 0010 2 0010 0011 3 0010 0100 4 0010 0101 5 0010 0110 6 0010 0111 7 0011 0000 0 0011 0001 -1 0011 0010 -2 0011 0011 -3 0011 0100 -4 0011 0101 -5 0011 0110 -6 0011 0111 -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。 endcase endfunction assign date= ROM(D)。

4仿真实验

在modelsim开发环境下,编写一个仿真程序,并可仿真输出各波形

的量化数据。仿真程序如下:

`include\"DDS.v\" module test。 wire [7:0] date,D。 wire [27:0] p。 reg f_clk。 reg [27:0] n。 reg [3:0] DH。 always #10 f_clk = ~f_clk。 initial begin f_clk =0。 DH=0。 n=16。 #720 DH = 1。 #720 DH = 2。 #720 DH= 3。 end test w4 (.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 体会(这部分你要自己写) ················

指导教师批阅意见: 成绩评定: 指导教师签字: 年月日 备注:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务