转自:http://bbs.dzsc.com/space/viewspacepost.aspx?postid=86760

摘要:逐次逼近寄存器型(SAR)模数转换器(ADC)占据着大部分的中等至高分辨率ADC市场。SAR ADC的采样速率最高可达5Msps,分辨率为8位至18位。SAR架构允许高性能、低功耗ADC采用小尺寸封装,适合对尺寸要求严格的系统。

  本文说明了SAR ADC的工作原理,采用二进制搜索算法,对输入信号进行转换。本文还给出了SAR ADC的核心架构,即电容式DAC和高速比较器。最后,对SAR架构与流水线、闪速型以及Σ-Δ ADC进行了对比。

  引言

  逐次逼近寄存器型(SAR)模拟数字转换器(ADC)是采样速率低于5Msps (每秒百万次采样)的中等至高分辨率应用的常见结构。SAR ADC的分辨率一般为8位至16位,具有低功耗、小尺寸等特点。这些特点使该类型ADC具有很宽的应用范围,例如便携/电池供电仪表、笔输入量化器、工业控制和数据/信号采集等。

  顾名思义,SAR ADC实质上是实现一种二进制搜索算法。所以,当内部电路运行在数兆赫兹(MHz)时,由于逐次逼近算法的缘故,ADC采样速率仅是该数值的几分之一。

  SAR ADC的架构

  尽管实现SAR ADC的方式千差万别,但其基本结构非常简单(见图1)。模拟输入电压(VIN)由采样/保持电路保持。为实现二进制搜索算法,N位寄存器首先设置在中间刻度(即:100... .00,MSB设置为1)。这样,DAC输出(VDAC)被设为VREF/2,VREF是提供给ADC的基准电压。然后,比较判断VIN是小于还是大于VDAC。如果VIN大于VDAC,则比较器输出逻辑高电平或1,N位寄存器的MSB保持为1。相反,如果VIN小于VDAC,则比较器输出逻辑低电平,N位寄存器的MSB清0。随后,SAR控制逻辑移至下一位,并将该位设置为高电平,进行下一次比较。这个过程一直持续到LSB。上述操作结束后,也就完成了转换,N位转换结果储存在寄存器内。

图1. 简单的N位SAR ADC架构

  图2给出了一个4位转换示例,y轴(和图中的粗线)表示DAC的输出电压。本例中,第一次比较表明VIN < VDAC。所以,位3置为0。然后DAC被置为01002,并执行第二次比较。由于VIN > VDAC,位2保持为1。DAC置为01102,执行第三次比较。根据比较结果,位1置0,DAC又设置为01012,执行最后一次比较。最后,由于VIN > VDAC,位0确定为1。

图2. SAR工作原理(以4位ADC为例)

  注意,对于4位ADC需要四个比较周期。通常,N位SAR ADC需要N个比较周期,在前一位转换完成之前不得进入下一次转换。由此可以看出,该类ADC能够有效降低功耗和空间,当然,也正是由于这个原因,分辨率在14位至16位,速率高于几Msps (每秒百万次采样)的逐次逼近ADC极其少见。一些基于SAR结构的微型ADC已经推向市场。MAX1115/MAX1116和MAX1117/MAX1118 8位ADC以及分辨率更高的可互换产品MAX1086和MAX1286 (分别为10位和12位),采用微小的SOT23封装,尺寸只有3mm x 3mm。12位MAX11102采用3mm x 3mm TDFN封装或3mm x 5mm µMAX®封装。

  SAR ADC的另一个显着的特点是:功耗随采样速率而改变。这一点与闪速ADC或流水线ADC不同,后者在不同的采样速率下具有固定的功耗。这种可变功耗特性对于低功耗应用或者不需要连续采集数据的应用非常有利(例如,用于PDA 数字转换器)。

  SAR的深入分析

  SAR ADC的两个重要部件是比较器和DAC,稍后我们可以看到,图1中采样/保持电路可以嵌入到DAC内,不作为一个独立的电路。

  SAR ADC的速度受限于:

  ·DAC的建立时间,在这段时间内必须稳定在整个转换器的分辨率以内(如:? LSB)

  ·比较器,必须在规定的时间内能够分辨VIN与VDAC的微小差异

  ·逻辑开销

  DAC

  DAC的最大建立时间通常取决于其MSB的建立时间,原因很简单,MSB的变化代表了DAC输出的最大偏移。另外,ADC的线性也受DAC线性指标的限制。因此,由于元件固有匹配度的限制,分辨率高于12位的SAR ADC常常需要调理或校准,以改善其线性指标。虽然这在某种程度上取决于处理工艺和设计,但在实际的DAC设计中,元件的匹配度将线性指标限制在12位左右。

  许多SAR ADC采用具有固有采样/保持功能的电容式DAC。电容式DAC根据电荷再分配的原理产生模拟输出电压,由于这种类型的DAC在SAR ADC中很常用,所以,我们最好讨论一下它们的工作原理。

  电容式DAC包括一个由N个按照二进制加权排列的电容和一个“空LSB”电容组成的阵列。图3是一个16位电容式DAC与比较器相连接的范例。采样阶段,阵列的公共端(所有电容连接的公共点,见图3)接地,所有自由端连接到输入信号(模拟输入或VIN)。采样后,公共端与地断开,自由端与VIN断开,在电容阵列上有效地获得了与输入电压成比例的电荷量。然后,将所有电容的自由端接地,驱动公共端至一个负压-VIN

