高速模数转换器(ADC)的INL/DNL测量

2023-11-13

摘要 : 尽管积分非线性和微分非线性不是高速、高动态性能数据转换器最重要的参数,但在高分辨率成像应用中却具有重要意义。本文简要回顾了这两个参数的定义,并给出了两种不同但常用的测量高速模数转换器(ADC)的INL/DNL的方法。

近期,许多厂商推出了具有出色的静态和动态特性的高性能模数转换器(ADC)。你或许会问,“他们是如何测量这些性能的,采用什么设备?”。下面的讨论将聚焦于有关ADC两个重要的精度参数的测量技术:积分非线性(INL)和微分非线性(DNL)。

尽管INL和DNL对于应用在通信和高速数据采集系统的高性能数据转换器来讲不算是最重要的电气特性参数,但它们在高分辨率成像应用中却具有重要意义。除非经常接触ADC,否则你会很容易忘记这些参数的确切定义和重要性。因此,下一节给出了这些定义的简要回顾。
 

INL和DNL的定义
DNL误差定义为实际量化台阶与对应于1LSB的理想值之间的差异(见图1a)。对于一个理想ADC,其微分非线性为DNL = 0LSB,也就是说每个模拟量化台阶等于1LSB (1LSB = VFSR/2N,其中VFSR为满量程电压,N是ADC的分辨率),跳变值之间的间隔为精确的1LSB。若DNL误差指标≤ 1LSB,就意味着传输函数具有保证的单调性,没有丢码。当一个ADC的数字量输出随着模拟输入信号的增加而增加时(或保持不变),就称其具有单调性,相应传输函数曲线的斜率没有变号。DNL指标是在消除了静态增益误差的影响后得到的。具体定义如下:
 

DNL = |[(VD+1- VD)/VLSB-IDEAL - 1] |,其中0 < D < 2N - 2
VD是对应于数字输出代码D的输入模拟量,N是ADC分辨率,VLSB-IDEAL是两个相邻代码的理想间隔。较高数值的DNL增加了量化结果中的噪声和寄生成分,限制了ADC的性能,表现为有限的信号-噪声比指标(SNR)和无杂散动态范围指标(SFDR)。


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

INL误差表示实际传输函数背离直线的程度,以LSB或满量程的百分比(FSR)来度量。这样,INL误差直接依赖于与之相比较的直线的选取。至少有两个定义是常用的:“最佳直线INL”和“端点INL” (见图1b):
 

最佳直线INL定义中包含了关于失调(截距)和增益(斜率)误差的信息,以及传输函数的位置(在后面讨论)。它定义了一条最接近ADC实际传输函数的直线。没有明确定义直线的精确位置,但这种方法却具有最好的可重复性,能够真正描述器件的线性特征。
端点INL所采用的直线经过转换器传输函数的两个端点,因而也就确定了直线的精确位置。这样,对于一个N位ADC来讲,这条直线就由其零点(全0)和其满度(全1)点确定。
最佳直线方法通常被作为首选,因为它能产生比较好的结果。INL是在扣除了静态失调和增益误差后的测量结果,可用下式表示:
 

INL = | [(VD - VZERO)/VLSB-IDEAL] - D |,其中0 < D < 2N-1
 
VD是数字输出码D对应的模拟输入,N是ADC的分辨率,VZERO是对应于全零输出码的最低模拟输入,VLSB-IDEAL是两个相邻代码的理想间隔。


图1b. 最佳直线法和端点法是定义ADC线性特性的两种可行办法

转移函数
理想ADC的转移函数是阶梯状的,其中每一个台阶对应于某个特定的数字输出代码,而每一次阶跃代表两个相邻代码间的转变。必须确定这些阶跃所对应的输入电压,以便对ADC的许多特性参数进行规范。这项任务会极为复杂,尤其是对于高速转换器中充满噪声的过渡状态,以及那些接近于最终结果、并变化缓慢的数字量。

