直接数字合成技术(DDS)是一种频率合成技术,用于产生周期性波形。目前,从低频到上百 MHz 的正弦波、三角波产生,绝大多数采用的是 DDS 芯片完成,甚至于买来的信号源,皆是采用 DDS 实现。
 
为了便于大家理解,现假设 DDS 有一个固定的时钟 MCLK——36MHz,那么每个脉冲的周期则为 27.78ns。下面再为大家附上一个正弦波的“相位—幅度”表格,它具有足够细密的相位步长,比如 0.01°,那么一个完整的正弦波表,就需要 36000 个点。
 
如下表 1 所示。N 为表格中数据点序号,phase 为该点对应的正弦波相位,Am 对应该相位处的正弦波计算值,介于 -1 ~ +1 之间。Data_10 为正弦波计算值转换成 10 位数字量的 10 进制表示,用一个 10 位 DAC 描述正弦波,sin(0°)应为 DAC 全部范围的中心,即 512。sin(90°)则为最大值 1023,而 sin(270°)则为最小值 0。

 

表 1:相位—幅度

 

从表 1 可以看出,在相位从 0°开始,一直到第 12 个点(即序号 11,相位为 0.11°),虽然正弦波幅度一直在增加,但始终没有增加到全幅度的 1/1024,即 2/1024=0.001953125,因此用 DAC 表达一直为 512,直到第 13 个点(序号 12,相位 0.12°),正弦波计算值为 0.0020944,DAC 才变为 513。这一段的细微变化(即前 100 个点)在下图 1 已给出。尽管管中窥豹,但可以想象,这 36000 个点记录了一个标准正弦波的全部。

 

图 1. DDS 表中 36000 点正弦波的前 100 点

 

下面再将此表首尾衔接。假设相位步长为 m=1,则 DAC 以 MCLK 为节拍,依序发作:第一个 CLK 时,DAC 输出 N=0 时对应的 DATA_OUT,即 512,第 2 个 CLK 时,DAC 输出 N=1 时对应的 DATA_OUT,也是 512……,可以想象,36000 个 CLK 后,一个完整的正弦波被输出了一遍。从 36001 个 CLK 开始,又一次循环开始。如此往复,一个个正弦波接连不断被发作出来。
 
现在算一算,这个发作正弦波的频率是多少?显然,36000 个 CLK 为正弦波的周期,(即 1ms)其频率为 1kHz。公式为:

 

 

对上式参量的理解极为重要:其中,TMCLK 为 DDS 主振时钟周期,即 1/36MHz,约为 27.78ns,Nmax 为表格总点数,m 为循环增加中的步长,如果 m=1 则意味着对表格一个不落的扫一遍,如果 m=2,则意味着隔一个扫一遍。m 越大间隔越大,扫完需要的时间越短。那么,就代表着完成一次表格的全扫描需要的动作次数。DDS 的核心思想就建立在上述公式上。改变步长 m,可以改变输出频率:


 
① 当 m=1,则输出最低频率,即:

 

 

②当 m 每增加 1,则输出频率增加,这也是 DDS 能够提供的频率最小分辨:

 

 

③ 当 m 增加到表格点数 Nmax 的 1/1800,即 20 时,说明每次 DAC 发作,会跳过表格中的 20 个点,或者说一个扫完一个正弦波全表,只需要 1800 个点。此时,样点变化规则如图 1 中的红色圆点。可以算出,这样输出正弦波的频率应为:

 

 

图 2 是三种情况下扫出的正弦波图,分别是 m=1,m=30,m=300,可以看出随着 m 的增大,输出频率也在同比例增加。

 

图 2. 三种 m 获得的三种频率正弦波

 

④ 当 m 增大到全表总数 Nmax 的 1/4,即 9000 时,说明只需要 4 个点就可以扫完正弦波全表,此时 DAC 输出的正弦波,其实已经不再是正弦波,而是一个标准的三角波了,该波形只有 4 个相位点,分别是 0°,90°,180°,270°。
 