图3. 16位电容式DAC示例

  作为二进制搜索算法的第一步,MSB电容的底端与地断开并连接到VREF,驱动公共端电压向正端移动½VREF

  因此,VCOMMON = -VIN + ½ × VREF

  如果VCOMMON < 0 (即VIN > ½ × VREF),比较器输出为逻辑1。如果VIN < ½ × VREF,比较器输出为逻辑0。

  如果比较器输出为逻辑1,MSB电容的底端保持连接至VREF。否则,MSB电容的底端连接至地。

  接下来,下一个较小电容的底端连接至VREF,将新的VCOMMON电压与地电位进行比较。

  继续上述过程,直至所有位的值均确定下来。

  简言之,VCOMMON = -VIN + BN-1 × VREF/2 + BN-2 × VREF/4 + BN-1 × VREF/8 + ... + B0 × VREF/2N-1 (B_为比较器输出/ADC输出位)。

  DAC校准

  对于一个理想的DAC来讲,每个与数据位相对应的电容应该精确到下一个较小电容的两倍。在高分辨率ADC (如16位)中,这会导致过宽的数值范围,以致无法用经济、可行的尺寸实现。16位的SAR ADC (如MAX195)实际由两列电容组成,利用电容耦合减小LSB阵列的等效容值。MSB阵列中的电容经过微调以降低误差。LSB电容的微小变化都将对16位转换结果产生明显的误差。不幸的是,仅仅依靠微调并不能达到16位的精度,或者补偿由于温度、电源电压或其它参数的变化所造成的性能指标的改变。考虑到上述原因,MAX195内部为每个MSB电容配置了一个校准DAC,这些DAC通过电容耦合到主DAC输出,根据它们的数字输入调节主DAC的输出。

  校准时,首先要确定用于补偿每个MSB电容误差的修正代码,并存储该代码。此后,当主DAC对应的数据位为高电平时就把存储的代码提供给适当的校准DAC,补偿相关电容的误差。一般由用户发起校准过程,也可以在上电时进行自动校准。为降低噪声效应,每个校准过程都执行许多次(MAX195大约持续14,000个时钟周期),结果取平均值。当供电电压稳定后最好进行一次校准。高分辨率ADC应该在电源电压、温度、基准电压或时钟等任何一个参数发生显着变化后进行再校准,因为这些参数对直流偏移有影响。如果只考虑线性指标,可以容许这些参数有较大改变。因为校准数据是以数字方式存储的,无需频繁转换即可保持足够的精度。

  比较器

  比较器需要具有足够的速度和精度,尽管比较器的失调电压不影响整体的线性度,它将给系统传输特性曲线带来一个偏差,为减小比较器的失调电压引入了失调消除技术。然而,还必须考虑噪声,比较器的等效输入噪声通常要设计在1 LSB以内。比较器必须能够分辨出整个系统精度以内的电压,也就是说比较器需要保证与系统相当的精度。

  SAR ADC与其它ADC结构的比较

  与流水线ADC相比

  流水线ADC采用一种并行结构,并行结构中的每一级同时进行一位或几位的逐次采样。这种固有的并行结构提高了数据的吞吐率,但要以功耗和延迟为代价。所谓延迟,在此情况下定义为ADC采样到模拟输入的时间与输出端得到量化数据的时间差。例如,一个5级流水线ADC至少存在5个时钟周期的延迟,而SAR只有1个时钟周期的延迟。需要注意的是,延迟的定义只是相对于ADC的吞吐率而言,并非指SAR的内部时钟,该时钟是吞吐率的许多倍。流水线ADC需要频繁地进行数字误差校准,以降低对流水线上每一级闪速ADC (即比较器)的精度要求。而SAR ADC的比较器精度只需与整体系统的精度相当即可。流水线ADC一般比同等级别的SAR需要更多的硅片面积。与SAR一样,精度高于12位的流水线ADC通常需要一些某种形式的微调或校准。

  与闪速ADC相比

  闪速ADC由大量的比较器构成,每个比较器包括一个宽带、低增益预放大器和锁存器。预放大器必须仅用于提供增益,不需要高线性度和高精度,这意味着只有比较器的门限值才需具有较高的精度。所以,闪速ADC是目前转换速率最快的一种架构。

  通常需要折衷考虑闪速ADC的速度以及SAR DAC的低功耗和小尺寸特性。尽管极高速的8位闪速ADC (以及它们的折叠/内插变种)具有高达1.5Gsps的采样速率(例如MAX104、MAX106和MAX108),但很难找到10位的闪速ADC,而12位(及更高位)闪速ADC还没有商用化的产品。这是由于分辨率每提高1位,闪速ADC中比较器的个数将成倍增长,同时还要保证比较器的精度是系统精度的两倍。而在SAR ADC中,提高分辨率需要更精确的元件,但复杂度并非按指数率增长。当然,SAR ADC的速度是无法与闪速ADC相比较的。

  与Σ-Δ转换器相比

  传统的过采样/Σ-Δ转换器被普遍用于带宽限制在大约22kHz的数字音频应用。近来,一些宽带Σ-Δ转换器能够达到1MHz至2MHz的带宽,分辨率在12位至16位。这通常由高阶Σ-Δ调制器(例如,4阶或更高)配合一个多位ADC和多位反馈DAC构成。Σ-Δ转换器具有一个优于SAR ADC的先天优势:即不需要特别的微调或校准,即使分辨率达到16位至18位。由于该类型ADC的采样速率要比有效带宽高得多,因此也不需要在模拟输入端增加快速滚降的抗混叠滤波器。由后端数字滤波器进行处理。Σ-Δ转换器的过采样特性还可用来“平滑”模拟输入中的任何系统噪声。

  Σ-Δ转换器要以速率换取分辨率。由于产生一个最终采样需要采样很多次(至少是16倍,一般会更多),这就要求Σ-Δ调制器的内部模拟电路的工作速率要比最终的数据速率快很多。数字抽取滤波器的设计也是一个挑战,并要消耗相当大的硅片面积。在不远的将来,速度最高的高分辨率Σ-Δ转换器的带宽将不大可能高出几兆赫兹很多。

  总结

  综上所述,SAR ADC的主要优点是低功耗、高分辨率、高精度、以及小尺寸。由于这些优势,SAR ADC常常与其它更大的功能集成在一起。SAR结构的主要局限是采样速率较低,并且其中的各个单元(如DAC和比较器),需要达到与整体系统相当的精度。

