原创 DDS编译器

2011-3-4 18:15 1917 5 5 分类: FPGA/CPLD

DDS技术在FPGA设计中是为最基础最典型的案例。而且DDS电路的广泛应用也让我看到它的无比重要性。


DDS即直接数字式频率合成器(Direct Digital Synthesizer),与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。


一个DDS电路中主要包括频率控制寄存器、高速相位累加器和正弦计算器三个部分。频率控制寄存器可以串行或并行的方式装载并寄存用户输入的频率控制码;而相位累加器根据频率控制码在每个时钟周期内进行相位累加,得到一个相位值;正弦计算器则对该相位值计算数字化正弦波幅度。DDS电路输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。


DDS有如下优点:


频率分辨率高,输出频点多,可达N个频点(N为相位累加器位数);


频率切换速度快,可达us量级;


频率切换时相位连续;


可以输出宽带正交信号;


输出相位噪声低,对参考频率源的相位噪声有改善作用;


可以产生任意波形;


全数字化实现,便于集成,体积小,重量轻。


在各行各业的测试应用中,信号源扮演着极为重要的作用。但信号源具有许多不同的类型,不同类型的信号源在功能和特性上各不相同,分别适用于许多不同的应用。目前,最常见的信号源类型包括任意波形发生器,函数发生器,RF信号源,以及基本的模拟输出模块。信号源中采用DDS技术在当前的测试测量行业已经逐渐称为一种主流的做法。


DDS电路简易结构图:


8c653a51-a68f-4be4-a0fe-b7d804401e6a.jpg


为了我们的设计能够应用于其它工程模块,可将其做成编译器。


通过编写matlab脚本程序,可自动生成FPGA的Verilog硬件描述程序,其中频率字宽度freq_length,地址宽度address_length,输出数据宽度data_length都为可编程参数。


matlab程序如下图设计:


21a7a8af-d110-472f-a896-2bef3e7ab193.jpg


可见,其实非常简单,只利用fprintf函数,将代码打在.v文本里就行了。而接口宽度的参数化,则在Verilog设计时用到parameter定义。如此,则可简单得有matlab里一个函数,便可自动生成DDS电路所需的verilog文件,而不需要每次都手动来修改原先代码中的程序那么复杂。

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条