4. ADC动态性能指标与噪声表征

静态指标(INL、DNL)描述的是直流或极低频下的转换准确性,而一旦输入信号频率升高,真正决定系统可用精度的是动态性能指标。它们全部来自同一个测量结果——对ADC输出做FFT得到的频谱。理解这些指标,本质上是理解“频谱上每一根谱线代表什么”。

一、从FFT频谱读出六个关键指标

设采样率 fs,采样点数 N,输入单音频率 fin(通常取相干采样,即 fin = M·fs/N,M 为与 N 互质的整数,避免频谱泄漏)。对加窗(如七阶Blackman-Harris)后的数据做FFT,得到幅度谱。频谱被划分为几个区域:

  • 基波(Fundamental):fin 处的谱线,功率记为 PS。
  • 谐波(Harmonics):2fin、3fin… 处的谱线,功率记为 P2、P3…,通常只统计到奈奎斯特频率以内。
  • 噪声底(Noise Floor):除基波、谐波和直流外的所有谱线功率之和,记为 PN。

由此定义:

  • SNR(信噪比) = 10·log10(PS / PN),只算噪声,不含谐波。它反映ADC在理想线性条件下的噪声水平。
  • THD(总谐波失真) = 10·log10((P2+P3+…)/PS),结果为负值,越负越好。
  • SINAD(信号与噪声失真比) = 10·log10(PS / (PN+P2+P3+…)),即噪声与谐波一起算。SINAD 永远不高于 SNR。
  • SFDR(无杂散动态范围) = 10·log10(PS / Pmax_spur),Pmax_spur 是最大单根杂散(可能是某次谐波,也可能是时钟馈通等非谐波杂散)。
  • ENOB(有效位数) = (SINAD − 1.76) / 6.02。它把SINAD折算成“等效多少位理想ADC”。
  • NSD(噪声谱密度) = 噪声功率折算到1 Hz带宽的值,单位 dBFS/Hz 或 nV/√Hz,用于评估宽带噪声和与输入幅度无关的本底。

其中 1.76 dB 来自理想量化噪声模型:理想N位ADC的SNR = 6.02N + 1.76 dB。因此ENOB的物理含义是:这块ADC在当前输入频率和幅度下,表现得像多少位的理想ADC。

ADC输出FFT频谱与动态指标对应关系 频率 (MHz) 幅度 (dBFS) 0 5 10 15 20 25 0 -40 -80 -120 噪声底 基波 f_in P_S (0 dBFS) 2f_in 3f_in 杂散 4f_in 指标计算关系 SNR = P_S / P_N THD = (P_2+P_3+…) / P_S SINAD = P_S / (P_N+P_2+P_3+…) SFDR = P_S / P_max_spur ENOB = (SINAD − 1.76) / 6.02

二、指标之间的内在联系

这些指标并非彼此独立。SNR 只关心噪声底,THD 只关心谐波,SINAD 是两者的综合,ENOB 是 SINAD 的另一种表达。因此有:

SINAD ≤ SNR,且 SINAD ≤ −THD(当谐波远大于噪声时,SINAD 趋近于 −THD)。SFDR 则可能由谐波或非谐波杂散决定,若最大杂散是二次谐波,则 SFDR 与 THD 中的二次项直接相关。

NSD 与 SNR 的关系为:SNR = 满量程功率 − NSD − 10·log10(BW),其中 BW 为奈奎斯特带宽 fs/2。NSD 越低,同样带宽下 SNR 越高。对于高分辨率ADC(如24位Σ-Δ),NSD 常以 nV/√Hz 给出,便于与前端驱动电路的噪声直接比较。

判断噪声来源的快速方法:若SNR随输入幅度下降而恶化,说明噪声以量化噪声为主;若SNR基本不随幅度变化,说明存在固定本底噪声(如时钟抖动、电源噪声);若THD随频率升高明显恶化,说明ADC内部非线性或驱动放大器失真主导。

三、用ADI评估板实测FFT并计算ENOB

以 ADI 的 AD7768-1(24位、256 kSPS Σ-Δ ADC)评估板为例,配合 SDP-H1 控制器和 ACE 软件。实测步骤如下:

  1. 信号源输出 1 kHz 正弦,幅度设为 −0.5 dBFS(约 2.9 Vpp 差分),经低通滤波后接入评估板模拟输入。
  2. ACE 软件中设置采样率 256 kSPS,抽取率 32,开启 sinc5 滤波器,采集 65536 点。
  3. 选择相干采样:fin = M·fs/N,取 M = 256,则 fin = 256×256000/65536 = 1000 Hz,满足相干条件。
  4. 软件自动加七阶 Blackman-Harris 窗并做 FFT,显示频谱和指标面板。

假设某次测量得到:SNR = 106.2 dB,THD = −112.5 dB,SINAD = 105.1 dB,SFDR = 108.3 dB。则:

ENOB = (SINAD − 1.76) / 6.02
     = (105.1 − 1.76) / 6.02
     = 103.34 / 6.02
     ≈ 17.17 位

即这块标称24位的ADC,在1 kHz、−0.5 dBFS条件下实际有效位数约17.2位。剩余位数被噪声和失真“吃掉”。若把输入频率升到10 kHz,SINAD可能降到98 dB,ENOB降至约16位,说明高频下性能下降。

四、从频谱到有效位数的实战换算

若手头没有自动计算ENOB的软件,也可以从频谱手动估算。方法如下:

  • 在频谱上读出基波峰值 PS(dBFS)。
  • 读出噪声底平均电平,换算到整个奈奎斯特带宽内的总噪声功率 PN。若噪声底平坦,PN ≈ 噪声底单bin功率 + 10·log10(N/2)。
  • 读出各次谐波功率,求和得 PH。
  • SINAD = PS − 10·log10(PN + PH)。
  • ENOB = (SINAD − 1.76) / 6.02。

例如,某16位ADC在100 kHz输入下,基波0 dBFS,噪声底平均−130 dBFS/bin,N=16384,则总噪声功率 ≈ −130 + 10·log10(8192) ≈ −130 + 39.1 = −90.9 dBFS。若谐波总功率−95 dBFS,则噪声加失真总功率 ≈ 10·log10(10−9.09 + 10−9.5) ≈ −87.6 dBFS,SINAD ≈ 87.6 dB,ENOB ≈ (87.6−1.76)/6.02 ≈ 14.3位。这与16位标称值相差约1.7位,属于正常范围。

注意:ENOB不是“ADC能分辨多少位”,而是在特定输入频率、幅度和带宽下的等效精度。数据手册中的ENOB通常标注测试条件(如 fin = 1 kHz,−0.5 dBFS),脱离条件谈ENOB没有意义。

五、指标与噪声治理的对应关系

当系统精度不达标时,动态指标能帮助定位问题:

  • SNR不足:检查参考电压噪声、时钟抖动、电源纹波、输入驱动噪声。降低这些噪声可直接提升SNR。
  • THD恶化:检查输入驱动放大器非线性、ADC输入共模范围、参考电压建立时间。选用高线性度差分驱动器可改善。
  • SFDR差但THD正常:说明存在非谐波杂散,如时钟馈通、数字串扰、电源开关频率耦合。需从布局和屏蔽入手。
  • NSD偏高:说明宽带本底噪声大,通常与ADC内部噪声或前端电阻热噪声有关,可通过降低带宽或选用低噪声器件改善。

掌握这些指标的读取与换算,就能把“频谱上看到的一堆峰”翻译成“系统还能做到多少位”,从而判断噪声治理是否有效。