过渡状态没有在图1b中显著标出,而是作为一种概率函数表达,更为接近实际。当慢慢增加的输入电压经过过渡点时,ADC将一个接一个地输出相邻代码。按照定义,在过渡点对应的输入电压下,ADC输出相邻两个代码的几率相等。

正确的过渡
过渡电压是指输出数码在两个相邻代码间发生跳变时输入电压。名义模拟值,对应于两个相邻过渡电压之间的某输入电压所产生的数字输出码,定义为此范围的中点(50%点)。如果过渡间隔的边界已知,该50%点很容易算出。过渡点的确定可以通过测量某一个区间,然后将该区间除以其间出现过的相邻代码的次数后得到。
 

测试静态INL和DNL的一般装置
INL和DNL可以利用准直流的斜坡电压或低频正弦波作为输入来进行测量。一个简单的直流(斜坡)测试可能需要一个逻辑分析仪,一个高精度DAC (可选),一个可以扫描待测器件(DUT)输入范围的高精密直流源,和一个可连接PC或X-Y绘图仪的控制接口。

如果设备中包含有高精度DAC (精度比待测器件高得多),逻辑分析仪能直接处理ADC的输出数据来监测失调和增益误差。精密信号源产生一个测试电压供给待测器件,并使测试电压从零刻度到满刻度缓慢扫过ADC的输入范围。经由DAC重构后,从ADC输入测试电压中减去对应的DAC输出电平,就产生一个小的电压差(VDIFF),这个电压可以用X-Y绘图仪显示出来,并且和INL、DNL误差联系起来。量化电平的改变反映了微分非线性,而VDIFF与零的偏移代表积分非线性。
 

积分型模拟伺服环
另一种办法也可以用来测试ADC的静态线性参数,与前面的办法相似但更复杂一些,这就是使用积分型模拟伺服环。这种方法通常是用于要求高精度测量、而对测量速度没有要求的测试设备。

典型的模拟伺服环(见图2)包含一个积分器和两个电流源,连接于ADC输入端。其中一个电流源向积分器注入电流,另一个则吸出电流。数值比较器连接于ADC输出并对两个电流源进行控制。数值比较器的另一输入由PC控制,后者可以对N位转换器的2N - 1个测试码进行扫描。


图2. 模拟积分伺服环的电路配置

如果环路反馈的极性正确的话,数值比较器就会驱使电流源“伺服”模拟输入跟随给定的代码跳变。理想情况下,这将在模拟输入端产生一个小的三角波。数值比较器控制斜坡信号的方向和速度。在跟随一次跳变时积分器的斜率必须快,而在采用精密数字电压表(DVM)进行测量时,为了降低叠加的三角波过冲峰值,又要求积分器足够慢。

在MAX108的INL/DNL测试中,伺服板通过两个连接器连接到评估板(见图3)。第一个连接器建立起MAX108的主(或副)输出端口和数值比较器的锁存输入口(P)的连接。第二个连接器将伺服环(数值比较器的Q端口)和用于生成参照码的计算机连接起来。


图3. 借助MAX108EVKIT和模拟积分伺服环,该测试装置可以确定MAX108的INL和DNL特性。

数值比较器的判决结果解码后通过P > QOUT输出端输出并送往积分器单元。每一次的比较结果都独立地控制开关的逻辑输入,驱动积分电路产生出满足需要的斜坡电压,供给待测器件的两路输入。这种方法具有其优越性,但也有一些不足之处:
 

为了降低噪声,三角斜坡应该具有低的dV/dt。这有利于产生可重复的数码,但要获得精确测量它需要很长的积分时间。
正、负斜坡的斜率必须匹配方可达到50%点,并且必须对低电平三角波取平均后才可获得所需要的直流电平。
在设计积分器时常常要求仔细选择充电电容。为了尽量减小由于电容的“存储效应”而造成的潜在误差,应选择具有低介质吸收的积分电容。
测量精度正比于积分时间而反比于建立时间。
将一个数字电压表连接到模拟积分伺服环中,就可测出INL/DNL误差与输出量的关系(图4a和图4b)。值得注意的是,INL与输出码关系曲线中的抛物线形或弓形曲线表明偶次谐波占主导地位,若曲线呈“S状”,则说明奇次谐波占主导地位。


