龙源期刊网 http://www.qikan.com.cn
基于Verilog HDL的DDS设计与仿真
作者:李春剑 吉望西 刘达伦 来源:《现代电子技术》2008年第20期
摘 要:详细阐述利用QuartusⅡ实现DDS(直接数字频率合成器)模块的方法和步骤。首先分析DDS的设计原理,并对其进行系统建模,利用Verilog HDL实现设计并在开发环境下进行功能仿真,选用现场可编程器件FPGA作为目标器件,得到可以重构的IP核,其可以很方便地实现复杂的调频、调相和调幅功能。利用该方法实现的DDS模块具有更广泛的实际意义和更良好的实用性。
关键词:直接数字频率合成器;现场可编程门阵列;Verilog HDL;Quartus Ⅱ;IP核 中图分类号:TN77文献标识码:B 文章编号:1004373X(2008)2001503
Design and Simulation of DDS Based on Verilog HDL LI Chunjian,JI Wangxi,LIU Dalun
(National Institute of Metrology,Beijing,100013,China)
Abstract:The method and steps of realization of DDS(Direct Digital Synthesizer)on Quartus II is described in detail.This paper analyzes the principle of DDS,builds up a system model,realizes DDS module based on Verilog HDL and simulates it.The IP nucleus of DDS which is built can be
reframed.It is very easy to achieve frequency modulation,phase modulation and amplitude modulation with the DDS module.It has more comprehensive and nice practicality.
Keywords:direct digital synthesizer;FPGA;Verilog HDL;Quartus II;IP nucleus
直接数字频率合成技术(Direct Digital Synthesize,DDS)是继直接频率合成技术和锁相式频率合成技术之后的第三代频率合成技术
[1]
。它采用全数字技术,并从相位角度出发进行频
率合成。随着微电子技术和数字集成电路的飞速发展,以及电子工程领域的实际需要,DDS日益显露出优于传统频率合成技术的一些性能,高分辨率、极短的频率切换时间、相位噪声低、便于集成等,逐步成为现代频率合成技术中的佼佼者。
龙源期刊网 http://www.qikan.com.cn
目前,DDS的设计大多是应用HDL(Hardware Description Language)对其进行逻辑描述。整个设计可以很容易地实现参数改变和设计移植,给设计者带来很大的方便。Verilog HDL就是其中一种标准化的硬件描述语言,它不仅可以进行功能描述,还可以对仿真测试矢量进行设计。Altera公司开发的QuartusⅡ设计软件,提供了Verilog HDL的设计界面以及编译平台,并且该公司还集成了可供程序下载的FPGA器件CYCLONE Ⅱ系列芯片,这样大大缩短了DDS的设计周期。
1 DDS的设计原理
DDS的原理图如图1所示。DDS实现频率合成主要是通过查表的方式进行的
[2]
。
正弦查询表是一个只读存储器(ROM),以相位为地址,存有1个或多个按0o~360o相位划分幅值的正弦波幅度信息。相位累加器对频率控制字进行累加运算,若需要还可以加入相位控制字,得到的结果作为正弦波查询表的地址。正弦查询表的输出为数字化正弦幅度值,通过D/A转换器转化为近似正弦波的阶梯波,再通过低通滤波器滤除高频成分和噪声最终得到一个纯正度很高的正弦波。
1.1 建模
如图2所示正弦波y=sin(2πx),若以f量化的量化频率对其幅度值进行量化,一个周期可以得到M=f量化个幅度值。将这些幅度值按顺序存入到ROM。相位累加器在参考时钟的驱动下,每来1个脉冲,输出就会增加1个步长相位增量X,输出数据作为地址送入ROM中,读出对应的幅度值形成相应的波形。 1.2 参数设定 DDS输出信号频率:
龙源期刊网 http://www.qikan.com.cn
fo=fc×X/2N
其中,X为频率累加器设定值;N为相位累加器位数;fc为参考时钟频率。 例如,假定基准时钟为200 MHz,累加器的位数为32,频率控制字X为: 0x08000000H,即为227,则: fo=200×227/232=6.25 MHz
再设定频率控制字X为0x80000000H,即为231,则: fo=200×231/232=100 MHz
可见,理论上通过设定DDS相位累加器位数N、频率控制字X和基准时钟fc的值,就可以得到任一频率的输出
[3]
。
频率分辨率为:fres=fc/2N,由参考时钟和累加器的位数决定,当参考时钟的频率越高,相位累加器的位数越高,所得到的频率分辨率就越高。 1.3 方案的选择
在利用FPGA制作DDS时,相位累加器是决定DDS性能的一个关键部分
[3]
。一方面可
以利用进位链来实现快速、高效的电路结构,同时长的进位链会减少其他逻辑的布线资源,限制整个系统速度的提高;另一方面可以利用流水线技术提高工作频率,但系统频率转换速度会相对降低。在选择累加器实现方案时需要综合考虑。
正弦波查询表ROM也是制作的重点。在FPGA中ROM 表的尺寸随着地址位数或数据位数的增加呈指数递增,如何在满足性能的前提下节省资源开销。一方面通过相位累加器的输出截断方式,例如从32位的相位累加器结果中提取高16位作为ROM的查询地址,由此而产生的误差会对频谱纯度有影响,但是对波形的精度的影响是可以忽略的;另一方面可以根据信号周期对称性来压缩ROM的尺寸,这时系统硬件设计复杂度会有所增加。因此,需要选取合适的参数和ROM压缩技术,在满足系统性能的前提下使得系统尽量优化。
2 Verilog HDL实现DDS模块
2.1 相位累加器