是采样速率低于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位转换结果储存在寄存器内。

图2给出了一个4位转换示例,y轴(和图中的粗线)表示DAC的输出电压。

本例中,第一次比较表明VIN < VDAC。所以,位3置为0。

然后DAC被置为0100,并执行第二次比较。由于VIN > VDAC,位2保持为1。

DAC置为0110,执行第三次比较。根据比较结果,位1置0,

DAC又设置为0101,执行最后一次比较。

最后,由于VIN > VDAC,位0确定为1。

注意,对于4位ADC需要四个比较周期。

通常,N位SAR ADC需要N个比较周期,在前一位转换完成之前不得进入下一次转换。

由此可以看出,该类ADC能够有效降低功耗和空间,当然,也正是由于这个原因,

分辨率在14位至16位,速率高于几Msps (每秒百万次采样)的逐次逼近ADC极其少见。

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。

作为二进制搜索算法的第一步,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输出位)。

比较器

比较器需要具有足够的速度和精度,尽管比较器的失调电压不影响整体的线性度,

它将给系统传输特性曲线带来一个偏差,为减小比较器的失调电压引入了失调消除技术。

然而,还必须考虑噪声,比较器的等效输入噪声通常要设计在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的采样速率,但很难找到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和比较器),需要达到与整体系统相当的精度。

The ADC in STM32x microcontrollers uses the SAR (successive approximation register) principle,

by which the conversion is performed in several steps.

The number of conversion steps is equal to the number of bits in the ADC converter.

Each step is driven by the ADC clock.

Each ADC clock produces one bit from result to output.

ADC internal design is a switched-capacitor type.

The following figures (Figure 1 to Figure 6) explain the principle of ADC operation.

The example given below shows only the first steps of approximation

but the process continues till the LSB is reached.

STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)的更多相关文章

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

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

  2. 理解逐次逼近寄存器型ADC:与其它类型ADC的架构对比【转】

    转自:http://bbs.dzsc.com/space/viewspacepost.aspx?postid=86760 摘要:逐次逼近寄存器型(SAR)模数转换器(ADC)占据着大部分的中等至高分辨 ...

  3. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

  4. STM32的备份寄存器和控制状态寄存器

    STM32的备份寄存器和控制状态寄存器 1 备份寄存器用于RTC时钟 RTC时钟可以在掉电以后继续计数,保证时间的延续,但是重新上电以后需要配置,保证之前的计数不会被清除,可以借助备份寄存器实现,备份 ...

  5. Java 硬件同步机制 Swap 指令模拟 + 记录型信号量模拟

    学校实验存档//.. 以经典的生产者消费者问题作为背景. 进程同步方式接口: package method; /** * P表示通过,V表示释放 */ public interface Method ...

  6. Java硬件同步机制Swap指令模拟+记录型信号量模拟

    学校实验存档//.. 以经典的生产者消费者问题作为背景. 进程同步方式接口: package method; /** * P表示通过,V表示释放 */ public interface Method ...

  7. 【12】python 栈型数据结构模拟、队列型数据结构模拟

    一.压栈操作模拟 #__author:"吉*佳" #date: 2018/10/21 0021 #function:栈 # 栈:即是先进后出的一种数据结构 # (1)模拟压栈操作 ...

  8. STM32的备份寄存器测试

    1. 研究STM3的备份寄存器,注意,如果要测试这个例程的话,VBAT不能和VDD接一起,必须分开. 2. 理解,备份寄存器可以有VBAT独立供电,也就是外接电池,备份寄存器在VBAT供电情况下,如果 ...

  9. STM32先设置寄存器还是先使能时钟

    http://zhidao.baidu.com/link?url=gdVNuIgLOJcV37QzbCx0IrFip5pskiPQDWpoZayr_xBEe120p4d_iWtrfDl1d4tSFaH ...

随机推荐

  1. LeetCode(29): 两数相除

    Medium! 题目描述: 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor ...

  2. linux + docker + selenium grid 实现分布式执行selenium脚本

    Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...

  3. form总结

    在Javascript 中,页面上的每一对<form> 标记都解析为一个对象,即form 对象. 可以通过document.forms 获取以源顺序排列的文档中所有form 对象的集合. ...

  4. AOJ 2170 Marked Ancestor[并查集][离线]

    题意: 给你一颗N个节点的树,节点编号1到N.1总是节点的根.现在有两种操作: M v: 标记节点v Q v: 求出离v最近的标记的相邻节点.根节点一开始就标记好了. 现在给一系列操作,求出所有Q操作 ...

  5. (canvas)两小球碰撞后的速度问题研究

    这两天在研究canvas碰撞 先把小球开始运动的图拿出来 参考了一下别的的代码,在两个小球碰撞处理上,我觉得不完善 怎么样处理才算完善呢,当然是要用高中物理学的动量守恒了和机械能守恒了 机械能守恒我其 ...

  6. c++ primer 笔记 (一)

    昨天开始看的<C++ Primer>,确实不错.希望这周抓紧看完,每天做下笔记,以便以后复习. main函数返回一个值给操作系统   操作系统通过main函数返回的值来确定程序是否成功执行 ...

  7. Codeforces Round #369 (Div. 2)-D Directed Roads

    题目大意:给你n个点n条边的有向图,你可以任意地反转一条边的方向,也可以一条都不反转,问你有多少种反转的方法 使图中没有环. 思路:我们先把有向边全部变成无向边,每个连通图中肯定有且只有一个环,如果这 ...

  8. php 前一天或后一天的日期

    php 判断今天的前一天,或前后多少天的代码 <?php date_default_timezone_set('PRC'); //默认时区 echo "今天:",date(& ...

  9. C++ 对Ctrl+Z的解释

    只有当Ctrl+Z单独位于一行的行首时,才表示输入的终止!(即无论何时,都推荐先回车,再Ctrl+Z,再回车结束输入) 当Ctrl+Z位于行中.行末时,输入都不会结束. (Ctrl+Z表示一个字符,其 ...

  10. 微信小程序 --- 表单输入验证(手机号、邮箱验证、输入非空)

    js代码 Page({                   /**    * 页面的初始数据    */         data: {         indicatorDots: false,   ...