Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
ADC学习笔记,希望能够帮助你!!!。
1.AD转换器基础合集
(1)量化及量化误差
ADC量化误差
将模拟量转换成数字量有两个步骤:采样和量化。
左上图中,当ADC在零输入时,输出代码是零(000)。随着输入电压朝着Vref/8 增加,误差也会增加,因为输入不再是零,但输出代码仍然为零。当输入电压达到Vref/8 时,输出代码从000 变为001,此时输出准确地代表了输入电压,量化误差减小为零。随着输入电压超过Vref/8,误差再次增加,直到输入电压达到Vref/4,此时误差再次降到零。如左上图所示,该过程在整个输入范围内持续,这里的最大误差是1 LSB。这个0 到1 LSB 的范围被称作“量化不确定性” (quantization uncertainty),因为存在各种模拟输入值,它们可能产生任意特定代码,而且我们不清楚输入电压究竟是多少。量化不确定性也被称作“量化误差” (quantization error)。
如果我们添加1/2LSB偏移量到ADC 输入,那么输出代码将在原方式之前改变1/2 LSB。输出从000 变到001,输入值是1/2LSB而不是1LSB,并且所有后续代码的变化都比它们在没有偏移量时的变化提前1/2 LSB。在输入电压为零时,输出代码是零(000),和以前一样。随着输入电压朝着1/2 LSB 增加,误差也增加,因为输入不再是零,但输出代码仍然为零。当输入达到1/2 LSB 时,输出代码从000 变到001。输入还没有达到1 LSB,只是在1/2 LSB 处,因此误差目前是–1/2 LSB. 随着输入超过1/2 LSB,误差朝零移动,直到输入达到1 LSB,此时误差为零。随着输入超过1 LSB,误差也增加,直到输入达到3/2 LSB,此时输出代码增加1,误差的符号再次变为负号。这个过程在整个输入范围内继续。请注意,与没有偏移的情况相比,每个代码转变点都减小了1/2 LSB,这样第一个代码转变(从000到001)是在+1/2 LSB,而最后一个代码转变(从110 到111)是在Vref 之下3/2 LSB 处。
(3)误差及静态参数
AD转换器的静态参数(或者直流参数).主要有这四种直流误差
Offset Error:失调误差(偏移误差)
Gain Error:增益误差
INL: 积分非线性(也可以叫积分线性误差–ILE)
DNL: 微分非线性(也可以叫微分线性误差–DLE)
Offset Error:失调误差(偏移误差)
在放大器和单极性AD转换器中,失调误差和零误差是相同的,但是,在双极性转换器中却不同,要小心区分;
单极性转换器(UNIPOLAR)属于最简单的类型,而双极性转换器(BIPOLAR)一般在现实应用中更有效。双极性转换器分为两类:较简单的一类和单极性转换器类似,可以看作加了一个负失调,而负失调正好为1MSB(许多OFFSETBIPOLAR转换器采用特别设计,可以根据需要开启或关闭该失调,从而可以配置成单极性或双极性转换器使用);另一类称为符号幅度转换器(SIGN MAGNITUDE BIPOLAR),更加复杂,具有N位幅度信息,另有一位相当于模拟信号的符号位。符号幅度ADC主要用于数字电压表(DVM)中具体示例见下图:
从单极性转换器来做这些误差分析;在一个理想的转换器中,一个q/2的输入电压刚好处在输出代码由0转变到1的位置。相对于这一点,任何的偏离被称为零刻度失调误差,或者失调误差。
Gain Error:增益误差
是指对传递函数的理想曲线的偏离
满刻度误差是在满刻度输出转换点处的误差。引起误差的部分原因是由于失调电压所造成的,还有就是传输函数的曲线误差造成。
看下图, 增益误差,它等同于满刻度误差减去了失调误差。如果我们转移实际的传输曲线使得零度失调误差变为零,实际和理想之间转换的差别对满刻度信号来说就是增益误差.
GainError = Full-scale Error - Offset Error
ADC的传递函数可以表示为由D= K + GA得到的直线,其中,D为数字码,A为模拟信号,K和G为常数。在单极性转换器中,K的理想值为0;在失调双极性转换器中,该值为–1MSB。失调误差为K的实际值与理想值之差。增益误差为G与其理想值之差,一般表示为两者之间的百分比差,不过也可定义为满量程下增益误差对总误差的贡献(单位:mV或LSB)。通常情况下,数据转换器的用户可以调整这些误差。但请注意,放大器失调在零输入下调整,增益在近满量程下调整。双极性数据转换器的调整算法比较复杂。
DNL和INL
ADC学习系列(二):ADC参数详解
DNL是理想输入代码宽度和实际输入代码宽度之间的差额。输入代码宽度是产生同一数字输出代码的输入值的范围。用通俗易懂的语言来描述这个DNL特性就是说,理论上我们用数字量的台阶去给模拟电压值进行编码的时候,台阶的宽度应该都是一样的,也就是说当ADC输入和输出是呈线性关系的时候,每次模拟输入按照最小分辨率LSB进行步进的时候,数字输出就增加1,也就是0000变成0001的一个过程。但是由于DNL,导致可能当数字输出由1000变成1001的时候,模拟值的变化却不是按照LSB进行增长的,可能会多一点也可能少一点,下图描述了这种现象。
根据DNL这种特性,我们来假设一下最坏的情况,当DNL=-1.0LSB,或者某一时刻由于DNL误差导致正向多了0.5LSB,下一个时刻负向少了0.5LSB,可能会导致编码时丢码,如下图所示。
当DNL=-1.0LSB, 就会有失码; 为了避免在传输函数中丢失代码,DNL应该大于–1.0LSB(即比–1.0LSB 更接近正数)。一旦当DNL等于–1.0,可能缺失一个或多个编码。DNL少于–1时,意味着部分传输函数呈现负向的斜率。
积分大多跟累计误差有关,根据实际的模拟出一条曲线。INL是指ADC器件在所有的数值点上对应的模拟值和真实值之间误差最大的那一点的误差值,表示测量值的绝对误差。下图绿色虚线所示用的表示理想曲线方法是两点法,就是把头和尾用直线连起来。红色虚线是根据实际的情况模拟出的曲线,找到两个曲线纵坐标差距最大的点。
对于ADC,最常用的做法是穿过代码中点或码中心画一条直线。选择直线有两种常用方法:端点法和最佳直线法,如下图所示:
理解INL和DNL的关系, 一句话, INL 是 DNL的积分和,好的微分非线性并不能保证有一个好的积分非线性,但好的积分非线性可以说明微分非线性也不会太差。
(4)动态参数SNR
与数据采集系统基础知识内容基本一致。
(5)动态参数之THD, SINAD, ENOB…
信纳比SINAD:
指的是信号+噪声+谐波的功率与谐波+噪声的功率比值 。计算公式:SINAD=(S+N+D)/(D+N),即输出信号功率与其余所有非输出信号功率之比。SINAD很好地反映了ADC的整体动态性能,因为它包括所有构成噪声和失真的成分。
(6)时钟抖动(Clock Jitter)对SNR的影响
(7)噪声系数
(8)噪声基底Noise Floor
(9)折合到输入端噪声, 有效分辨率和有效位数的区别
(10)互调失真IMD
积分型 AD 的转换时间是毫秒级属低速 AD,逐次比较型 AD 是微秒级属中速 AD,全并行/ 串并行型 AD 可达到纳秒级。转换时间是衡量一个ADC是不是高速的主要指标,高速ADC转换时间小于1us,低俗ADC转换时间大于300us。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章