分享

基于DDS的函数信号发生器

 败败0619 2012-04-12

基于DDS的函数信号发生器

(2011-05-07 14:06:12)
标签:

杂谈

分类: FPGA学习笔记

研究了几天基于DDS技术的函数信号发生器,断断续续获得了一些收获。

    DDS-- Direct Digital Frequency Synthesis(直接数字频率合成技术)

至于利用DDS制作函数信号发生器的优点我就不说了,百度一下,一切皆了然。这里介绍一下利用Verilog语言编写DDS的思想。当然网上也有很多参考资料,都介绍得不错,也有用单片机做的,不过我觉得利用单片机来做对于低频来说完全没问题,但是对于高频来说就完全没有效果了。

首先介绍一下DDS的整体思想:

整个DDS的模拟框图如下:

clip_image002

其核心就是频率控制,相位控制和相位累加。主要参数有:频率步进精度、相位步进精度、DAC的位数以及滤波器的设计。那么怎么去确定这些参数呢,我个人理解如下:

    1.频率步进精度就决定了程序中相位累加器的位数(一般介绍都是取24-32位,但是具体怎么取没有明确给出),同时也要取决于FPGA的时钟(这里以50MHz为例)

clip_image004也就是说采用30位的相位累加器可以达到0.046Hz。根据不同的位数和系统的时钟就可以确定频率的精度了。

    2.相位步进:相位步进主要是调解输出波形的相位。这里就还涉及到采样深度(也就是对正弦波的采样点数,这里以4096为例)

clip_image006根据不同的相位精度,求出X即得到相位控制字。如:相位步进5度,那么计算出来X=56.88888。

    3.DAC的选取:根据要求的输出幅度的精度和输出频率。如:选择8位的DAC,其电压精度为clip_image008,而选择电流型DA和选择电压型DA则得根据输出频率要求而定。电流型DAC转换速度不如电流型DAC。

    4.滤波器的设计:滤波器在整个设计过程中起到非常重要的作用。前面DAC转换后会携带很多噪声和杂波,通过频率响应较好的滤波器则可以充分的将杂波和噪声滤除掉,从而得到较好的波形。

    5.涉及的主要计算公式:

    1).image     即M为频率控制字,改变M的值即可改变输出频率。

     N为相位累加器的位数,Fc为系统的时钟频率。

     例:Fc=50MHz,N=30;Fout=1KHz,则相位累加器每次累加的数(频率控制字)M=21474.83648(取21475)

注意:1.由取样定理,所产生的信号频率不能超过时钟频率的一半,在实际运用中,为了保证信号的输出质量,输出频率不要高于时钟频率的33%,以避免混叠或谐波落入有用输出频带内

      2.相位累加器输出位并不全部加到查询表,而要截断。相位截断减小了查询表长度,但并不影响频率分辨率,对最终输出仅增加一个很小的相位噪声。DAC分辨率一般比查询表长度小2~4位。

    2).相位控制字:image

     X为rom表的采样点数,p为相位,a为相位控制字。

     即按照要求输出的相位,计算出a的值,将a累加给相位累加器,即可输出该相位上的的波形。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多