理解ADC:信噪比SNR的天花板是什么?附带介绍一下ENOB
前言
我们今天从理想 ADC 说起,它只有一个噪声源 —— 量化噪声( Quantization noise ),这个噪声决定了 ADC 信噪比的“天花板”,并引出 SNR、ENOB的介绍。
量化噪声
所有的 ADC 都会产生量化噪声,这是将连续的模拟信号变成离散的数字信号的必然结果,即使它是完美的理想 ADC。
量化噪声与 ADC 位数( bits )有关,位数为 N 位的 ADC 将其量程分解为 N 份,每份的大小记为 Q。
列举一个量程为 5V 的 2-bit ADC 的例子,2-bit将量程分为 4 份,对应 Q = 5 / 2^2 = 1.25 V:
图中,右上坐标系的横坐标表述真实输入信号(Input voltage),纵坐标(左)表示 ADC 量化信号(Quantized voltage),纵坐标(右)表示 ADC 转化后的二进制代码(Output code)。右下坐标系表示误差(Error)。
2-bit 的 ADC 分辨率很低,所以很容易看出误差。比如,当输入电压为 0V,输出二进制为 00 ,这个代码代表的是 0.625V,因此与输入信号相差 -0.625V。
我们可以列举几个典型的输入信号情况如下:
真实输入电压(V) | ADC 二进制代码 | ADC 量化电压(V) | 误差(V) |
---|---|---|---|
0 V | 00 | 0.625 V | -0.625 V |
0.625 V | 00 | 0.625 V | 0 V |
1.24 V | 00 | 0.625 V | +0.615 V |
1.25 V | 01 | 1.875 V | -0.625 V |
1.875 V | 01 | 1.875 V | 0 V |
可以看到:当连续电压(图1中绿线)被数字化后(图1中蓝线),输入信号与 ADC 量化结果之间存在误差,并且当输入信号是从小到大连续、线性变化时,误差是一种锯齿波(图1中红线),误差范围在 -Q/2 (-0.625 V) 到 +Q/2 (+0.625V) 之间,这种误差就是量化噪声。
在 Analog Device 教程 《MT-001》(详见参考资料)中说道:
The quantization error for any ac signal which spans more than a few LSBs can be approximated by an uncorrelated sawtooth waveform having a peak-to-peak amplitude of Q, the weight of an LSB. Although this analysis is not precise, it is accurate enough for most applications.
简单翻译过来是,这种用锯齿波表示的量化噪声模型,能够代表大多数情况。
《MT-001》还将锯齿波着重绘制了一下,并给出了这种锯齿波的时间域数学表达:
公式 Eq.4 计算出了量化噪声的 RMS(Root mean square,有效值)。
为什么要计算RMS?因为要用它与输入信号进行比较,都是交流信号,用 RMS 比较合理,这就引出了 SNR。
理想 ADC 的 SNR 是什么?
对于输入信号,为了获得最大信噪比,《MT-001》中用了满量程的信号幅度(FS,Full scale),同样计算了 RMS:
然后将输入信号与量化噪声的 RMS 两者相除,就得到了 SNR(Signal-to-Noise Ratio):
因为理想 ADC 中只有量化噪声,没有其他噪声,且假设了满量程的输入信号,所以最终推出了公式 Eq.9 SNR = 6.02N + 1.76dB。这就是 N位 ADC 信噪比的天花板!
相信在很多地方会看到这个公式,其中公式里奇怪的参数就是如图中计算而来的。
我们可以代入计算一下:
- 12bit 理想 ADC ,最大 SNR = 6.02*12 + 1.76 = 74dB
- 16bit 理想 ADC ,最大 SNR = 6.02*16 + 1.76 = 98dB
那么实际 ADC 的最大 SNR 又是多少?
实际 ADC 的 SNR 是什么?
我找了一个 12bit 的实际 ADC —— AD9235,它的最大 SNR 如下:
再找一个 16bit 的实际 ADC —— AD7685,它的最大 SNR 如下:
是不是看到与实际 ADC 的最大 SNR,与之前理想 ADC 是有差距的?
造成这个差距的原因,当然是因为实际 ADC 中有更多的噪声来源,而且不同的参考电压、输入信号频率、采样时钟、工艺等级等因素还会改变噪声程度,从而影响 SNR。
ENOB 又是什么?
最后介绍一下 ENOB(Effective Number of Bits),可以翻译为“有效位数”。
其实在 ADC 的 spec 中有术语定义,我们在 AD7685 中找到这部分内容如下:
图中,首先看到了我们熟悉的 Signal-to-Noise Ratio (SNR),然后有一个 Signal-to-Noise and Distortion (SINAD),表明系统里面除了噪声还有失真。而 ENOB 是将实际的 SINAD 代入公式 Eq.9 ,并反过来求出 bit 位数。
ENOB 揭示了实际 ADC 中的噪声+失真,肯定比理想 ADC 仅有的量化噪声要更大。噪声+失真一起影响着所谓的信噪比,这会使得一个标称 16 位 ADC 的有效位数可能只有 14 位。
ENOB 数值越接近 ADC 的标称位数越好,比如以下是标称位数为 16 位的 AD7685 的 ENOB 情况:
通过 ENOB,你可以拿同等级的其它 ADC 型号进行对比,以简单衡量不同 ADC 之间孰优孰劣,不过前提是要在所有工作条件(如电源、输入信号、采样率等)都一样的情况下对比才有意义。
参考资料
主要来自以下内容,都可以通过搜索关键词获取:
- ADI MT-001 by Walt Kester: Taking the Mystery out of the Infamous Formula, “SNR = 6.02N + 1.76dB” and Why You Should Care
- TI slaa510: High-Speed, Analog-to-Digital Converter Basics
- https://robustcircuitdesign.com/signal-chain-explorer/understanding-effective-number-of-bits/
- ADI AD9235 AD7685 datasheet
可以关注我的微信公众号“疯狂的运放”
,及时收到最新的推文。