12 Bit ADC与LSB的含义

【转】12 Bit ADC与LSB的含义

LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

当选择模数转换器(ADC)时,最低有效位(LSB)这一参数的含义是什么?有位工程师告诉我某某生产商的某款12位转换器只有7个可用位。也就是说,所谓12位的转换器实际上只有7位。他的结论是根据器件的失调误差和增益误差参数得出的,这两个参数的最大值如下:

  失调误差 =±3LSB,

  增益误差 =±5LSB,

  乍一看,觉得他似乎是对的。从上面列出的参数可知最差的技术参数是增益误差(±5 LSB)。进行简单的数学运算,12位减去5位分辨率等于7位,对吗?果真如此的话,ADC生产商为何还要推出这样的器件呢?增益误差参数似乎表明只要购买成本更低的8位转换器就可以了,但看起来这又有点不对劲了。正如您所判断的,上面的说法是错误的。

  让我们重新来看一下LSB的定义。考虑一个12位串行转换器,它会输出由1或0组成的12位数串。通常,转换器首先送出的是最高有效位(MSB)(即LSB + 11)。有些转换器也会先送出LSB。在下面的讨论中,我们假设先送出的是MSB(如图1所示),然后依次送出MSB-1 (即 LSB + 10)和MSB -2(即LSB + 9)并依次类推。转换器最终送出MSB -11(即LSB)作为位串的末位。

12 Bit ADC与LSB的含义

  LSB这一术语有着特定的含义,它表示的是数字流中的最后一位,也表示组成满量程输入范围的最小单位。对于12位转换器来说,LSB的值相当于模拟信号满量程输入范围除以212 或 4,096的商。如果用真实的数字来表示的话,对于满量程输入范围为4.096V的情况,一个12位转换器对应的LSB大小为1mV。但是,将LSB定义为4096个可能编码中的一个编码对于我们的理解是有好处的。

  让我们回到开头的技术指标,并将其转换到满量程输入范围为4.096V的12位转换器中:

  失调误差 = ±3LSB =±3mV,

  增益误差 =±5LSB = ±5mV,
  
  这些技术参数表明转换器转换过程引入的误差最大仅为8mV(或 8个编码)。这绝不是说误差发生在转换器输出位流的LSB、LSB-1、LSB-2、LSB-3、LSB-4、LSB-5、LSB-6和 LSB-7 八个位上,而是表示误差最大是一个LSB的八倍(或8mV)。准确地说,转换器的传递函数可能造成在4,096个编码中丢失最多8个编码。丢失的只可能是最低端或最高端的编码。例如,误差为+8LSB ((+3LSB失调误差) + (+5LSB增益误差)) 的一个12位转换器可能输出的编码范围为0 至 4,088。丢失的编码为4088至4095。相对于满量程这一误差很小仅为其0.2%。与此相对,一个误差为-3LSB((-3LSB失调误差)—(-5LSB增益误差))的12位转换器输出的编码范围为3至4,095。此时增益误差会造成精度下降,但不会使编码丢失。丢失的编码为0、1和2。这两个例子给出的都是最坏情况。在实际的转换器中,失调误差和增益误差很少会如此接近最大值。

  在实际应用中,由于ADC失调或增益参数的改进而使性能提升的程度微不足道,甚至可以忽略。但是,对于那些将精度作为一项设计目标的设计人员来说,这种假设太过绝对。利用固件设计可以很容易地实现数字校准算法。但更重要的是,电路的前端放大/信号调理部分通常会产生比转换器本身更大的误差。

  通过上面的讨论可以对本文开头提到的错误结论有一个更为全面而清晰的认识。事实上,上述的12位转换器的精度约为11.997位。采用微处理器或单片机可以利用简单的校准算法消除这种失调和增益误差,这对设计人员来说无疑是个好消息。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

转自 -> http://bbs.21ic.com/icview-175577-1-1.html

【问】:我现在在做项目:比如项目要求只能5%的误差,那我在电路设计和材料选型上该怎么把握,既不能材料选型过高,导致成本过高,也不能选择材料要求过低,达不到要求。
信号本身的误差,信号放大的误差,ad采样误差等其他误差最终导致总的误差是多少,怎么计算的呢。
是不是可以由软件补偿来完成呢,
我还是不太清楚的。
请教达人。

【答1】:比如规格要求整个系统精度为0.1%,那么怎么选ADC呢?先选8位AD,8位AD 1LSB = 0.39%,很显然不可能满足要求。重新再选,这时选10位的AD,10位AD 1LSB = 0.09%,看似满足规格要求,实则不然,因为ADC有DNL误差,INL误差,失调误差,增益误差。DNL和INL一般为+/-1LSB,失调误差为3LSB,增益误差为4LSB,所有的这些累加起来一共有9LSB。
9LSB的误差以为着什么呢?就是说9LSB 约等于2^3,这时10为的AD只能降额为7位AD使用,已不能满足要求。需要ENOB更多的ADC,选14位ADC,降额3位使用,实际就是11位,11位AD的1LSB = 0.04%,
此时满足要求,但是还不算上温漂,放大器的增益误差,电阻的精度误差等,留给它们的余量有 0.1% - 0.04% = 0.06%,然后在依据这个余量来选其他的器件,比如参考源精度,温漂等。
假如参考源在整个温度范围内有5ppm/'c, 假如整个系统工作在0- 70'c,那么参考源漂移引起的误差为 350ppm = 0.035, 此时有0.06% - 0.035%的余量留给放大器及其他元器件的误差,在此不再累赘。

【答2】:分析的时候是误差合成
设计的时候是误差分解

比如用两个电阻R1,R2把电压Vi分压,输出电压Vo=K*Vi=R1/(R1+R2)*Vi
R1,R2相对误差分别是e1,e2
那么总相对误差 e≈(1-K)*(e1+e2)
其实,对于一般的线性系统,只要每项相对误差足够小,都可以简单相加(当然要包含系统的增益)

这样的公式怎么来的?一、求偏导。二、忽略高阶小量。三、泰勒展开,再忽略高阶小量。
就这点东西。
当然,简单相加属于“Worst-Case”分析方法,如果你要更精确更严谨的计算,比方说在计量检定的时候,那就得动用数理统计了,比方说,用均方根代替求和

上一篇:关于servelet入门介绍


下一篇:java.lang.Void类源码解析_java - JAVA