新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于流水线结构的DDS多功能信号发生器设计

基于流水线结构的DDS多功能信号发生器设计

作者: 时间:2012-05-22 来源:网络 收藏

第一级流水线经过全加器之后得出运算结果sum[0..7]和进位信号,sum[0..7]作为本级的输出,它是整个累加结果的最低8位,而进位信号经过一个reg1之后作为下一级全加器的输入。

第二级流水线的输入信号是a[8..15],因为上一级共由两级数据锁存器构成,所以在做全加运算之前先分别将输入信号和本级的反馈信号经过2次数据锁存,然后再与来自上一级的进位信号进行全加运算,运算之后的结果作为本级的输出sum[8..15],同时产生进位信号参与下一级的运算。第三级与第四级的工作原理同上,系统每增加一级,锁存器也会随之增加一级。

图3为在QuartusⅡ环境下得到的四级流水线仿真波形,时钟信号的频率是200 MHz,占空比为50 %,偏移量为0。为观察方便,输入控制字a和累加结果sum均用无符号十进制数来表示,且输入控制字设定为32,由波形图可见,该系统可以实现32位的相位累加。

c.JPG

3 任意波形发生器的设计及实现

可以根据ROM中存储数据的不同产生多种波形。在QuartusⅡ开发环境下搭建系统模型需要订制波形存储器ROM,根据所需精度的不同,ROM中存储的采样点数也不同。当所需波形数据非常简单时,可以在QuartusⅡ中定制ROM时直接将数据写入新建的mif文件,然后保存即可,当所需波形数据较为复杂时,可以通过Matlab来自动生成所需波形的幅度数据,然后再通过调用mif文件来达到预期目标。以256个点的正弦波为例加以分析说明。

产生正弦波的Matlab程序如下:

d.JPG

width定义的是位宽,depth是深度,也就是将来生成的mif文件含有多少个存储单元,在此处,设定了数据宽度为8位,存储单元数为256,将来在QuartusⅡ中定制ROM时也要相应地将存储单元数设定为256,根据的基本原理,随着设计点数的增加,所得的波形数据会更加准确,通过D/A转化后在示波器上观测的波形也越精准,但所需ROM的存储空间将会呈指数增长,所以要根据实际的需要来综合考虑存储单元的个数。将上述指令在Matlab环境中运行之后就能够得到所需mif文件。

在mif文件生成之后需要将此文件添加进入DDS系统的ROM中,然后进行全局的编译,编译通过后就可以进行工程的下载。具体的波形可以通过示波器来分析,或者使用Quartus Ⅱ自带的嵌入式逻辑分析仪来分析。在使用嵌入式逻辑分析仪分析和观察时,采样信号要根据DDS的时钟信号来确定,待测信号设定为DDS的输出信号,当工程下载到FPGA芯片后,待测信号通过USB-BLASTER反馈至嵌入式逻辑分析仪中,选择不同的数据类型,可以观察到以十进制数据表示的数字信号或者以实际波形表示的模拟信号。



评论


相关推荐

技术专区

关闭