ADC常见误差参数来源与软件优化措施

0 ADC性能指标

  1. 精度表示

    1. DNL:Differential Non-Linearity------微分非线性度

    2. INL: Integral Non-Linearity------积分非线性度

    3. LSB (Least Significant Bit),最低有效位;表示的是数字流中的最后一位,也表示组成满量程输入范围的最小单位

    4. MSB(Most Significant Bit),最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正

  2. 分辨率

    1. 位数

0.1 INL

  • INL精度(Integral Non-Linearity),积分线性度 ADC在所有的数值点上对应的模拟值和真实值之间误差最大的那一点的误差值。即输出偏离线性的最大距离,反映全局非线性****累积误差,单位LSB。

  • 说明:理解为单值数据误差,对应该点模拟数据由于元器件及结构造成的不能精确测量产生的误差。

  • 例子:比如12位ADC:假设基准Vref=4.095V,那么1LSB=Vref/2^12=0.001V。如果精度为1LSB,则它单值测量误差0.001V*1=0.001,比如测量结果为1.000V,实际在1.000+/-0.001V范围。如果精度为8LSB,则它的单值测量误差0.001*8=0.008V,假如结果为1.000V,实际在1.000+/-0.008范围。

  • 公式

    \\text{INL}(k) = \\sum_{i=0}\^{k} \\text{DNL}(i) \\quad \\text{或} \\quad \\text{INL}(k) = V_{\\text{实际}}(k) - V_{\\text{理想}}(k)

    • 端点法(End-point Fit****):以零点和满量程点为基准的理想直线

    • 最佳直线法(Best Straight Line):最小化所有点的偏差

0.2 DNL

  • DNL(Differential Non-Linearity),微分非线性值 理解为刻度间的差值,即对每个模拟数据按点量化,由于量化产生的误差,体现局部****线性度

  • 例子:比如12位ADC,假设基准vref=4.095V,那么1LSB=Vref/2^12=0.001V.不考虑精度,即精度为0LSB。没有单值误差。如果DNL=3LSB=0.001V*3=0.003V,假设A实际电压为1.001V,B实际电压为1.003V。理论上A点读数1.001/1LSB=1001,B点读数1.003V/1LSB=1003,B-A=2,B>A,但由于DNL=3LSB=0.003V,模拟数据间的量化误差有0.003V,那么B-A会在-1(2-3=-1)到+5(2+3=5)之间的某一个数。

  • 注:要保证没有丢码和单调的转移函数,ADC的DNL必须小于1LSB。

  • 公式

    \\text{DNL}(k) = \\frac{V_{\\text{实际}}(k+1) - V_{\\text{实际}}(k)}{LSB_{\\text{理想}}} - 1

    • DNL > 1 LSB:出现丢码(Missing Code)

    • DNL < -1 LSB:导致码值重复(Code Overlap)


1 ADC本身造成的误差(静态误差)

1.1 ADC Offset Error ADC偏移误差

  • 定义: 指当输入模拟信号为零时,ADC输出的数字码值偏离理想零点的偏差。

  • 影响: 会导致输出的code值整体偏移一个固定值

  • 软件校准: 采集一个低点电压值, 比较实际code值与理想code值, 后续计算叠加两者的差值

1.2 ADC Gain Error ADC增益误差

  • 定义: ADC实际转换曲线的斜率与理想斜率的偏差。即使偏移误差已校准,满量程点仍可能偏离理想值。

  • 影响: 导致ADC的实际转换斜率大于或小于1

  • 软件校准: 采集一个低点电压值 和 一个高点电压值(或多个点), 计算其实际斜率。 Gain Err = (实际斜率 - 理想斜率) / 理想斜率 = (实际高点code - 实际低点code) / (理想高点code - 理想低点code) Offset Err = Gain Err * (0 - 理想低点code) + 实际低点code


2 环境造成的ADC误差

2.1 ADC参考电压(VREF+/VREFHI)噪声

ADC的输出是模拟信号电压与参考电压之比,ADC的参考电压源存在噪声会导致误差 可以通过设计高质量的参考电压源来解决

2.2 模拟输入信号噪声

模拟输入信号源自身的误差 针对信号源来设计滤波设计来减少误差

2.3 ADC动态范围匹配不良

例如: 模拟信号在0V-2.5V之间变化,参考电压源输入是3.3V,这样1.1V的转换范围相当于丢失了,等效于adc的位数下降,或者说LSB变大了

2.4 模拟是信号源阻抗

2.5 模拟信号源电容和寄生

2.6 注入电流影响

2.7 IO引脚串扰

2.8 EMI诱导的噪声


3 ADC采样优化措施

3.1 软件校准补偿

  1. offset 和 gain参数校准

  2. 分段函数插值拟合

  3. 分温度拟合


4 注意

  1. adc 模拟部分校准只需要 offset , 制造导致的误差,改offset实际上是修改了电路

  2. adc 数字部分校准需要 offset 和 gain ,也就是制造产生的误差, 但是数字只修改offset会导致整个range被抬高,造成高点饱和,所以需要添加一项 gain 来补偿

DAC, ADC取offset 和 gain参数校准时, 我们常常需要取一个高点, 一个低点来做拟合

  • 为什么要选取低点?

低点的gain err小

  • 为什么要选取高点

两点差距大


参考文档

理解ADC微分非线性(DNL)误差

图解ADC常见误差参数来源与优化措施-电子工程专辑

关于精度、分辨率、LSB的理解_lsb是什么单位-CSDN博客

使用两点校准消除ADC失调和增益误差 - 模拟技术 - 电子发烧友网

高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD - feitian629

理解逐次逼近寄存器型ADC:与其它类型ADC的架构对比 | Analog Devices

关于高速ADC,看这一篇就够了!-电子工程专辑