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,看这一篇就够了!-电子工程专辑

ADC常见误差参数来源与软件优化措施的更多相关文章

  1. JVM组成、GC回收机制、算法、JVM常见启动参数、JAVA出现OOM,如何解决、tomcat优化方法

    JVM组成.GC回收机制.算法.JVM常见启动参数.JAVA出现OOM,如何解决.tomcat优化方法

  2. Nginx软件优化【转】

    转自 Nginx软件优化 - 惨绿少年 - 博客园 Nginx软件优化 - 惨绿少年 - 博客园 https://www.cnblogs.com/clsn/p/8484559.html 1.1 Ngi ...

  3. JAVA JVM常见内存参数配置简析

    JVM常见内存参数配置简析   常见参数 -Xms .-Xmx.-XX:newSize.-XX:MaxnewSize.-Xmn(-XX:newSize.-XX:MaxnewSize) 简析 1.-Xm ...

  4. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(5)- 软件优化

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之软件优化. 前面痞子衡已经初步实现了Jays-PyCOM的串口功能,并且通过了最基本的测试,但目前 ...

  5. 网络游戏逆向分析-4-分析喊话call参数来源

    网络游戏逆向分析-4-分析喊话call参数来源 好久没更新了,去实习去了,大家见谅一下. 前面找到了喊话功能call函数,然后分析了它的参数有五个,分别的四个push的和一个ecx: 第一次edx = ...

  6. Linux 程序设计的一些优化措施

    Linux 程序设计的一些优化措施 这些知识是在平常的阅读中,零散的获得的,自己总结了一下,分享在这里 全局变量VS函数参数 全局变量在Linux下的驱动编程里边,用的是非常多,例如中断服务函数ISR ...

  7. 【原创】构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施

    原文:[原创]构建高性能ASP.NET站点 第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施 前言:本篇 ...

  8. mysql的优化措施,从sql优化做起

    http://geeksblog.cc/2016/06/11/mysql-optimize/ 优化sql的一般步骤 通过show status了解各种sql的执行频率 定位执行效率低的sql语句 通过 ...

  9. C++ 反汇编:关于Switch语句的优化措施

    流程控制语句是C语言中最基本的判断语句,通常我们可以使用IF来构建多分支结构,但同样可以使用Switch语句构建,Switch语句针对多分支的优化措施有4种形式,分别是,IF-ELSE优化,有序线性优 ...

  10. Nginx软件优化

    1.1 Nginx优化分类 安全优化(提升网站安全性配置) 性能优化(提升用户访问网站效率) 1.2 Nginx安全优化 1.2.1 隐藏nginx版本信息优化 官方配置参数说明:http://ngi ...

随机推荐

  1. layui动态渲染select表单、初始化默认值、change事件监听等

    layui动态渲染,初始化默认值 var html = ''; html += '<select name="" lay-search lay-verify="re ...

  2. js移动端判断跳转

    js移动端判断跳转,只一行 默默收藏 if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobil ...

  3. doctrine-orm基础(单用doctrine避坑指南)

    附: doctrine基础(一):https://www.jianshu.com/p/3681e1add282 doctrine官网: https://www.doctrine-project.org ...

  4. 60个 Linux C/C++ 实战小项目,挑战年薪30万+

    大家好啊!我是小康. 最近公众号后台收到好多小伙伴的私信: "小康哥,我已经把<C++ Primer>啃完了,Linux 环境也玩得差不多了,但就是不知道该做啥项目练手...&q ...

  5. Linux操作系统(中)

    上一篇分享了一些Linux操作系统最基本的一些命令和基础知识,下面,要分享的还是Linux操作系统的一些内容,因为在做网安这方面,Linux会经常用到而且也很重要,好了,废话不多说,要开始了. 在Li ...

  6. 【HUST】网络攻防实践|6_物联网设备固件安全实验|flag2~5速通指南

    写在最前:最近没空写报告,实验原理虽然已经摸清了但是没空写.flag2到4是一些大胆的想法的通关方式,flag5是正经通关的.之后写报告的时候会补发正经的实验原理,和flag2到4正常的通关方式. 记 ...

  7. 从零开始搭建React+vite企业级项目框架

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  8. rancher 卸载后重装报错

    报错信息 kubectl create namespace cattle-system Error from server (InternalError): Internal error occurr ...

  9. 传统的可扩展架构模式:分层架构和SOA

    极客时间:<从 0 开始学架构>:传统的可扩展架构模式:分层架构和SOA 分层架构 分层架构是很常见的架构模式,它也叫 N 层架构,通常情况下,N 至少是 2 层.例如,C/S 架构.B/ ...

  10. 中国象棋小游戏(C版)

    中国象棋小游戏(C版) 说明: #include<graphics.h> 一个在 C/C++ 中用于图形编程的头文件,主要用于创建和操作图形界面.具有绘制图形.设置颜色.鼠标和键盘时间处理 ...