基于VerilogHDL的DDS设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[收稿日期]2007209212
[作者简介]王军海(19782),男,2000年大学毕业,硕士生,现主要从事嵌入式控制方面的研究工作。
基于V erilog H DL 的DDS 设计
王军海 (武汉理工大学自动化学院,湖北武汉430063)
[摘要]阐述了直接数字频率合成器(DDS )的原理与设计,利用Verilog HDL 硬件描述语言实现了DDS 功能,在Modelsim 中完成了仿真,并最终经过了FP GA 的验证。
[关键词]DDS ;加法器;Verilog HDL ;FP GA
[中图分类号]TN74[文献标识码]A [文章编号]167321409(2007)042N096203
随着数字电子技术的迅猛发展,集成电路设计逐步趋向于系统级、模块化设计方向发展[1]。运用Verilog HDL 可以很好的解决大规模集成电路的实现。直接数字频率合成器(DDS )是通讯系统中常用的部件,还可以作为很有用的信号源。采用Verilog HDL 不仅可以完成DDS 的设计输入、设计验证、测试生成、故障分析和模拟、定时分析或校验以及原理图的自动生成等任务,而且还可以在不同的FPG A 器件之间实现下载固化以及功能扩展[2~4]。笔者利用Verilog HDL 硬件描述语言实现了DDS 功能。1 DDS 的基本原理
DDS 的基本原理是利用采样定理,通过查表法产生波形。DDS 的结构有很多种,其基本电路原理如图1所示
。
图1 DDS 原理框图
相位累加器由N 位加法器与N 位累加寄存器级联构成。每来一个时钟脉冲CL K ,加法器将频率控制字DA TA 与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS 输出的信号频率。用相位累加器输出的数据作为波形存储器(ROM )的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A 转换器,D/A 转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。
2 DDS 的设计与实现
DDS 的组成形式如图2所示。图2中波形数据存储器的全部数据被读出一次的频率为:
f =f CL K 2m ×f DA TA
・69・长江大学学报(自科版)理工卷
2007年12月第4卷第4期Journal of Yangtze U niversity (N at Sci Edit)Sci &E ng V Dec 12007,Vol 14No 14
式中,f 为波形数据存储器输出信号的频率;f CL K 为系统的时钟频率;m 为地址加法器的数据宽度;f DA TA 为频率数据
。
图2 DDS 的组成形式
考虑到波形数据的精度,取n =10,则m -n =15-10=5,f DA TA =32-1=31,可以得到f 的最高频率为913k Hz 。在设计中取DA TA 的位宽为5,地址加法器的位宽为11,系统的时钟频率为10M Hz 。整个系统可由3个模块组成:地址加法器模块(FULL ADD ER module )、异步复位D 型触发器模块(R _SDFF module )、分频器模块(DIV _CL K module )。
按照Verilog HDL 自上向下的设计原则,系统的顶层模块描述为:
module DDS (RESET ,CL K ,DA TA ,DOU T ,MCL K );
input CL K ,RESET ;
input
[4:0] DA TA ; output
[10:0] DOU T ; output MCL K;
wire [10:0] SUM ;
wire DIV _CL K;
FULL ADDER U1(DA TA ,DOU T ,SUM );
R _SDFF
U2(RESET ,SUM ,DIV _CL K1,DOU T ); DIV _CL K
U3(RESET ,CL K ,DIV _CL K1); assign MCL K =DIV _CL K1;
endmodule MCL K 用于为波形存储器提供时钟。分频器模块描述为:
module DIV _CL K (RESET ,CL K ,DIV _CL K1);
input RESET ,CL K;
output DIV _CL K1;
reg [3:0]Q ;
always @(posedge CL K or negedge RESET )
if (!RESET )
Q <=0;
else if (Q ==9)
Q <=0;
else
Q <=Q +1;
assign DIV _CL K1=~Q [3];
endmodule
・79・第4卷第4期王军海:基于Verilog HDL 的DDS 设计
系统的地址加法器模块由10个全加器与一个无进位的加法器组成。全加器的Verilog HDL 描述代码为: module F _ADDER (A ,B ,CY _IN ,SUM ,C Y _OU T );
input
A ,
B ,
C Y _IN ; output SUM ,C Y _OU T ;
assign SUM =A ^B ^C Y _IN ; assign C Y _OU T =(A &B )|
(A &C Y _IN )|(B &C Y _IN ); endmodule
3 仿真试验
为了验证系统是否能够满足设计的要求,编写了测试向量(Test Bench )文件在Modelsim 中进行编译、调试与前仿真。仿真结果如图3所示
。
图3 仿真结果图
从图3中可以看出,波形存储器的地址变化是连续的,这样就可以保证生成波形的精度。DOU T 所增长的步长为“31”,每个步长的时间为100ns (仿真脉冲周期T =10ns ),这样DOU T 增加到最大值7FF (十六进制)共需要约66步。系统输入时钟为10M Hz ,故所设计的DDS 最大输出频率为15151Hz ,最小输出频率约为488Hz ,误差均在理论值内(48813~151137k Hz )。前仿真通过后,将在Quart us Ⅱ编译综合后生成的pof 文件通过下载电缆下载到Altera 公司的FP GA FL EX10K10芯片上做验证(由于波形的一个周期就是波形数据最高bit 位变化的周期,故可以通过观察DOU T [15]的变化来检验DDS 的效果),其结果与在Modelsim 中仿真的结果一致。
4 结 语
基于Verilog HDL 的直接数字频率合成器能够实现比较复杂的调频、调相和调幅等功能,具有良好的实用性。就合成信号质量而言,专用DDS 芯片由于采用特定的集成工艺,内部数字信号抖动很小,可以输出高质量的模拟信号。基于Verilog HDL 的DDS 也能输出较高质量的信号,虽然达不到专用DDS 芯片的水平,但信号精度误差在允许范围之内。随着这种频率合成技术的发展,其应用前景相当的可观,现已广泛应用于通讯、导航、雷达、遥控遥测、电子对抗以及现代化的仪器仪表工业等领域。
[参考文献]
[1]周立功,夏宇闻1单片机与CPLD 综合应用技术[M ]1北京:北京航空航天大学出版社,20031
[2]夏宇闻1复杂数字电路与系统的Verilog HDL 设计[M ]1北京:北京航空航天大学出版社,19981
[3]夏宇闻1Verilog 数字系统设计教程[M ]1北京:北京航空航天大学出版社,20031
[4]Palnit kar S 1Verilog HDL 数字设计与综合[M ]1夏宇闻等译1北京:电子工业出版社,20041
[编辑] 洪云飞
・89・ 长江大学学报(自科版)理工卷2007年12月