图4a. 该曲线给出了MAX108 ADC的典型积分非线性特性,由模拟积分伺服环测得。


图4b. 该曲线给出了MAX108 ADC的典型微分非线性特性,由模拟积分伺服环测得。

为了消除上述方法的缺陷,可以对伺服环中的积分单元加以改进,代之以一个L位的逐次逼近寄存器(SAR) (用于捕获待测器件的输出码)、一个L位DAC、以及一个简单的平均值电路。再结合一个数值比较器,该电路就组成了一个逐次逼近型转换器结构(见图5和后续的“SAR转换器”部分),其中,由数值比较器对DAC进行控制、读取其输出、并完成逐次逼近。同时,DAC提供一个高分辨率的直流电平给被测N位ADC的输入。在这个实例中,采用一个16位DAC将ADC校准至1/8LSB精度,同时获得最可信转移曲线。


图5. 用逐次逼近寄存器和DAC结构取代模拟伺服环中的积分器单元

当接近终值时,由于受到噪声的影响,数值比较器会来回跳动而变得不稳定,此时,平均值电路的优势就突显出来了。平均值电路包含两个除法计数器。“参考”计数器具有2M个时钟的周期,其中M是一个可编程的整数,用来控制计数周期(同时也决定了测量时间)。“数据”计数器仅在数值比较器输出为高时递增,其周期等于前者的一半,即2M-1个时钟。

参考计数器和数据计数器共同工作的效果是对高、低电平的数量进行了平均,结果被保存于一个触发器,并进而传送到SAR寄存器。这个过程重复16次(在本例中)后便产生了完整的输出码。和前面的方法一样,它也有优点和不足之处:
 

测试装置的输入电压由数字量定义,这样可以简便地修改求取平均值的测式样点。
逐次逼近方式提供给待测器件模拟输入的是一个直流电平,而非斜坡电压。
不足之处在于,反馈环中的DAC限制了输入电压的分辨率。
SAR转换器
SAR转换器的工作类似于旧时药剂师的天平。一边是未知的输入采样,另一边是由SAR/DAC结构产生的首个砝码(最高有效位,等于满量程输出的一半)。如果未知重量大于1/2FSR,则保留首个砝码并再增加1/4FSR。否则,用1/4FSR砝码代之。

将这个步骤重复N次,从MSB到LSB,SAR转换器就可得到所需要的输出代码。N是SAR结构中DAC的分辨率,每个砝码代表1个二进位。
 

INL和DNL的动态测试
要测定ADC的动态非线性,可以对其施加一个满度正弦输入,然后在其全功率输入带宽内测量转换器的信噪比(SNR)。对于一个理想的N位转换器,理论SNR (仅考虑量化噪声,无失真)如下:
 

SNR (单位为dB) = N×6.02 +1.76
这个公式包含了瞬变、积分非线性和采样时间的不确定性等效应的影响。除此之外的非线性成分可以通过测量恒频输入时的SNR来获得,并可得到一个随输入信号幅度的变化关系。例如,使信号幅度扫过整个输入范围,从零到满量程或者反之,当输入幅度逼近转换器满量程时,转换输出将与信号源发生较大偏移。要确定产生这种偏移,排除失真和时钟不稳定性因素的原因,可采用频谱分析仪分析量化噪声与频率的关系。

