深圳大学实验报告
课程名称: 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 位累加寄存器级联而成。每当系统时钟 SYSCL K产生一个上升沿, N 位加法器将频率寄存器中的频率
控制字( FR EQDA TA )与上一个系统时钟累加寄存器输出的累加相位数据相加,相加后的结果送累加寄存器。这样在系统时钟的作用下, 不断对频率控制字进行线性相位累加,相位累加器的溢出率就是 DD S任意波形发生器的输出频率。
2 设计与实现
实际上 DD S就是通过改变地址增量来达到控制输出频率的目的,而波形存储器( 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, 系统时钟频率为 27M H z。
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为 27M H z,则可计出输出频率f_out=16/64*27000000=;同理可求出当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 @(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. 3 ROM波形存储表
本实验设计一个ROM按顺序间隔存放所有波形的量化数据,并在 modelsim 开发环境下进行波形数字仿真输出。
各波形的量化数据表设计如下:
段地址基地址 D7 D6 D5 D4 D3 D2
Verilog数字系统设计教程实验报告-频率可变任意波形发生器的设计 来自淘豆网m.daumloan.com转载请标明出处.