DDS的基本原理

直接数字合成技术(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。

DDS的基本原理_第1张图片
表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个点记录了一个标准正弦波的全部。

DDS的基本原理_第2张图片
图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,可以改变输出频率:

1)当m=1,则输出最低频率,即:
在这里插入图片描述

2)当m每增加1,则输出频率增加,这也是DDS能够提供的频率最小分辨:
在这里插入图片描述

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

图2是三种情况下扫出的正弦波图,分别是m=1,m=30,m=300,可以看出随着m的增大,输出频率也在同比例增加。
DDS的基本原理_第3张图片
图2. 三种m获得的三种频率正弦波

4)当m增大到全表总数Nmax的1/4,即9000时,说明只需要4个点就可以扫完正弦波全表,此时DAC输出的正弦波,其实已经不再是正弦波,而是一个标准的三角波了,该波形只有4个相位点,分别是0°,90°,180°,270°。

5)样点总数除以m不等于整数可以吗?答案是,可以。为了显示清晰,我们假设两种情况,m=40,它可以被36000除尽,为900,即每900个点可以扫描完正弦波表;m=41,不能被36000除尽,为878.0487804878……。由此得到两组数据如下表。
DDS的基本原理_第4张图片

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

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

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

DDS的基本原理_第5张图片
图3. m=40和41得到的正弦波

你可能感兴趣的:(DDS的基本原理)