当前位置: 首页 > news >正文

理解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:

图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 V000.625 V-0.625 V
0.625 V000.625 V0 V
1.24 V000.625 V+0.615 V
1.25 V011.875 V-0.625 V
1.875 V011.875 V0 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》还将锯齿波着重绘制了一下,并给出了这种锯齿波的时间域数学表达及 RMS:

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

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

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

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


理想 ADC 的 SNR 是什么?

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

图4 输入信号 RMS 数学计算

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

图5 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 如下:

图6 AD9235的最大SNR

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

图7 AD7685的最大SNR

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

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


ENOB 又是什么?

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

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

图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 情况:

图9 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

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


http://www.mrgr.cn/news/53581.html

相关文章:

  • C++——定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法。参加运算的两个操作数可以都是类对象,也可以一个是整数,其顺序任意。
  • 反欺诈与数字信任:保障数字经济安全的关键
  • 衡石分析平台系统分析人员手册-应用空间
  • 【微知】RDMA IB verbs中的ABI是什么?作用是什么?(application binary interface、规范、兼容)
  • PCDN 技术如何优化网络延迟(壹)
  • 机械视觉光源选型
  • 解决mac ssh端终端只有黑白颜色的问题
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-17
  • C++——有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。(如c=a+b)
  • 动销方案在合作伙伴场地执行,好处多多!
  • S7-1500 通过PN/PN Coupler 通信
  • Python | Leetcode Python题解之第493题翻转对
  • UniHttp 框架,请求http接口
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于AGCN-LSTM模型的海上风电场功率概率预测 》
  • 15分钟学Go 第8天:控制结构 - 循环
  • 请问平库管理系统有哪些功能流程?
  • 高职单招如何报考与备考?这份指南为你解惑
  • 使用django-simple-captcha遇到的坑
  • 杨氏矩阵(有一个数字矩阵,矩阵的每行从左到右的递增的,矩阵从上到下是递增的请编写一个程序,在这样的矩阵中查找某个数字是否存在)
  • 2023年华为杯数学建模竞赛题F论文和代码