前言

我们今天从理想 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:

 2-bit ADC 进行模拟信号数字化

图1 2-bit ADC 的例子

图中,右上坐标系的横坐标表述真实输入信号(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》还将锯齿波着重绘制了一下,并给出了这种锯齿波的时间域数学表达:

量化噪声时间域波形(锯齿波)

图2 量化噪声时间域波形(锯齿波)

量化噪声 RMS 有效值数学计算

图3 量化噪声 RMS 有效值数学计算

公式 Eq.4 计算出了量化噪声的 RMS(Root mean square,有效值)。

为什么要计算RMS?因为要用它与输入信号进行比较,都是交流信号,用 RMS 比较合理,这就引出了 SNR。

理想 ADC 的 SNR 是什么?

对于输入信号,为了获得最大信噪比,《MT-001》中用了满量程的信号幅度(FS,Full scale),同样计算了 RMS:

输入信号 RMS 数学计算

图4 输入信号 RMS 数学计算

然后将输入信号与量化噪声的 RMS 两者相除,就得到了 SNR(Signal-to-Noise Ratio):

ADC SNR计算

图5 ADC SNR计算

因为理想 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 如下:

AD9235的最大SNR

图6 AD9235的最大SNR

再找一个 16bit 的实际 ADC —— AD7685,它的最大 SNR 如下:

AD7685的最大SNR

图7 AD7685的最大SNR

是不是看到与实际 ADC 的最大 SNR,与之前理想 ADC 是有差距的?

造成这个差距的原因,当然是因为实际 ADC 中有更多的噪声来源,而且不同的参考电压、输入信号频率、采样时钟、工艺等级等因素还会改变噪声程度,从而影响 SNR。

ENOB 又是什么?

最后介绍一下 ENOB(Effective Number of Bits),可以翻译为“有效位数”。

其实在 ADC 的 spec 中有术语定义,我们在 AD7685 中找到这部分内容如下:

SNR SINAD ENOB术语定义

图8 SNR SINAD ENOB术语定义

图中,首先看到了我们熟悉的 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 情况:

AD7685 的 ENOB 情况

图9 AD7685 的 ENOB 情况

通过 ENOB,你可以拿同等级的其它 ADC 型号进行对比,以简单衡量不同 ADC 之间孰优孰劣,不过前提是要在所有工作条件(如电源、输入信号、采样率等)都一样的情况下对比才有意义。

参考资料

主要来自以下内容,都可以通过搜索关键词获取:


可以关注我的微信公众号“疯狂的运放”,及时收到最新的推文。