DDS原理的通俗解释

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

  2. DDS原理
    2.1. 解释一
    随着数字技术在仪器仪表和通信系统中的广泛使用,可从参考频率源产生多个频率的数字控制方法诞生了,即直接数字频率合成(DDS)。其基本架构如图1所示。该简化模型采用一个稳定时钟来驱动存储正弦波(或其它任意波形)一个或多个整数周期的可编程只读存储器(PROM)。随着地址计数器逐步执行每个存储器位置,每个位置相应的信号数字幅度会驱动DAC,进而产生模拟输出信号。最终模拟输出信号的频谱纯度主要取决于DAC.相位噪声主要来自参考时钟。
    在这里插入图片描述

                                      图1 DDS原理图
    

    相位控制字可以控制初相。频率控制字控制每次相位的步进,进而控制产生信号的频率。
    系统的核心是相位累加器,其内容会在每个时钟周期更新。相位累加器每次更新时,存储在相位寄存器中的数字字M就会累加至相位寄存器中的数字。假设相位寄存器中的数字为00…01,相位累加器中的初始内容为00…00.相位累加器每个时钟周期都会按00…01更新。如果累加器为32位宽,则在相位累加器返回至00…00前需要232(超过40亿)个时钟周期,周期会不断重复。
    相位累加器的截断输出用作正弦(或余弦)查找表的地址。查找表中的每个地址均对应正弦波的从0°到360°的一个相位点。查找表包括一个完整正弦波周期的相应数字幅度信息。(实际上,只需要90°的数据,因为两个MSB(最高有效位,most significant bit,MSB)中包含了正交数据)。因此,查找表可将相位累加器的相位信息映射至数字幅度字,进而驱动DAC,图 2用图形化的“相位轮”显示了这一情况。
    考虑n = 32,M = 1的情况。相位累加器会逐步执行232个可能的输出中的每一个,直至溢出并重新开始。相应的输出正弦波频率等于输入时钟频率232分频。若M=2,相位累加器寄存器就会以两倍的速度“滚动”计算,输出频率也会增加一倍。以上内容可总结如下:
    在这里插入图片描述

                                   图 2数字相位轮
    

    n位相位累加器(大多数DDS系统中,n的范围通常为24至32)存在2n个可能的相位点。相位寄存器中的数字字M代表相位累加器每个时钟周期增加的数量。如果时钟频率为fc,则输出正弦波频率计算公式为:
    f 0 = M*fc/2^n
    该公式称为DDS“调谐公式”。注意,系统的频率分辨率等于fc/2n。n = 32时,分辨率超过40亿分之一!在实际DDS系统中,溢出相位寄存器的位不会进入查找表,而是会被截断,只留下前13至15个MSB。这样可以减小查找表的大小,而且不会影响频率分辨率。相位截断只会给最终输出增加少量可接受的相位噪声。(参见图 3)。
    在这里插入图片描述

    图 3计算得出的输出频谱显示15位相位截断时90 dB SFDR
    DAC的分辨率通常比查找表的宽度少2至4位。即便是完美的N位DAC,也会增加输出的量化噪声。图4显示的是32位相位累加器15位相位截断时计算得出的输出频谱。选择M值后,输出频率会从0.25倍时钟频率开始稍有偏移。注意,相位截断和有限DAC分辨率产生的杂散都至少比满量程输出低90 dB。这一性能远远超出了任何商用12位DAC,足以满足大多数应用的需求。
    显然,相位累加器的位宽 n 越大,频率分辨率就越高。为了完成相位到幅度的转换,转换器(ROM)是必不可少的。随着n 的增大,ROM 的大小是指数增加的,这将会耗用大量资源,有时甚至是不能实现的。在实际的 DDS 中,往往截断相位累加器的输出,取其高 p 位作为 ROM 的输入,则相位截断 B=n -p 。
    在这里插入图片描述

                               图 4相位截断的DDS模型
    

    上述基本DDS系统极为灵活,且具有高分辨率。只需改变M寄存器的内容,频率就可以立即改变,不会出现相位不连续。但是,实际DDS系统首先需要执行串行或字节加载序列,以将新的频率字载入内部缓冲寄存器,然后再载入M寄存器。这样就可以尽可能减少封装引脚数。新的频率字载入缓冲寄存器后,并行输出相位寄存器就会同步操作,从而同时改变所有位。加载相位缓冲寄存器所需的时钟周期数决定了输出频率的最大改变速率。
    2.2. 解释二
    若对一正弦波形进行采样,每周期为 m 个采样点,分别记为 1~m。 对应每次参考时钟 f c , 输出一个采样点,输出图中所示的一个周期的正弦,需要 m 个时钟周期,则输出的波形频率为 f a =f c/m。对于这种情况, 每次时钟到来时,相位累加器加 1 ,则就会在第 i 个时钟周期输出 第 i 个采样点( i = 1~m) ,第 m + 1 个时钟输出第 1 个采样点,以此循坏,这时的相位累加器实际上是步进为 1 的模 m 计数器。 如果每次时钟到来时, 总是间隔一个采样点输出,即相位累加器的步进为2 ,这时在第 i 个周期输出第 2i 个采样点,输出波形如图 4波形 b,显然波 形 b 的频率是 a 的 2 倍,即 f b = 2 f a 。
    综上所述,如果相位累加器的步进为 B,则输出波形的频率为 B×f a ,f a 是最小的输出频率称为频率分辨率或步进间隔,B 为频率控制字。给定不同的频率控制字即可输出不同的频率。频率输出公式为: f 0 = fc/m* B。
    在这里插入图片描述

                                                   图 5输出波形
    

    在实际设计中,如果累加器长度为N ,则可以有2N 个存储单元存储采样数据,如果我们 对一个周期的波形进行2N 个点的采样,即m = 2N , 此时输出频率f o 和系统时钟频率f c,相位累加器长度N 以及频率控制字B的关系为:f0 = fc*B/2N 。为了使波形输出不失真,根据奈奎斯特定理,B最高为2 N - 1 。另外要提高DDS 的精度,就需要分母越大越好,即采样点的个数越多,越接近实际波形。但实际上不可能提供如此之多的存储空间,这就需要对采样点进行量化。如图 4(c)所示,如果量化单位为K,则前K 个点的值总是相同的,为采样值1 ,第二组K 个采样点的值为采样值2 ,以此类推,第i 组K 个采样点的值为采样值i ,共需要m/K个存储单元 来存储m/K个采样点。

参考:
[1]. http://m.elecfans.com/article/574959.html
[2]. http://www.elecfans.com/news/dianzi/20171103574751.html
[3]. https://www.sohu.com/a/204979496_467791
[4]. https://www.bilibili.com/video/av99507362/
[5]. 王顺岭. 基于FPGA的低杂散直接数字频率合成技术研究[D]. 电子科技大学.

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