Sigma-Delta ADC调制器:一阶与二阶调制器、噪声整形、稳定性分析

好,咱们今天聊聊Sigma-Delta调制器。说实话,这是ADC里最有意思的部分之一。我当年刚接触这玩意儿时,觉得它像个黑魔法——明明量化器只有1位,却能做出16位甚至更高的精度。后来才明白,核心就四个字:噪声整形。

一阶Sigma-Delta调制器

先看最简单的结构。一阶调制器,说白了就是一个积分器加一个量化器,再通过反馈把输出拉回来。我习惯把它理解成「误差累积器」——每次量化产生的误差,不会直接丢掉,而是被积分器记住,在下一次采样时补偿回来。

核心公式:

Y(z) = z⁻¹·X(z) + (1 - z⁻¹)·E(z)

信号是延迟一拍通过,噪声却被乘以一个高通滤波器 (1 - z⁻¹)。

为什么会这样?你想想看,积分器对输入信号做累加,但对量化误差来说,它相当于一个差分器。嗯,这里要注意:信号和噪声的传递函数不一样,这就是噪声整形的本质。

我在项目中遇到过一个问题:一阶调制器在低频时效果很好,但一旦输入信号接近满幅,或者频率稍微高一点,性能就急剧下降。后来查资料才发现,一阶调制器的噪声整形能力有限——每倍频程只有6dB的衰减。说白了,它只能把噪声往高频推,但推得不够远。

实战经验:

一阶调制器适合低频、低精度的场景。比如温度传感器、慢速数据采集。如果你需要16位以上的精度,老老实实用二阶或更高阶。

二阶Sigma-Delta调制器

二阶调制器,就是在积分器后面再串一个积分器。结构上只多了一个积分器,但效果天差地别。

核心公式:

Y(z) = z⁻¹·X(z) + (1 - z⁻¹)²·E(z)

噪声被乘以 (1 - z⁻¹)²,低频衰减能力提升到每倍频程12dB。

我记得第一次仿真二阶调制器时,看到频谱图里低频噪声被压得那么低,心里直呼「真香」。但别高兴太早——二阶调制器有个致命问题:稳定性。

为什么会不稳定?因为两个积分器串联,相位裕度会急剧下降。如果反馈系数没调好,调制器会进入极限环振荡。我曾经在流片前没仔细做稳定性仿真,结果芯片回来一测,输出全是周期性的尖峰,根本没法用。嗯,从那以后我再也不敢跳过稳定性分析了。

噪声整形的本质

噪声整形,说白了就是「把低频噪声搬到高频去」。为什么能这么做?因为调制器里的积分器对低频信号增益很大,对高频信号增益很小。量化误差在低频时被积分器放大,然后通过反馈抵消掉;在高频时积分器增益小,误差就漏过去了。

我习惯用频谱图来理解:

  • 一阶调制器:噪声以20dB/decade的斜率上升
  • 二阶调制器:噪声以40dB/decade的斜率上升
  • 三阶调制器:噪声以60dB/decade的斜率上升

但阶数越高,稳定性越难保证。这是个典型的trade-off。

避坑指南:

我曾经在二阶调制器里用了太大的积分器增益,结果仿真时发现输出波形一直在振荡。后来把增益从2降到1.5,才稳定下来。记住:稳定性比性能更重要。一个不稳定的调制器,精度再高也没用。

稳定性分析

稳定性分析,我一般用两种方法:

  1. 根轨迹法:看闭环极点在z平面上的位置。所有极点必须在单位圆内。
  2. 描述函数法:把量化器近似成一个增益,然后分析线性系统的稳定性。

实际项目中,我更喜欢用仿真来验证。给一个阶跃信号,看输出是否能在几个周期内收敛。如果输出一直在振荡,说明稳定性有问题。

稳定性判据(经验值):

调制器阶数 最大稳定输入幅度 推荐过采样率
一阶 0.9 64~128
二阶 0.8 128~256
三阶 0.7 256~512

你想想看,为什么高阶调制器的最大稳定输入幅度更低?因为积分器多了,反馈环路更容易振荡。所以高阶调制器通常需要更保守的系数设计。

代码示例:二阶调制器的Verilog-A模型

下面是我常用的二阶调制器行为级模型。注意积分器的系数要仔细调,我一般用1.5和0.5的组合。

// 二阶Sigma-Delta调制器行为模型
// 作者:资深工程师
// 注意:系数需要根据稳定性调整

`include "disciplines.vams"

module sd_modulator_2nd (out, in, clk);
  input in, clk;
  output out;
  electrical in, clk, out;
  real x1, x2, fb, err;
  integer q;

  analog begin
    @(cross(V(clk) - 2.5, +1)) begin
      // 第一级积分器
      x1 = x1 + (V(in) - fb) * 1.5;
      // 第二级积分器
      x2 = x2 + (x1 - fb) * 0.5;
      // 量化器(1位)
      if (x2 > 0) q = 1;
      else q = -1;
      // 反馈
      fb = q * 1.0;
      // 输出
      V(out) <+ transition(q * 3.3, 0, 1n);
    end
  end
endmodule

调试技巧:

我习惯先跑一个DC输入仿真,看输出码流的平均值是否等于输入。如果平均值偏差太大,说明积分器系数有问题,或者量化器阈值没设对。

知识体系结构图

下面这张图是我自己总结的,把Sigma-Delta调制器的核心逻辑串起来了。你一看就明白。

Sigma-Delta调制器知识体系 一阶调制器 二阶调制器 高阶调制器 增加积分器 继续增加 噪声整形 一阶:20dB/decade | 二阶:40dB/decade | 三阶:60dB/decade 稳定性分析 根轨迹法 | 描述函数法 | 时域仿真 实战经验 系数选择 | 过采样率 | 极限环避免 阶数越高越难稳定 理论指导实践 核心:噪声整形 + 稳定性 = 高性能Sigma-Delta ADC

这张图把一阶、二阶、高阶调制器的关系,以及噪声整形和稳定性分析的位置都标清楚了。你照着这个思路去学,不会乱。

本章小结:

  • 一阶调制器:结构简单,噪声整形能力有限(6dB/oct)
  • 二阶调制器:噪声整形能力翻倍(12dB/oct),但稳定性变差
  • 噪声整形:把低频噪声推到高频,靠后级数字滤波器滤除
  • 稳定性:高阶调制器必须仔细设计系数,否则会振荡

好了,这一章就到这里。记住我的一句话:Sigma-Delta调制器的设计,本质是在噪声整形和稳定性之间找平衡。你把这个平衡点找好了,剩下的就是细节问题。


公众号:蓝海资料掘金营,微信deep3321