DDS信号发生器-AD9834

电赛

简单DDS(Direct Digital Synthesis,直接数字频率合成)系统

主要包含几个关键步骤:

  1. 相位累加器
  2. 相位幅度转换器(通常是一个查找表ROM)
  3. 数模转换器(DAC)
  4. 低通滤波器

相位累加器与DDS调谐公式

对一正弦波形进行采样,若每周期有m个采样点,分别记为1~m,即对应每次参考时钟fc来到上升沿就输出一个采样点,则输出如图中所示的一个周期的正弦,需要m个时钟周期,即需要m*1/fc的时间。

也即,输出的波形频率为fa=fc/m。

此时,每次时钟信号到来时,相位累加器加1,就会在第i个时钟周期输出第i个采样点(i=1~m),第m+1个时钟周期输出第1个采样点,以此循环。这时的相位累加器是步进为1的模m计数器。

若每次时钟信号到来时,总是间隔一个采样点输出,即相位累加器的步进2,这时在第i个时钟周期输出第2i个采样点,m’是m的0.5倍,故输出的波形频率为fa‘=2fa=2fc/m。

图片

在实际设计中,相位累加器的单位是bits(位)。若相位累加器是N位(通常是24~48位)的,则有2N个存储单元来存储采样数据。如果我们队一个周期的波形进行2N个点的采样,即m=2N,此时输出频率fo、系统时钟频率fc、相位累加器长度N以及频率控制字B(即上文提到的,相位累加器的步进长度)的关系为:

此公式即为DDS调谐公式

直观显示相位累加器运行情况的一种方法是,将累加器运行看作一个相位轮:

图片

累加器状态具有周期性,显示为一个圆圈上的点。这些点表示累加器的各个相位状态。在本例中,为简单起见,假设累加器有 16 个状态。如上方的图所示,如果调谐字等于 1,那么每个时钟的步长增量均为 1,而且在整个周期内选中了所有状态。

相位轮的右侧显示的是每个状态的模拟输出。由于这是一个量化器件,因此模拟输出将保持其当前状态,直到时钟将相位轮推进到下一个状态。输出波形由包含 16 个值的单个量化正弦波周期组成。

在下方的图中,调谐字的值设置为 2。这时的相位轮上每隔一个状态被选中。对应的模拟输出由两个周期组成,每个周期有 8 个幅值,因此总共有 16 个状态。由于调谐字设置为 2,因此输出频率现在是之前所获值的两倍。

DDS 的输出频率由调谐字的值设定,并且按调谐字的值成比例地增加。采样率在系统时钟速率下保持不变,而且输出采样之间的时间恒定。输出频率取决于调谐字增量,因此随着调谐字的值增大,每个输出周期中的步长数会减少,从而增加了频率。调谐字可以增大到每个周期只有两个采样点,从而使 DDS 输出达到其奈奎斯特频率,即系统时钟速率的一半。通常,DDS 在设计上限制为输出频率总是小于奈奎斯特极限值。

采样与量化

奈奎斯特采样定理:采样率fs必须大于被测信号最高频率分量的两倍。

为了使波形输出不失真,利用DDS调谐公式与奈奎斯特采样定理,可推出B最高为2N-1。除此之外,要提高DDS的精度,需要分母尽可能地大。即采样点的个数越多,最终的输出波形越接近实际波形。

然而,实际上我们无法提供这么多的存储空间,故而需要对采样点进行量化

量化:就是把经过抽样得到的瞬时值将其幅度离散。即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示;或指把输入信号幅度连续变化的范围分为有限个不重叠的子区间(量化级),每个子区间用该区间内一个确定数值表示,落入其内的输入信号将以该值输出,从而将连续输入信号变为具有有限个离散值电平的近似信号 。

若量化单位为K,则前K个采样点的值相同,为采样值1;第二组K个采样点的值为采样值2,以此类推。第i组的K个采样点的值为采样值i,一共需要m/K个存储单元来存储m/K个采样点。

杂散

其来源之一是相位累加器的相位舍位。

现有的频率控制主要采用二进制频率控制原理(由于FPGA采用二进制的数据处理机制,且波形存储器使用了二进制寻址方式),故通常情况下m与K均为二进制整数,如m=2N。这就要求对计算结果进行十进制近似取舍,造成了波形发生器的输出频率以及频率分辨率存在无法消除的误差。

相位幅度转换器

相位累加器的输出作为波形存储器(通常是一个ROM)的索引。

