SAR ADC

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

    那末什么是SAR 呢? 顾名思义, SAR实质上是实现一种二进制搜索算法。所以,当内部电路运行在数兆赫兹(MHz)时,由于逐次逼近算法的缘故,故ADC采样速率仅是该数值的几分之一。为了使SAR ADC在很宽的范围上得到应用,那就应该对SAR(逐次逼近寄存器型)的ADC有一个全面的理解。首先对SAR ADC的结构分析。

模拟输入电压(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的输出电压。本例中,第一次比较表明VINVDAC,位2保持为‘1’。DAC置为01102,执行第三次比较。根据比较结果,位1置‘0’,DAC又设置为01012,执行最后一次比较。最后,由于V1N>VDAC,位0确定为‘1’。

    注意,对于4位ADC需要四个比较周期。通常,N位SAR ADC需要N个比较周期,在前一位转换完成之前不得进入下一次转换。由此可以看出,该类ADC能够有效节省功耗和空间,当然,也正是由于这个原因,分辨率在14位至16位,速率高于几Msps的逐次逼近ADC及其少见。一些基于SAR结构的微型ADC已经推向市场。例如,采用QSPITM串行接口的 MAXlll5-MAXlll8系列8位ADC以及采用微小的SOT23封装,分辨率更高的可互换产品-10位MAXl086和12位MAXl286,尺寸只有3mm×3mm。兼容于I2C接口的MAXl036/MAXl037可将四路、8位ADC和一个基准源集成在SOT23封装内。

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

SAR的深入分析

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

SAR ADC的速度受限于:

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

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

3、逻辑开销。
04-04
### Successive Approximation Register (SAR) ADC 工作原理 Successive Approximation Register (SAR) ADC 是一种广泛使用的模数转换器,其核心工作基于逐次逼近算法。该技术通过比较输入模拟信号电压与内部数字-模拟转换器(DAC)产生的参考电压来逐步逼近最终的数字化值。 具体而言,在 SAR ADC 的操作过程中,首先会启动一次采样阶段,其中输入信号被保存在一个保持电容器上[^3]。随后进入逐次逼近过程,此期间寄存器中的位会被逐一设置并测试,直到找到最接近输入电压的数值为止。这一过程通常由控制逻辑完成,并且每次迭代都会调整 DAC 输出以更精确地匹配输入信号[^4]。 #### 应用领域 由于其高精度、低功耗以及相对较低的成本特性,SAR ADC 被应用于众多电子系统之中: 1. **工业自动化**: 在自动传输测量和信令测试设备中,例如 ATME | automatic transmission measuring and signalling testing equipment 中可能集成了此类器件用于数据采集环节[^1]。 2. **图像处理**: 尽管解码器可能是为了将图像数据变换到 CIE LAB 空间而设计,但在某些情况下也可能依赖于高质量的 ADC 来获取原始传感器读数以便进一步分析[^2]。 以下是实现简单 SAR ADC 功能的一个 Python 模拟代码片段: ```python def sar_adc(input_voltage, reference_voltage=5.0, resolution_bits=8): dac_value = 0 for bit_position in range(resolution_bits - 1, -1, -1): temp_dac_output = dac_value + (1 << bit_position) if ((temp_dac_output / (2**resolution_bits)) * reference_voltage) <= input_voltage: dac_value += (1 << bit_position) return dac_value # Example usage print(sar_adc(2.7)) ``` 上述函数接受输入电压作为参数,并返回对应的数字表示形式。它假设满量程范围等于 `reference_voltage` 并具有指定数量的有效比特位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CATHY_T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值