模数转换器(ADC)有多种规格描述(specification)。根据应用需求,其中一些规范可能比其他规范更重要。比如:在直流规格中,如失调误差、增益误差、积分非线性(INL)和差分非线性(DNL),在使用ADC对慢速移动信号(如应变片和温度传感器的信号)进行数字化处理的仪器仪表应用中尤为重要。
本文深入探讨失调和增益误差规格。
模数转换器传递函数
3-bit单极性ADC的理想传递函数如图1所示。
图1. 3-bit单极性ADC的数字输出与vwin 输入(传递函数)
理想情况下,ADC具有均匀的阶梯输入-输出特性。请注意,输出编码不对应于单个模拟输入值。相反,每个输出码代表一个小的输入电压范围,宽度等于一个LSB(最低有效位)。如上图所示,第一次输出码转换发生在0.5 LSB,此后每个连续的转换发生在上一个转换的1 LSB处。最后一次跃迁发生在低于满量程(FS)值1.5 LSB处。
由于使用有限数量的数字码来表示连续范围的模拟值,因此ADC表现出阶梯响应,这本质上是非线性的。在评估某些非理想效应(如失调误差、增益误差和非线性)时,通过穿过阶跃中点的直线对ADC传递函数进行建模非常有用。这条线可以用以下等式表示:
[Y_{Linear}=frac{V_{in}}{FS} imes2^{N}]
其中 Vin是输入电压,N表示位数。如果我们不断提高ADC分辨率(或输出代码的位数),阶梯响应将越来越接近线性模型。因此,直线可以被视为具有无限数量输出代码的理想ADC的传递函数。然而,在实践中,我们知道ADC分辨率是有限的,直线只是实际响应的线性模型。
ADC失调误差和传递函数
由于内部元件不匹配等非理想效应,ADC的实际传递函数会偏离理想的阶梯响应。偏移误差沿水平轴移动传递函数,从而导致代码转换点偏移。图2中的紫色曲线显示了失调为+1 LSB的ADC的响应。
图2. 显示 +1 LSB 偏移、实际响应和理想响应的图表。
对于单极性三位理想ADC,第一次转换应发生在0.5 LSB,将输出从000变为001。但是,在上述响应下,ADC输出在0.5 LSB时从001转换到010。理想情况下,001到010的跃迁应该发生在1.5 LSB处。因此,与理想特性相比,非理想响应向左移动1 LSB。这称为+1 LSB失调误差。考虑非理想响应的线性模型(图中的橙色曲线),我们还可以观察到,对于0V输入,系统输出001,对应于+1 LSB失调。 图3显示了失调误差为-1.5 LSB的ADC的响应。
图3. 具有-1.5 LSB失调误差的ADC响应。
由于失调误差将整个传递函数偏移相同的值,因此可以通过从ADC输出中减去失调值来轻松校准。为了确定失调误差,通常测量第一次代码转换,并将其与理想响应的相应转换进行比较。使用第一个代码转换(而不是下一个代码转换)可以产生更准确的测量,因为根据定义,失调误差是指零伏输入时与理想响应的偏差。
查找ADC失调误差示例
考虑满量程值为FS = 5 V的10位ADC。如果从全零输出代码过渡到 00...01发生在8 mV的输入电压下,ADC的失调误差是多少?
对于FS = 5 V的10位ADC,LSB值为4.88 mV,计算如下:
[LSB=frac{FS}{2^{N}}=frac{5}{2^{10}}=4.88,mV]
理想情况下,第一次跃迁应在0.5 LSB = 2.44 mV时发生,而测得的响应在8 mV时发生这种跃迁。因此,ADC的失调值为-5.56 mV。失调误差也可以表示为LSB的倍数,如下所示:
[Offset,Error,(in,LSB)=frac{Offset,Error,(in, Volts)}{LSB,Value,(in, Volts)} = frac{-5.56,mV}{4.88,mV}=-1.14,LSB]
模数转换器增益误差
消除失调误差后,实际响应的第一次转换与理想特性的转换一致。但是,这并不能保证两条特征曲线的其他转换也将在相同的输入值下发生。增益误差指定上次跃迁与理想值的偏差。图4说明了增益误差概念。
图4. 显示增益误差概念的图表。
让我们将上一次转换上方的一半LSB定义为“增益点”。消除失调误差后,理想增益点与实际增益点之差决定了增益误差。
在上例中,非理想特性的增益误差为+0.5 LSB。上图中的橙色曲线是非理想响应的线性模型。如您所见,测量增益点和理想增益点之间的差异实际上会改变系统线性模型的斜率。图5显示了具有-1 LSB增益误差的ADC的响应。
图5. 具有-1 LSB增益误差的ADC的响应。
请注意,一些技术文档将增益误差定义为理想ADC的实际增益点与直线模型之间的垂直差。在本例中,继续图 5 中描述的示例,我们得到图 6 中的图表。
图6. 增益误差为ADC实际增益点与直线模型之间的垂直差值。
垂直和水平差异产生相同的结果,因为理想线性模型的斜率为 1。
查找ADC增益误差示例
假设满量程值为FS = 5 V的10位ADC在4.995 V时从3FE的十六进制值最后一次转换到3FF。假设失调误差为零,计算ADC增益误差。
ADC的LSB为4.88 mV,如上例所示。理想情况下,最后一次转换应发生在FS -1.5 LSB = 4992.68 mV时。发生跃迁时的测量值为4995 mV。因此,ADC的增益误差为-2.32 mV或-0.48 LSB。
用满量程误差表示增益误差
基于上述概念,我们可以根据满量程误差来定义增益误差。如图 7 所示。
图7.满量程误差。图片由Microchip提供
在上图中,实际响应受到失调和增益误差的影响。因此,实际最后一次转换与理想最后一次转换的偏差(用满量程误差表示)包含失调和增益误差。为了找到增益误差,我们可以从满量程误差中减去失调误差:
[Gain Error,=,Full scale Error,-,Offset Error]
这相当于首先补偿失调误差,然后测量与理想响应的最后一次跃迁的偏差,以得出增益误差。请注意,在本例中,增益误差为正,失调误差为负,导致满量程误差小于增益误差。
定义中的一些ADC规格不一致
值得一提的是,一些ADC规格在技术文献中定义不一致。一个令人困惑的不一致是失调和增益误差的标志。例如,虽然Microchip和MaximIntegrated与本文中使用的定义一致,但一些制造商,如STMicroelectronics(ST)有所不同。ST以相反的方式定义这些误差项的符号。来自同一芯片制造商的文档之间也观察到不一致。例如,图 8 取自此德州仪器(TI) 文档,该文档使用相反的符号约定。
图8.TI 的 ADC 增益误差示例。图片由TI提供
但是,图 9(同样来自 TI)使用的定义与本文中使用的定义一致。
图9.TI 失调误差示例。图片(改编)由 TI 提供
图 9(以及整篇本文)中使用的符号约定似乎在各种技术文献中得到了更广泛的接受。这种不一致可能会导致混淆,但如果您掌握了本文中讨论的基本概念,则可以解决此类问题。例如,如果您测量ADC,并观察到其第一次转换发生在0.5 LSB以上(类似于图3中描述的情况),则无论使用何种符号约定,都应在ADC读数中添加适当的正值以补偿失调误差。
审核编辑:汤梓红
评论
查看更多