在与使用模数转换器(ADC)的系统设计人员进行交谈时,我最常听到的一个问题就是:
“你的16位ADC的精度也是16位的吗?”
这个问题的答案取决于对分辨率和精度概念的基本理解。尽管是两个完全不同的概念,这两个数据项经常被搞混和交换使用。
该文详述了这两个概念间的差异,并将深入研究造成ADC不准确的主要原因。
ADC的分辨率被定义为输入信号值的最小变化,这个最小数值变化会改变数字输出值的一个数值。对于一个理想ADC来说,传递函数是一个步宽等于分辨率的阶梯。然而,在具有较高分辨率的系统中(≥16位),传输函数的响应将相对于理想响应有一个较大的偏离。这是因为ADC以及驱动器电路导致的噪声会降低ADC的分辨率。
此外,如果DC电压被施加到理想ADC的输入上并且执行多个转换的话,数字输出应该始终为同样的代码(由图1中的黑点表示)。现实中,根据总体系统噪声(也就是包括电压基准和驱动器电路),输出代码被分布在多个代码上(由下面的一团红点表示)。系统中的噪声越多,数据点的集合就越宽,反之亦然。图1中显示的是一个中量程DC输入的示例。ADC传递函数上输出点的集合通常被表现为ADC数据表中的DC柱状图。
图1:ADC传递曲线上ADC分辨率和有效分辨率的图示
图1中的图表提出了一个有意思的问题。如果同样的模拟输入会导致多个数字输出,那么对于ADC分辨率的定义仍然有效吗?是的,前提是我们只考虑ADC的量化噪声。然而,当我们将信号链中所有的噪声和失真计算在内时,正如等式(1)中所显示的那样,ADC的有效无噪声分辨率取决于输出代码分布(NPP)。
在典型ADC数据表中,有效位数(ENOB)间接地由AC参数和信噪失真比(SINAD)指定,可使用方程式2计算得出:
下面,考虑一下图1中的输出代码簇(红点)不是位于理想输出代码的中央,而是位于远离黑点的ADC传递曲线上的其他位置(如图2中所示)。这个距离是指示出采集系统精度。不但ADC,还有前端驱动电路、基准和基准缓冲器都会影响到总体系统精度。
图2:ADC传递曲线的精度图示
需要注意的重要一点是ADC精度和分辨率是两个也许不相等的不同参数。从系统设计角度讲,精度确定了系统的总体误差预算,而系统软件算法完整性、控制和监视功能取决于分辨率。