基于Verilog-HDL的DDS设计与仿真_第1页
基于Verilog-HDL的DDS设计与仿真_第2页
基于Verilog-HDL的DDS设计与仿真_第3页
基于Verilog-HDL的DDS设计与仿真_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于VerilogHDL的DDS设计与仿真直接数字频率合成技术(DirectDigitalSynthesize,DDS)是继直接频率合成技术和锁相式频率合成技术之后的第三代频率合成技术。它采用全数字技术,并从相位角度出发进行频率合成。随着微电子技术和数字集成电路的飞速开展,以及电子工程领域的实际需要,DDS日益显露出优于传统频率合成技术的一些性能,高分辨率、极短的频率切换时间、相位噪声低、便于集成等,逐步成为现代频率合成技术中的佼佼者。

目前,DDS的设计大多是应用HDL(HardwareDescriptionLanguage)对其进行逻辑描述。整个设计可以很容易地实现参数改变和设计移植,给设计者带来很大的方便。VerilogHDL就是其中一种标准化的硬件描述语言,它不仅可以进行功能描述,还可以对仿真测试矢量进行设计。Altera公司开发的QuartusⅡ设计软件,提供了VerilogHDL的设计界面以及编译平台,并且该公司还集成了可供程序下载的FPGA器件CYCLONEⅡ系列芯片,这样大大缩短了DDS的设计周期。

1DDS的设计原理

DDS的原理图如图1所示。DDS实现频率合成主要是通过查表的方式进行的。

正弦查询表是一个只读存储器(ROM),以相位为地址,存有1个或多个按0°~360°相位划分幅值的正弦波幅度信息。相位累加器对频率控制字进行累加运算,假设需要还可以参加相位控制字,得到的结果作为正弦波查询表的地址。正弦查询表的输出为数字化正弦幅度值,通过D/A转换器转化为近似正弦波的阶梯波,再通过低通滤波器滤除高频成分和噪声最终得到一个纯粹度很高的正弦波。

1.1建模

如图2所示正弦波y=sin(2πx),假设以f量化的量化频率对其幅度值进行量化,一个周期可以得到M=f量化个幅度值。将这些幅度值按顺序存入到ROM。相位累加器在参考时钟的驱动下,每来1个脉冲,输出就会增加1个步长相位增量X,输出数据作为地址送入ROM中,读出对应的幅度值形成相应的波形。

1.2参数设定

DDS输出信号频率:

其中,X为频率累加器设定值;N为相位累加器位数;fc为参考时钟频率。

例如,假定基准时钟为200MHz,累加器的位数为32,频率控制字X为:

0x08000000H,即为227,那么:

再设定频率控制字X为0x80000000H,即为231,那么:

可见,理论上通过设定DDS相位累加器位数N、频率控制字X和基准时钟fc的值,就可以得到任一频率的输出。

频率分辨率为:fres=fc/2N,由参考时钟和累加器的位数决定,当参考时钟的频率越高,相位累加器的位数越高,所得到的频率分辨率就越高。

1.3方案的选择

在利用FPGA制作DDS时,相位累加器是决定DDS性能的一个关键局部。一方面可以利用进位链来实现快速、高效的电路结构,同时长的进位链会减少其他逻辑的布线资源,限制整个系统速度的提高;另一方面可以利用流水线技术提高工作频率,但系统频率转换速度会相对降低。在选择累加器实现方案时需要综合考虑。

正弦波查询表ROM也是制作的重点。在FPGA中ROM表的尺寸随着地址位数或数据位数的增加呈指数递增,如何在满足性能的前提下节省资源开销。一方面通过相位累加器的输出截断方式,例如从32位的相位累加器结果中提取高16位作为ROM的查询地址,由此而产生的误差会对频谱纯度有影响,但是对波形的精度的影响是可以忽略的;另一方面可以根据信号周期对称性来压缩ROM的尺寸,这时系统硬件设计复杂度会有所增加。因此,需要选取适宜的参数和ROM压缩技术,在满足系统性能的前提下使得系统尽量优化。

2VerilogHDL实现DDS模块2.1相位累加器

上述为相位累加器的VerilogHDL功能实现,其中数据宽度为32位。同时利用QuartusⅡ进行波形仿真见图3。对应的模块符号见图4。

2.2ROM正弦查询表

根据DDS的原理,将正弦波形的量化数据存储于波形查询表ROM中,即可完成正弦波发生的功能。Altera公司提供了LPMROM(ROM兆函数),这里只需借助Matlab生成.mif文件,并加载到LPMROM中即可得到所需的正弦查询表ROM。

在Matlab中,运行下面的语句可以得到储存正弦波数字幅度值的.mif文件。例如产生214×12b的正弦波0~27π幅度值,语句如下:

由此而生成的rom.mif文件内容是正弦波0~2π数字幅度值,但是格式不符合.mif。文件的格式,需要对其进行修改。.mif文件的格式如下:

这样通过例化LPMROM得到了正弦波查询表ROM的模块,地址宽度为14位,输出数据为12位。模块符号见图5。

2.3DDS顶层模块的实现

上述代码为DDS模块的VerilogHDL顶层文件。对应的模块图见图6。

假设需要利用NIOSⅡ对其进行控制,需要并将DDS模块加载到NIOSⅡ的系统中。例如,通过NIOSⅡ为DDS模块的频率控制字freq和相位控制字phase置数。此时DDS的代码应改为:

模块的输入端口添加了写信号iwr、地址信号addr和与NIOSⅡ同步的时钟信号iclk,这样是为了将DDS模块连接到Avalon总线上,利用总线和NIOSⅡ进行通信。加载到NIOSⅡ系统之前,需要将该模块进行仿真和调试。仿真结果如图7所示。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论