⑤ 样点总数除以 m 不等于整数可以吗?答案是,可以。为了显示清晰,我们假设两种情况,m=40,它可以被 36000 除尽,为 900,即每 900 个点可以扫描完正弦波表;m=41,不能被 36000 除尽,为 878.0487804878……。由此得到两组数据如下表。

 

 

可以看出,对 m=40 的情况,第 900 点的相位为 360°,即重新开始了又一个正弦波。它的周期为:

 

 

而对 m=41,第 878 点,相位为 359.98°,属于第一个周期,第 879 点,相位为 360.39°,开始了一个新周期,但是起点不再是 0°,而是 0.39°。这样,它的每个正弦波,与紧邻的另一个正弦波,其相位都是不同的。但是,这丝毫不会影响总体上呈现出如下频率:

 

 

由此数据得到的波形如图 3 所示。你能看出 41kHz 正弦波,其第二个周期与第一个周期有什么不同吗?你根本看不出。

 

图 3. m=40 和 41 得到的正弦波

 

DDS 内核组成
DDS 技术的核心由相位累加器 PA,相位幅度表和数模转换器 DAC 组成。以一个 28 位数的相位累加器为例,它可以计数 0~228,或者说,它的相位表点数为 228=268435456 点,远比 36000 样点多得多,这说明实际的 DDS 在相位分辨上比前述举例更加细密。
 
使用者需要输入一个计数步长 m,当然 m 一定要小于 228,此后外部时钟 MCLK 每出现一个脉冲,则 PA 完成一次累加。如图 4 所示,红色秒针以 m 为步长,逆时针旋转,它完成一个周期 360°的旋转,需要的时间为:而红色秒针完成一个周期 360°的旋转,正好输出一个完整周期正弦波,因此,正弦波频率为:当 m 取 1 时,可以得到最低输出频率为:理论上,当 m 取 227,可以得到最高输出频率为:m 每增加 1,则会使得输出频率获得一个增量,即为最小输出频率:图 4 中,内部相位累加器具有 28 位,而外部相位累加器则不需要如此精细,一般仅需要 14 位即可。这就像你干活挣钱,每件可以挣钱 1 分,第一天干了 272851 件,折合 272.851 元,第二天干了 291237 件,折合 291.237 元,这可以精细计数,但到了发工资的时候,一个月累计 6164.875 元,可能你会得到 6164.9 元,就不需要如此精细了,因为这种精细是需要成本的。
 
图中的相位幅度表,是靠存储器实现的,存储器数量太大,自然会导致 DDS 芯片成本升高。而累加器,做成 28 位,仅仅是多几个级联的计数器而已。另外,对 DDS 而言,输出正弦波采用的 DAC,也不需要位数过高,多数为 10 位,也有 14 位的。

 

图 4. DDS 工作原理

 

为了用户使用方便,DDS 内部还具有相位失调寄存器,这可以让 DDS 输出从某个规定相位开始。具体的 DDS 内核组成,还应以具体芯片为准,此处不一一赘述。


DDS 技术的优势与弊端 
DDS 的优势在于可以发出从极低频率到极高频率范围的正弦波,且频率增量极低。以 AD9834 为例,它具有 28 位的超精细相位累加器,可承受最高 75MHz 的 MCLK,因此,在 75MHz 主振情况下,它的频率最小分辨为 0.279Hz,可以发出从 0.279Hz 到 37.5MHz,频率步长为 0.279Hz 的正弦波。至于输出频率到底是多少,完全取决于使用者设置的 m。在 DDS 核心技术中,可以实现如下功能:
 
可以精细选择输出频率,实现从低到高的频率选择。


可以快速跳频,且能够保证相位连续,这在模拟信号发生器中是难以实现的。


可以实现正交输出,可以实现相位设置。


可以实现正弦波、三角波,配合比较器可以实现同频同相方波输出。
 
此外,在发出高质量正弦波中,DDS 技术无法实现超低失真度,是其最大的弊端。DDS 技术中采用的 DAC 最高为 14 位,其积分非线性 INL 不可能做到很小。其次,其 DAC 一般均采用普通 DAC,没有为降低失真度做出更多的考虑。且目前的 DDS 实现的正弦波输出,其失真度一般只能做到 -80dB 左右。