理解逐次逼近寄存器型ADC:与其它类型ADC的架构对比【转】的更多相关文章

  1. STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)

    是采样速率低于5Msps (每秒百万次采样)的中等至高分辨率应用的常见结构. SAR ADC的分辨率一般为8位至16位,具有低功耗.小尺寸等特点. 这些特点使该类型ADC具有很宽的应用范围,例如便携/ ...

  2. SAR ADC : 逐次逼近寄存器型(SAR)模数转换器(ADC)

    1.为实现二进制搜索算法,N位寄存器首先设置在中间刻度(即:100... .00,MSB设置为1).这样,DAC输出(VDAC)被设为VREF/2,VREF是提供给ADC的基准电压.然后,比较判断VI ...

  3. 理解JavaScript的数值型数据类型

    分享一些在JavaScript中遇到的一些实用的技巧. 理解JavaScript的数值型数据类型 JavaScript的数值型数据类型只有一种:number.即不管是整数还是浮点数,JavaScrip ...

  4. 差分ADC到单端ADC

    单片机可以处理单端ADC(不在电压范围内要进行分压),也可以处理差分ADC(但需要双路输入).差分信号在传输过程中抗共模干扰能力很强,所以传输中都用差分传输,到ADC时可以差分也可以单端(需要放大器处 ...

  5. TPYBoard开发板ADC数模转换一: 初识ADC使用

    转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 1.前言 ADC,Analog-to-DigitalConverter的缩写,指模/数转换器或者模数转换器[1].是指将连续变化的模 ...

  6. 深入理解Java的整型类型:如何实现2+2=5?

    先看下这段神奇的Java代码: public static void main(String[] args) throws Exception { doSomethingMagic(); System ...

  7. javascript 中string 型数据转换成int类型

    var str1 = "1234";var str2 = "1234";number = parseInt(str1); number就是int型 str1+s ...

  8. C++取出string的一部分以及int型转成string类型

    在实际应用中,对文件的操作是十分频繁的,我们需要对文件进行拷贝,重命名等操作,这是就需要获取文件的绝对路径,一般情况下,该路径是以字符串的形式存储的,如果我们需要对文件进行重命名等,就需要对绝对路径这 ...

  9. MYSQL中的数值型数据类型与字符串类型

    /* 数值型数据类型主要用来存储数字,包含的类型有: TINYINT.SMALLINT.MEDIUMINT. INT(INTEGER). BIGINT TINGINT占1个字节,SMALLINT占2个 ...

随机推荐

  1. 数据库字段Pointer的操作方法

    多数情况下要要是Pointer字段实现了类似传统关系数据库的关联操作,联合查询能够减少提交次数,今天带来几种过滤器的使用方法: 首先确定2个Class,也就是表: A表:user表,用户个人信息,字段 ...

  2. mysql 恢复

    一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...

  3. Inno Setup 教程

    参考博客:制作部署安装包:Inno Setup 参考资料:Inno Setup详细教程 参考资料:Innosetup使用详细全面教程 个人使用的 风铃夜思雨 的汉化版,版本:5.5.5 ; 脚本由 I ...

  4. ASM磁盘组兼容性设置

    磁盘组的兼容性参数:-compatible.asm:最低版本的asm软件,这也会影响asm元数据在磁盘中的结构-compatible.rdbms:最低版本的rdbms软件,决定了rdbms是否能够mo ...

  5. 设置GPnP profile文件中asm spfile的位置

    登录asmcmd asmcmd> spset <location-绝对路径> 示例: ASMCMD> spset +DATA/asm/asmparameterfile/asms ...

  6. Java基础之写文件——缓冲区中的多条记录(PrimesToFile3)

    控制台程序,上一条博文(PrimesToFile2)每次将一个素数写入到文件中,所以效率不是很高.最好是使用更大的缓冲区并加载多个素数. 本例重复使用三个不同的视图缓冲区加载字节缓冲区并尽可能加入更多 ...

  7. switch为什么不能用string类型?

    switch()括号里面的参数是一个int型值啊  你要可以转换为int型的参数才行得通啊

  8. C++Primer 第十二章

    //1.标准库提供了两种智能指针类型来管理动态对象,均定义在头文件memory中,声明在std命名空间. // shared_ptr:允许多个指针指向同一个对象. // unique_ptr:独占所指 ...

  9. 启动一个线程是用run()还是start()?

    启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行.这并不意味着线程就会立即运行.run ...

  10. 卸载了mysql之后,mysql服务仍在,显示读取描述失败,错误代码2

    卸载了mysql之后,mysql服务仍在,显示读取描述失败,错误代码2 用360软件管家,卸载mysql5.5,卸载了mysql之后,再依次删除 mysql的安装目录.c盘下的隐藏文件夹Program ...