在与使用模数转换器(ADC)的系统设计师交谈时,我经常听到的一个最常见问题是:“你们的16位ADC也是16位准确的吗?”
这个问题的答案在于对分辨率和精度这两个概念的基本理解存在差异。尽管这是两个完全不同的概念,但这两个术语经常被混淆并互换使用。
今天这篇文章将详细阐述这两个概念之间的差异。我们将在一系列文章中深入探讨影响ADC精度的主要因素。
ADC的分辨率定义为输入信号值的最小变化量,该变化量能够使数字输出的值改变一个计数。对于理想的ADC,其传输函数是一个阶梯状函数,每个台阶的宽度等于分辨率。然而,在更高分辨率的系统(≥16位)中,传输函数的响应与理想响应之间的偏差会更大。这是因为ADC以及驱动电路所产生的噪声可能会掩盖ADC的分辨率。
此外,如果向理想ADC的输入端施加一个直流电压并进行多次转换,数字输出应该始终是相同的代码(在图1中用黑点表示)。然而,在实际情况中,输出代码会分布在多个代码上(如下方看到的红色点群),这取决于整个系统的噪声(即包括电压参考和驱动电路)。系统中的噪声越多,数据点的集群就越宽,反之亦然。图1展示了中量程直流输入的一个示例。在ADC数据手册中,ADC传输函数上的这群输出点通常用直流直方图来表示。
图1:ADC传输曲线上ADC分辨率和有效分辨率的示意图
图1中的示意图提出了一个有趣的问题。如果相同的模拟输入能够导致多个数字输出,那么ADC分辨率的定义是否仍然成立呢?如果我们仅考虑ADC的量化噪声,那么答案是肯定的,ADC分辨率的定义仍然有效。然而,当我们考虑信号链中的所有噪声和失真时,ADC的有效无噪声分辨率则由输出代码分布(NPP)决定,如公式(1)所示。
在典型的ADC数据手册中,有效位数(ENOB)通常是通过交流(AC)参数和信噪比及失真比(SINAD)来间接指定的,这些参数可以通过公式2来计算:
接下来,考虑图1中输出代码集群(红色点)没有以理想输出代码为中心,而是位于ADC传输曲线上远离黑点(如图2所示)的某个位置的情况。这个距离是数据采集系统准确性的一个指标。不仅ADC本身,前端驱动电路、参考电压源和参考缓冲器也都对系统整体准确性有所贡献。
图2:ADC传输曲线上的准确性示意图
需要注意的重要一点是,ADC的准确性和分辨率是两个不同的参数,它们可能并不相等。从系统设计的角度来看,准确性决定了系统的整体误差预算,而系统软件的算法完整性、控制和监控能力则依赖于分辨率,下一部分我将继续介绍。