DDS的FPGA实现设计
扫描二维码
随时随地手机看文章
根据图1,并假定相位控制字为0,这时DDS的核心部分相位累加器的FPGA的设计可分为如下几个模块:相位累加器SUM99、相位寄存器REG1、正弦查找表ROM和输出数据寄存器REG2,其内部组成框图如图 2所示。图中,输入信号有时钟输入CLK,使能端EN,复位端RESET,频率控制字K,输出信号为Q。
图2 DDS内部组成框图
整个DDS模块采用一个时钟,以用来同步各个模块的运算速度。其中相位累加器SUM99是一个带有累加功能的10位加法器,它以设定的10位频率控制字Κ作为步长来进行加法运算,当其和满时,计数器清零,并进行重新运算。相位寄存器REG1就是一个一般的10位寄存器,它对输入端输入的数据进行寄存,当下一个时钟到来时,输出寄存的数据。正弦查找表ROM是DDS最关键的部分,也是最复杂的部分,设计时首先需对正弦函数进行采样,接着将采样的结果放到ROM模块的对应存储单元中,每一位地址对应一个数值,输出为9位。为了保证输出数据的稳定性,我们将ROM的输出数据先寄存在REG2中,待下一个时钟到来时,再将其输出。整个系统各模块是在同步时钟信号CLK的控制下协调工作的。
下面介绍一下正弦查找表ROM模块的具体设计。
首先利用MATLAB或C语言编程对正弦函数进行采样;然后对采样数据进行二进制转换,其结果作为查找表地址的数值。
用MATLAB语言编写的正弦函数数据采集程序如下:
用C语言编写的正弦函数数据采样程序如下:
两个程序运行之后所得结果是一致的。
MATLAB语言编写的正弦函数数据采集程序运行结果如下:
总共是1024个数据。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
来源:ks990次