还有很多其他方法也可以用来测试各种高速和低速数据转换器的静态和动态INL、DNL。本文意在使读者更好地理解典型工作特性(TOC)的产生,所使用的工具和技术很简单,但极为巧妙和精确。
————————————————
版权声明:本文为CSDN博主「glassine」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/glassine/article/details/113603687

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高速模数转换器(ADC)的INL/DNL测量 的相关文章

  • STM32F103学习(ADC)

    1 定义 ADC Analog to Digital Converter 模数转换器 是指将连续变化的模拟信号转换为离散的数字信号的器件 2 原理 stm32上的ADC外设采用逐次比较的方式 逐次比较型ADC工作原理可以类比天平称物体 比如
  • 小松的STM32教程(6)——ADC

    预备 学习目标 学会调用Get Adc Average函数会使能多个ADC通道 概述 ADC输入电压范围 xff1a 2 4V 3 6V xff0c 一般使用0V和3 3V 数据对齐 xff1a 16bit存放12bit的转换数据 xff0
  • ADC采集的数据通过串口进行发送 (2)

    1 xff09 在RIDE板子上调通的基础上 xff0c 硬件替代成CJ 575板 在后面步骤中并开始将代码中的硬件配置部分给对应成CJ 575板子的ARM9芯片的配置 2 xff09 将ADC CHANNEL和ADC CHANNEL MO
  • ADC与DMA回顾

    12位ADC是一种逐次逼近型模拟数字转换器 它有多达18个通道 xff0c 可测量16个外部和2个内部信号源 各通道的A D转换可以单次 连续 扫描或间断模式执行 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中 ADC 的输入时
  • STM32F407-ADC(模数转换)

    一 硬件 STM32F407开发板 xff0c 杜邦线 通过通道获取板载电压的模拟输入信号转变为数字信号 xff0c 并通过转换变成电压 STM32F407有3个ADC xff0c 每个ADC有16个通道 xff0c 下表为ADC通道对应的
  • Stm32CubeMx通过DMA获取多路ADC采集的数据(踩到坑的来看看,我也是一步步踩坑到实现的)

    用stm32CubeMX 可以轻松配置模拟电压数值采集 由于使用直接存储器DMA进行ADC数据采集无需一直占用着CPU线程 所以我们一般在需要多通道采集的情况下才使用DMA 多路ADC采集在工业生产测量方面也很常用到 所以这个内容我们还是得
  • STM32——ADC采集

    目录 ADC简介 ADC主要特征 ADC功能框图 ADC引脚 电压输入范围 通道选择 单次转换模式 连续转换模式 转换顺序 规则序列 注入序列 触发源 转换时间 中断 转换结束中断 模拟看门狗中断 DMA请求 代码讲解 宏定义 xff1a
  • PX4模块设计之二十四:内部ADC模块

    PX4模块设计之二十四 xff1a 内部ADC模块 1 内部ADC模块简介2 模块入口函数2 1 主入口board adc main2 2 自定义子命令custom command 3 内部ADC模块重要函数3 1 task spawn3
  • MSP432(Keil5)——9.ADC驱动

    本次例程驱动了板载的ADC来读取一个模拟的角度传感器 xff0c 大家可以在ADC读取中断里面换成其他的计算 xff0c 具体引脚见程序代码 adc c span class token macro property span class
  • ADC转换值和实际电压的关系

    1 首先确定ADC用几位表示 xff0c 最大数值是多少 比如一个8位的ADC xff0c 最大值是0xFF xff0c 就是255 xff08 一般芯片手册会有说明 xff09 2 然后确定最大值时对应的参考电压值 一般而言最大值对应3
  • RT-Thread记录(十四、I/O 设备模型之ADC设备)

    RT Thread ADC 设备学习使用 目录 前言 一 ADC 采样基础 1 1 ADC 通道 1 2 ADC 分辨率 1 3 ADC 采样计算 二 ADC 设备操作函数 2 1 查找 ADC 设备 2 2 使能 关闭 ADC 通道 2
  • 关于OELD屏显示电池电量的简易方法

    如何采集电源电压大家可能都熟悉 stm32的ADC DMA能很方便迅速的帮我们采集到自己想要的电压数据 使用DMA进行数据搬运也能很好的减轻CPU的一部分压力 但是这样只是第一步 数据 用户想看到的有时候并不是数据 他们想要更直观方便的看到
  • STM32F407的ADC+DMA 的简单使用

    这里以ADC3通道14为例 adc h ifndef adc H define adc H include stm32f4xx conf h ADC GPIO 宏定义 define RHEOSTAT ADC GPIO PORT GPIOF
  • 嵌入式 ADC使用手册完整版 (188977万字)(附源码详细篇)

    嵌入式 ADC使用手册完整版 188977万字 附源码详细篇 1 ADC简介 2 ADC主要特征 3 ADC引脚和内部信号 4 ADC 模块框图 5 ADC校准 CLB 6 ADC 时钟 7 ADCON 开关 8 ADC规则组和注入组 9
  • Integral nonlinearity (INL) and differential nonlinearity (DNL) of data converters

    Syntax s inldnl analog digital range type s inldnl Name Value Description example s inldnl analog digital range type cal
  • ESP32-C3入门教程 基础篇(一、ADC采样)

    经过前面的折腾 设计好了自己的测试开发板 搭建好了开发环境 然后正式开始进行功能测试了 测试顺序先从简单的开始吧 一步一步来 目录 前言 1 ADC采样示例测试 1 1 DMA连续采样 1 2 单次采样 1 3 测试源码 2 ESP32 C
  • simulink仿真 adc 采样ePWM输出例程

    新建文件夹并用matlab打开 写入这两个模块 配置 ADC 配置ePWM 不使能B 关了就行 其他的默认即可 配置烧录 连线 示波器接pwma1 和地 adc chanl1接 3 3v或者 0 3 3 都行 转化是 x 3 3 2 12
  • GD32F4xx MCU ADC+DMA 多通道采样

    1 GD32F4xx ADC GD32F4xx 的12位ADC是一种采用逐次逼近方式的模拟数字转换器 1 1 主要特征 可配置12位 10位 8位 6位分辨率 ADC采样率 12位分辨率为2 6MSPs 10位分辨率为3 0 MSPs 分辨
  • STM8的ADC的五种工作模式

    STM8的ADC的五种工作模式 STM8的ADC是10位的逐次比较型模拟数字转换器 多达16个多功能的输入通道 拥有5种转换模式 转换结束可产生中断 STM8 ADC的初始化顺序如下 1 AD输入通道对应的IO设置为上拉输入 2 配置AD参
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015