ROM(Read-Only Memory,只读存储器)查找表是数字合成器(如DDS,Direct Digital Synthesizer)中用于将相位信息转换为幅度信息的关键组件。以下是ROM查找表的详细解释和作用:

  1. 存储波形数据:ROM查找表预先存储了波形的离散样本点数据。这些数据通常是通过数学计算或测量得到的,用于生成所需的波形,如正弦波、方波或其他复杂波形。

  2. 相位到幅度的转换:在DDS中,相位累加器的输出值(相位值)被用作ROM的索引。通过这个索引,可以从ROM中查找对应的幅度值。例如,如果相位累加器的输出值对应于正弦波的某个相位点,ROM查找表就会提供该相位点对应的正弦波幅度值。

  3. 实现波形生成:通过这种方式,DDS可以生成所需的波形。相位累加器不断累加,每次累加的结果都用来从ROM中查找相应的幅度值,从而生成连续的波形。

  4. 提高效率和精度:使用ROM查找表可以避免复杂的数学计算,提高波形生成的效率和精度。相比于实时计算波形,ROM查找表可以更快地提供波形数据,减少计算延迟。

  5. 灵活性:ROM查找表可以根据需要存储不同类型的波形数据,使得DDS系统能够灵活地生成多种波形。例如,可以存储正弦波、方波、三角波等不同波形的样本点数据。

  6. 实现调制功能:ROM查找表还可以用于实现波形的调制功能。通过改变相位累加器的输出值或直接修改ROM中的数据,可以实现频率调制、相位调制和幅度调制等。

  7. 硬件实现:在实际硬件中,ROM查找表可以是单独的存储芯片,也可以是FPGA或其他数字电路中的一部分。通过硬件实现,ROM查找表可以提供快速的访问速度和稳定的性能。

总之,ROM查找表在DDS系统中起到了将相位信息转换为幅度信息的关键作用,是实现高效、高精度波形生成的基础。

从ROM中查找对应的幅度值。这个查找表预先存储了波形的离散样本点,相位累加器的输出值对应于这些样本点中的一个,从而实现了从相位到幅度的转换。

数模转换器

相位幅度转换器的输出会发送到数模转换器(DAC),并转换为模拟波形。

由于DAC的输入是一系列采样值,因此输出具有量化步长。这些步长在频域内以采样率的倍数产生频谱响应

量化噪声:在DAC中,量化步长决定了数字信号的分辨率。每个量化级别对应一个特定的模拟电压。量化步长越小,表示的模拟电压越精细。量化噪声是由于信号在量化过程中不能精确表示而产生的误差。这种噪声在频域内表现为一个宽带噪声,其频率成分可以扩展到采样率的倍数。

频谱泄露:由于量化步长的存在,原始信号的某些频率成分可能无法被完美地表示。这会导致信号的频谱在采样率的整数倍处产生泄露,即信号的频谱在这些频率点上出现不期望的响应。这种现象称为频谱泄露,是量化步长在频域内产生响应的一种表现。

因此,需要后接一个低通滤波器来抑制这些不需要的频谱响应。

使用输出低通滤波器的原因

DAC输出波形由于其阶跃特性而富含谐波。因此,必须使用低通滤波器来消除这些频谱谐波,以及 DDS 中其他工艺产生的其他杂散频率响应。

例如,下图显示了一个器件在时钟频率为 fc、输出频率小于 fc/2 时的 DDS 输出频谱。该输出频谱显示了输出频谱线 fout,及其高于和低于时钟频率的镜像频率,还有高达和超过第三次谐波的所有谐波。

图片

DDS 输出频率范围为 0 Hz 到奈奎斯特极限 fc/2。sin(x)/x 整形是由于时域中的量化信号而引起,如图所示。sin(x)/x 函数的零值发生在时钟频率及其所有谐波处。要在输出范围内提高幅度平坦度,可通过幅值校正来取消 sin(x)/x 整形。

为了显著减小超过奈奎斯特频率的频谱成分幅度,采用了具有高于 DDS 频率范围的锐截止特性的低通滤波器。如果将 DDS 频率范围扩展到奈奎斯特频率,则滤波器需要无限陡的截止斜率,以便排除时钟频率的低镜像频率,否则会与奈奎斯特频率重叠。这也是 DDS 频率范围很少扩展到奈奎斯特频率的一个原因。

AD9834

元件基础介绍

AD9834是一个集成的DDS系统。

