首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >DDS(直接数字频率合成器)存在的意义

DDS(直接数字频率合成器)存在的意义

作者头像
云深无际
发布2026-07-27 20:31:33
发布2026-07-27 20:31:33
1160
举报
文章被收录于专栏:云深之无迹云深之无迹

这几天采购的时候,顺手买了个小模块,回来把玩了一下,觉得好好玩~

就是一个 DDS
就是一个 DDS

就是一个 DDS

可以衍生很大一部分内容,在没有这种数字器件出现之前,波形发生器可以用:

这种纯模拟的东西搓
这种纯模拟的东西搓

这种纯模拟的东西搓

早就都停产了,还在卖,服了
早就都停产了,还在卖,服了

早就都停产了,还在卖,服了

内部如此
内部如此

内部如此

ICL8038 的内部核心是一个恒流充放电的振荡器;通过内部两个恒流源交替对 Pin 10 的外部定时电容进行充电和放电,电容两端的电压随时间线性上升和下降,从而直接在 Pin 3 产生三角波

控制充放电开关的内部触发器随之翻转,在 Pin 9 产生同步的方波;产生的三角波在芯片内部经过一个非线性正弦波近似网络(由多对微型晶体管和二极管组成)进行平滑拟合,最终在 Pin 2 输出低失真度的正弦波

说回DDS

上面也看到了,使用的时候要不停的使用各种旋钮调节,还得盯着仪器看信号到了感兴趣的没有,总之就是有些笨逼的,但是在一些低成本的地方还是可以使用的,但是只能最多 300K,这就有些拉了。

那就聊聊 DDS 存在的含义,从 9833 说起:

可以概括成一句话:

用一个稳定时钟,低成本、低功耗地长期产生频率和相位高度可控的周期信号,而不需要MCU逐点计算并不断给DAC发送数据。

这种产品是专门解决“稳定、连续、可快速调频调相的周期信号”问题。

真实的研发环境,没信号发生器得死
真实的研发环境,没信号发生器得死

真实的研发环境,没信号发生器得死

当然了,设计微弱信号这一块还是得非常微弱的信号源才可以~

如果没有DDS,怎样产生正弦波?

用MCU产生正弦波,通常需要:

代码语言:javascript
复制
正弦采样表
    ↓
定时器触发
    ↓
DMA搬运
    ↓
DAC逐点输出
    ↓
低通滤波器

MCU必须保存波形数据,并按照严格时间间隔不断输出,输出频率为:

例如DAC更新率1 MSPS、每周期1000点:

想微调频率,要么改变DAC更新率,要么改变点数,还要处理:定时器分频误差,DMA缓冲,CPU资源,波形切换,相位连续性,数据抖动,多通道同步,总之为了个波形烧坏了🧠。

DDS把这些功能做进了一颗芯片

DDS内部自动完成:

代码语言:javascript
复制
外部时钟
   ↓
相位累加器
   ↓
正弦查找表
   ↓
DAC
   ↓
模拟波形

MCU只需要偶尔写一个频率字:

写完之后,DDS会自己永久运行,MCU即使不再发送数据,波形仍然持续输出。

DDS最重要的价值不是“能输出正弦波”

正弦波并不难产生,真正有价值的是下面几项。

频率分辨率高

AD9833使用28位相位累加器,25 MHz MCLK时:

输出1 MHz附近时,也能以约0.093 Hz为单位调节。(这些以后会详细解读)

如果降低MCLK到1 MHz:

普通RC振荡器、555或简单MCU定时器很难同时做到这种数字可编程精细度。

输出频率由参考时钟决定

DDS输出频率与MCLK保持严格数学关系:

只要MCLK稳定,输出频率就稳定。

例如使用高稳定度TCXO,DDS输出的所有频率都会继承这个时钟的相对准确度。

切换频率时可以保持相位连续

普通信号发生方式切换频率时,可能重新从波形表第0点开始,造成波形突然跳变;但DDS切换频率时,通常不清除相位累加器,只改变每个时钟前进的步长:

切换前:每次走10步 切换后:每次走20步 当前位置:不变

所以波形相位可以连续,只是频率发生改变。

相位可以数字控制

AD9833有12位相位控制:

可以设置:0°,90°,180°,270°,以及任意相位偏移。

几乎不占用MCU实时资源

MCU只需通过SPI发送几个16位控制字。

设置完成后:不需要持续中断;不需要DMA循环;不需要保存正弦表;不需要实时计算三角函数;不会因其他程序延迟而中断波形;所以一颗很小的MCU就能控制稳定信号源。

只是接口抽象,3 口 SPI
只是接口抽象,3 口 SPI

只是接口抽象,3 口 SPI

ADALM2000

M2K是ADI推出的一个教育工具,里面用RF的DAC做了很好的双通道任意波形发生器,功能比AD9833强,当然可以直接产生波形;但二者定位不同。

项目

AD9833

ADALM2000

本质

嵌入式DDS芯片

USB软件仪器

是否需要电脑

不需要

通常需要

功耗

很低

较高

体积

可装入产品PCB

独立仪器

输出波形

固定正弦/三角/方波

任意波形

频率控制

28位DDS频率字

数字波形发生器

独立连续运行

可以

依赖仪器配置

适合最终产品

主要用于实验

测量能力

没有

示波器、FFT、网络分析等

M2K虽然可以直接替代AD9833输出信号,但这样就无法研究:DDS频率字,相位累加原理,DDS杂散,MCLK穿透,输出负载能力,重建滤波器这些高级的功能。

为什么不用模拟振荡器?

模拟振荡器也能产生正弦波,例如文氏桥振荡器。

但改变频率通常需要改变:电阻,电容,开关,电位器

其频率为:

容易受到无源器件杂散参数的影响,DDS则通过写数字寄存器改变频率,重复性和自动化能力明显更好。

模拟振荡器可能有更低的宽带噪声或更纯净的波形,但DDS更适合数字控制和扫频。

DDS用处

首先可以做传感器交流激励:DDS → 传感器 → 放大器 → ADC → 同步解调(交流激励可以把测量信号从直流附近搬到噪声较低的频率,再用锁相算法恢复。)

阻抗和频率响应测量
代码语言:javascript
复制
DDS逐点扫频
    ↓
被测电路
    ↓
ADC同时测输入和输出
    ↓
计算增益与相位

得到:

后记

DDS器件存在的核心意义就是:以很低的嵌入式成本,把稳定时钟转化为频率、相位可精确编程的连续模拟激励信号。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 说回DDS
  • 如果没有DDS,怎样产生正弦波?
  • DDS把这些功能做进了一颗芯片
  • DDS最重要的价值不是“能输出正弦波”
    • 频率分辨率高
  • 输出频率由参考时钟决定
  • 切换频率时可以保持相位连续
  • 相位可以数字控制
  • 几乎不占用MCU实时资源
  • ADALM2000
  • 为什么不用模拟振荡器?
  • DDS用处
    • 阻抗和频率响应测量
  • 后记
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档