随机推荐

  • 引领高并发直播场景进入毫秒时代,阿里云发布超低延时直播服务

    近日 阿里云上线超低延时直播服务RTS Real time Streaming 该服务在视频直播产品的基础上 进行全链路延时监控 传输协议改造等底层技术优化 支持千万级并发场景下的毫秒级延迟直播能力 保障低延时 低卡顿 高清流畅的极致直播观
  • C++文件读取

    简介 最近在复习C 在写一个停车场管理系统项目的时候突然遇到了关于文件的处理 感觉忘记的差不多了 重新复习了一下 也顺便写一下笔记 当然在一个文章中有很多细节都没有进行深入的研究 只是知道一些基本的用法 主要感觉在学完数据库后再用文件系统进
  • java基础之内存机制详解

    今天有看到一篇好的关于java内存机制的文章 果断转载过来 哈哈哈哈哈哈 堆区 1 存储的全部是对象 每个对象都包含一个与之对应的class的信息 class的目的是得到操作指令 2 jvm只有一个堆区 heap 被所有线程共享 堆中不存放
  • 有符号数和无符号数详解

    有符号数和无符号数详解 1 通过例子看问题 2 有符号数和无符号数 2 1 什么是无符号数 2 2 什么是有符号数 2 3 有符号数和无符号数的区别 3 原码 反码 补码 3 1 背景 3 2 原码 反码 补码 3 2 1 什么是机器数 3
  • vue2 ant datepicker 日期选择框 点击此刻时间多8小时不正确解决方案

    点击 此刻 后 可以看到在DatePicker上时间是正确的 但是打印出来的dateString时间却多了8小时 原因 因为点击 此刻 那个按钮时 moment 对象会经过 getTodayTime 设置了 utcOffset utcOff
  • cd命令行 python_cd命令

    cd命令行 python Once you have a folder you can move into it using the cd command cd means change directory You invoke it sp
  • jdbc大数据量时处理速度的比较

    在预编译空间够的情况下 使用预编译 addBatch gt 纯预编译 gt 原生sql语句
  • vue移动端无法使用string.replaceAll,报错显示空白

    开发vue时 使用了replaceAll函数 在pc端调试没问题 但是打包部署到移动端端测试时 发现部分页面显示空白 控制台只显示Error 经过排查是replaceAll函数报错了 替换成replace解决
  • 如何将彩图.png转换成灰度图.png(python)

    1 安装所需要的包 使用PIL库需要先安装Pillow包 Pillow是PIL库的一个Fork 分支 它提供了与PIL兼容的API 并进行了一些功能扩展和改进 因此 在使用PIL之前 需要确保已经正确安装了Pillow包 可以使用pip命令
  • Python实现照片右上角添加红色数字

    Python实现照片右上角添加红色数字 在许多图像处理应用程序中 我们经常需要在图像上添加一些标记或注释 本文将介绍如何使用Python编程语言在照片的右上角添加一个红色的数字 我们将使用Python的Pillow库来处理图像 并利用该库提
  • android.intent.extra,Android Intent的几种用法详细解析

    Intent应该算是Android中特有的东西 你可以在Intent中指定程序要执行的动作 比如 view edit dial 以及程序执行到该动作时所需要的资料 都指定好后 只要调用startActivity Android系统会自动寻找
  • C语言预处理条件语句的 与或运算

    C语言预处理条件语句的 与或运算 1 ifdef 与或运算 ifdef MIN MAX 错误使用 if defined MIN defined MAX 正确使用 ifdef MIN MAX 错误使用 if defined MIN defin
  • 汇编语言 第3版 王爽 检测点答案及详细解析

    第一章 基础知识 检测点1 1 1 1个CPU的寻址能力为8KB 那么它的地址总线的宽度为 13位 2 1KB的存储器有 1024 个存储单元 存储单元的编号从 0 到 1023 3 1KB的存储器可以存储 8192 2 13 个bit 1
  • HTML 一文读懂

    目录 1 认识HTML 2 HTML 网页构成 HTML基本结构 网页头部信息 3 HTML 基本标签 4 图像标签 5 链接标签 6 行内元素和块元素 7 列表 8 表格 9 媒体元素 10 页面结构分析 11 HTML 内联框架 ifr
  • 本地搭建web服务器、个人博客并发布公网访问

    文章目录 前言 1 安装套件软件 2 创建网页运行环境 指定网页输出的端口号 3 让WordPress在所需环境中安装并运行 生成网页 4 装修 个人网站 5 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会 网络已经成为我们生活
  • Spring Boot + Vue的网上商城之登陆认证

    Spring Boot Vue的网上商城之登陆认证 本篇博客介绍了如何使用Spring Boot和Vue来实现网上商城的登陆认证功能 下面是本文的主要内容总结 后端实现 创建Spring Boot项目 并添加Spring Security和
  • 为什么spring单例模式可以支持多线程并发访问

    为什么spring单例模式可以支持多线程并发访问 1 spring单例模式是指 在内存中只实例化一个类的对象 2 类的变量有线程安全的问题 就是有get和set方法的类成员属性 执行单例对象的方法不会有线程安全的问题 因为方法是磁盘上的一段
  • Vulnhub靶机-BLACKLIGHT

    项目地址 http download vulnhub com blacklight BLACKLIGHT ova 靶机渗透 网络选择桥接模式 使用命令 arp scan l nmap 192 168 0 130 使用dirb遍历网站目录结构
  • Linux自学笔记

    Linux自学笔记 06 常用命令 文件目录类 Linux自学笔记 01 文件系统和目录结构 Linux自学笔记 02 VIM编辑器的安装与使用 Linux自学笔记 03 Linux网络配置 Linux自学笔记 04 远程登录 Linux自
  • 高速模数转换器(ADC)的INL/DNL测量

    摘要 尽管积分非线性和微分非线性不是高速 高动态性能数据转换器最重要的参数 但在高分辨率成像应用中却具有重要意义 本文简要回顾了这两个参数的定义 并给出了两种不同但常用的测量高速模数转换器 ADC 的INL DNL的方法 近期 许多厂商推出