​ AD9834是一款75 MHz、低功耗DDS器件,能够产生高性能正弦波和三角波输出。其片内还集成一个比较器,支持产生方波以用于时钟发生。当供电电压为3 V时,其功耗仅为20 mW,非常适合对功耗要求严格的应用。
​ AD9834提供相位调制频率调制功能。频率寄存器为28位;时钟速率为75 MHz,可以实现0.28 Hz的分辨率。同样,时钟速率为1 MHz时, AD9834可以实现0.004 Hz的分辨率。影响频率和相位调制的方法是通过串行接口加载寄存器,然后通过软件或FSELECT/PSELECT引脚切换寄存器。
  AD9834通过一个三线式串行接口写入数据。该串行接口能够以最高40 MHz的时钟速率工作,并且与DSP和微控制器标准兼容。
  该器件采用2.3 V至5.5 V电源供电。模拟和数字部分彼此独立,可以采用不同的电源供电;例如, AVDD可以是5 V,而DVDD可以是3 V。
  AD9834具有控制休眠的引脚(SLEEP),支持从外部控制断电模式。器件中不用的部分可以断电,以将功耗降至最低。例如,在产生时钟输出时,可以关断DAC。
  该器件采用20引脚TSSOP封装。

功能框图

数据手册所示功能框图如下,红圈部分即是上文所述的,需要利用软件切换的寄存器之一。

图片

引脚设置

引脚如下:

图片

各引脚功能如下:

模拟信号和基准电压源

引脚编号 引脚名称 描述
1 FS ADJUST 满量程调整控制。此引脚和AGND之间连接一个电阻(RSET),从而决定满量程DAC电流的幅度。RSET与满量程电流之间的关系如下:IOUTFULL SCALE = 18 × FS ADJUST/RSET【FS ADJUST = 1.15 V(标称值), RSET = 6.8 kΩ(典型值)】
2 REFOUT 基准电压输出。AD9834通过此引脚提供1.20V内部基准电压源。
3 COMP DAC偏置引脚。此引脚用于对DAC偏置电压进行去耦。
17 VIN 比较器输入。可利用比较器从正弦DAC输出产生方波。DAC输出应经过适当滤波,然后再施加于比较器,以改善抖动性能。当控制寄存器中的Bit OPBITEN和Bit SIGN/PIB置1时,比较器输入端连接到VIN。
19,20 IOUT,IOUTB 电流输出。这是高阻抗电流源。应在IOUT和AGND之间连接一个标称值为200 Ω的负载电阻。IOUTB最好应通过一个大小为200 Ω的外部负载电阻连接到AGND,但也可直接与AGND相连。此外还建议通过一个20 pF电容连接到AGND,以防出现时钟馈通

时钟馈通(Clock Feedthrough)是一种在数字电路中常见的问题,特别是在高速数字电路设计中。它通常发生在时钟信号的路径上,由于高速信号的快速切换,可能会产生一些不希望的信号传输或干扰。

电源

引脚编号 引脚名称 描述
4 AVDD 模拟部分的正电源,范围是2.3V~5.5V。应在AVDD与AGND之间连接一个0.1μF去耦电容。
5 DVDD 数字部分的正电源,范围是2.3V~5.5V。应在DVDD与DGND之间连接一个0.1μF去耦电容。
6 CAP/2.5V 数字电路采用2.5V电源供电。当DVDD超过2.7 V时,此2.5 V利用片内调节器从DVDD产生,该调节器需要在CAP/2.5V至DGND之间连接一个典型值为100 nF的去耦电容;如果DVDD小于或等于2.7 V,则CAP/2.5 V应与DVDD直接相连。
7 DGND 数字地。
18 AGND 模拟地。

数字接口和控制

引脚编号 引脚名称 描述
8 MCLK 数字时钟输入。 DDS输出频率是MCLK频率的一个分数,分数的分子是二进制数。输出频率精度和相位噪声均由此时钟决定。
9 FSELECT 频率选择输入。 FSELECT控制相位累加器中使用的具体频率寄存器(FREQ0或FREQ1)。可使用引脚FSELECT或Bit FSEL来选择要使用的频率寄存器。使用Bit FSEL来选择频率寄存器时, FSELECT引脚应与CMOS高电平或低电平相连。
10 PSELECT 相位选择输入。 PSELECT控制将增加到相位累加器输出的具体相位寄存器(PHASE0或PHASE1)。可使用引脚PSELECT或Bit PSEL来选择要使用的相位寄存器。当相位寄存器由Bit PSEL控制时, PSELECT引脚应与CMOS高电平或低电平相连。
11 RESET 高电平有效数字输入。RESET可使相应的内部寄存器复位至0,以提供中间电平的模拟输出。 RESET不影响任何可寻址寄存器。
12 SLEEP 高电平有效数字输入。当此引脚处于高电平时, DAC关断。此引脚功能与控制位SLEEP12相同。
13 SDATA 串行数据输入。 16位串行数据字施加于此输入。
14 SCLK 串行时钟输入。数据在每个SCLK下降沿逐个输入。
15 FSYNC 低电平有效控制输入。这是输入数据的帧同步信号。当FSYNC变为低电平时,即告知内部逻辑,正在向器件中载入新数据字。
16 SIGN BIT OUT 逻辑输出。比较器输出通过此引脚提供,或者可通过此引脚输出NCO的MSB。通过将控制寄存器中的Bit OPBITEN置1,可使能此输出引脚。 Bit SIGN/PIB确定通过该引脚输出的是比较器输出还是NCO(数控振荡器,用以生成特定频率与相位的正弦波)的MSB。

工作原理

在简单DDS系统的基础上,AD9834的内部电路包含:数控振荡器(NCO)、频率调制器、相位调制器、SIN ROM、DAC、比较器以及稳压器。

数控振荡器和相位调制器

该子电路由两个频率选择寄存器、一个相位累加器、两个相位偏移寄存器和一个相位偏移加法器组成。 NCO的主要元件是一个28位相位累加器。连续时间信号的相位范围为0 π至2 π。在此数值范围之外,正弦函数以周期方式不断重复。

因此,在AD9834中, 2π = 228。同样, ΔPhase项也会扩大至此数值范围:0 < ∆Phase < 228− 1
将这些带入前面的公式可得:
fo = ∆Phase × fMCLK/228
其中, 0 < ∆Phase < 228 − 1.
相位累加器的输入可以从FREQ0寄存器或FREQ1寄存器进行选择并由FSELECT引脚或FSEL bit控制。 NCO本身会产生连续相位信号,因此在频率之间切换时应避免出现任何输出不连续。
在NCO之后,可以使用12位相位寄存器添加一个相位偏移来执行相位调制。这些相位寄存器之一的内容会增加到NCO的MSB。 AD9834具有两个相位寄存器,且这两个寄存器的分辨率均为2π/212

SIN ROM

要使用NCO的输出,必须先将其从相位信息转换成正弦数值。相位信息可以直接映射至幅度,因此SIN ROM可以将数字相位信息用作查找表的地址,并将相位信息转换成幅度。

虽然NCO包含28位相位累加器,但NCO的输出会被截断至12位。使用相位累加器的全分辨率不仅不切实际,也根本不必要,因为这要求查找表具有228个条目。只需具有足够的相位分辨率,使得因截断而产生的误差小于10位DAC的分辨率。这就要求SIN ROM的相位分辨率比10位DAC高出两位。
可使用控制寄存器中的OPBITEN和MODE bits来使能SIN ROM。

用AD9834实现信号调制

AM调制(调幅)

—参考资料:cn0156_cn.pdf (analog.com)

由引脚介绍可知,AD9834的FS ADJUST引脚(标称值,FS ADJUST = 1.15 V)是模拟输入端口,接受电流,用于控制满量程DAC输出电流的幅度,其一般做法是改变RSET的值,其标准值是6.8kΩ。

但也可以用一个外围电路来调制AD9834的幅度输出,ADI官网有一份技术文档,使用的是可调的外围DAC电路:

图片

参赛板上的外围电路如图所示,是霍兰德电流源:

图片

其中DDS_AMP接在单片机的DAC输出引脚上。

—参考资料:howland电流源公式推导-CSDN博客

图片

图片

则霍兰德电流源的电流输出为:

又由大板的电路图知:V2=DDS_AMP(接单片机PA6,DAC输出),V1=GND=0,R79=18kΩ。

故有:

其中V2即为单片机的DAC输出。

FSK调制(频率键控)

FSK是通过改变载波的频率来传输信息的一种调制方式。使用AD9834实现FSK的步骤如下:

  • 设置两个频率:在AD9834中设置两个不同的频率寄存器,分别对应二进制”1”和”0”。
  • 频率切换:根据要传输的数据,使用频率选择引脚或控制位在两个频率寄存器之间切换。

PSK调制(相位键控)

PSK是通过改变载波的相位来传输信息的一种调制方式。使用AD9834实现PSK的步骤如下:

  • 设置频率:首先,设置AD9834的频率寄存器,以确定载波的基本频率。
  • 相位调制:使用AD9834的相位调制功能,根据要传输的数据改变相位累加器的初始相位值。例如,数据”1”可以对应相位累加器增加一个特定的相位偏移,而数据”0”则不增加偏移。

Author: MosiS

Permalink: http://asuka0110.github.io/mosis/e6495819.html