充分理解ADC预充电缓冲器的重要性-运放缓存

2024-03-04 01:20

本文主要是介绍充分理解ADC预充电缓冲器的重要性-运放缓存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

新型高性能模数转换器(ADC)设计师的目标之一是放宽对外部输入放大器和基准的设计要求,他们的通常做法是内置针对模拟和基准输入的集成式缓冲器。然而,对于高性能ADC而言,在信号链中添加任何元件都会降低整体性能。

设计优先事项包括优选硅工艺、电路精心设计以及良好的布局和IC封装,以优化电压偏移、增益、信噪比(SNR)和总谐波失真(THD)等诸多指标。添加传统的缓冲器会影响这些指标,而且很多时候,这些缓冲器会成为高性能ADC中的主要误差源。预充电缓冲器是针对传统缓冲器的一种替代方案,如图1所示。本文将重点介绍预充电缓冲器在模拟输入通道和基准输入通道中的使用和优势。

在这里插入图片描述

图1:预充电缓冲器弥补宽带ADC(ADS127L11-24位、400 KSPS、delta-sigma)性能的示意图。本文资料来源:TI

降低输入放大器驱动要求的方法之一是在ADC输入端使用电荷桶滤波器,其中的差分电容比内置采样电容要大。这个简单的电阻电容网络(图2所示的Rfilt和Cfilt)充当电荷储存器,用以提供输入采样电容(Cin)所需的大部分瞬时电流。外部滤波电容Cfilt将峰值输入电流从相对较高的电流脉冲(几十毫安量级)降低到峰值小于1mA,平均电流仅为数百微安。

使用大的外部输入电容除了能降低峰值电流外还能降低对输入放大器的高带宽要求,从而提供更广泛的放大器选择。这些额外的放大器选项允许设计师在低功耗、直流性能和许多其他设计标准方面做出更好的优化。

然而,使用大型外部输入电容的一个缺点是它限制了最高输入信号频率。实际上它是一个一阶低通电阻电容RC滤波器。另一个缺点是电容器阻抗在较高输入频率下变得非常低,从而容易导致大电流流过电容器。源自输入放大器的这种大电流会导致系统功耗增加,这对于高密度或电池供电的系统来说是非常不利的。

许多低功耗精密放大器可能无法在支持大电流的同时保持良好的信噪比和总谐波失真。对于极低频输入信号或直流输入信号来说,使用大输入滤波电容可能是一种可接受的方法,但对于10kHz或更高的输入频率来说,负载电流和由此产生的功耗可能会变得高的无法接受。

预充电缓冲器的设计灵活性

如果采用预充电缓冲器,既可以放宽输入放大器驱动要求,又不会降低ADC总体精度。预充电缓冲器是一种专用放大器,在采集周期的前半部分为ADC的内置采样电容充电,在采集周期的后半部分断开连接,以实现ADC输入端和内置采样电容之间的直接连接。在采集周期的最后阶段,将内置采样电容直接连接到输入端,这样就可以从信号通道中消除预充电缓冲器带来的任何误差。预充电缓冲器的使用,可以将外部输入放大器的整体动态负载降低99%以上。

在与宽带宽外部输入放大器结合使用时,预充电缓冲器还有一个好处,就是具有更低的总谐波失真。预充电缓冲器与高速输入放大器一起使用,可以将总的谐波失真改进10dB或更多。同时开启高速放大器和内置预充电缓冲器,灵活性得到改善,不过带来的问题是功耗增加了;这就需要在优先考虑低失真还是低功耗之间做出折衷权衡。
在这里插入图片描述

图2:典型高电平信号链中采用带有内置预充电缓冲器的全差分输入放大器。

预充电缓冲器的主要缺点是在采集阶段的后半程完成对内置采样电容的充电所需的动态电流很小。然而,这个动态电流还不到直接驱动(不启用预充电缓冲器)输入采样电容所需电流的1%,因此支持使用带宽窄得多的放大器和更小的输入滤波电容。
图2所示的典型高电平信号链中,外部输入放大器和内置预充电缓冲器为Cin充电,而图3则突出显示了使用预充电缓冲器时的时序细节。

在这里插入图片描述

图3:粗采样和精细采样阶段的输入采样电容电压(Vcin)示意图。

AIN-Coarse、AIN-Fine和AIN-Reset是内置开关控制信号。当控制电平为1时内置开关打开,当控制电平为0时内置开关关闭。观察内置采样保持电容两端的Vcin电压波形可以发现,预充电缓冲器在AIN-Coarse=1阶段将输入电容电压充电至最终目标值的99.9%左右(3.98V)。而在AIN-Fine=1阶段,外部输入放大器将内置采样电容充电至最终输入电压(4V)。

预充电缓冲器优化输入电流

如前所述,预充电缓冲器降低了驱动输入所需的平均输入电流。在推导启用预充电缓冲器时的平均输入电流公式之前,让我们先推导出在不用预充电缓冲器而是直接驱动输入端时的平均输入电流公式。针对平均输入电流的公式1基于人们熟悉的电容中总电荷公式:
Qin=Cin×Vin (1)
其中,Qin是Cin上的总电荷,Vin是采集周期结束时采样电容上的电压,约等于ADC输入端的电压。
由于采样电容在转换阶段结束时被复位为0V,因此可以用公式2表示平均输入电流:
Iavg=Qin×Fmod (2)
其中Fmod是调制器采样率或ADC输入端的采样频率。
对于ADS127L11,高速模式下,调制器采样率等于主时钟频率Fclk的一半。将公式3和公式4代入公式2就能得到公式5:
Qin=Cin×Vin (3)
Fmod=Fclk /2 (4)
Iavg=Fclk/2×Cin×Vin (5)
使用预充电缓冲器时,外部输入放大器提供的电荷是输入电容上总电荷的一小部分。在公式6、7和8中,G代表预充电缓冲器的增益,理想值G=1,典型范围为0.995<G<1.005。如果将AIN-coarse阶段结束时输入电容充电达到的电压表示为Vin-coarse,则预充电缓冲器提供的电荷为:
Qcoarse=Vin-coarse×Cin (6)
Vin-coarse =G×Vin (7)
将公式7代入公式6得到公式8:
Qcoarse=G×Vin×Cin (8)
由于在采集阶段结束时输入电容上的总电荷为Cin×Vin,因此可以将输入端子直接提供的电荷表示为Qfine,如公式9和10所示:
Qtotal=Cin×Vin (9)
Qtotal=Qcoarse+Qfine (10)
重整公式10得到公式11:
Qfine=Qtotal–Qcoarse (11)
将公式8和9代入公式11得到公式12和13:
Qfine=Vin×Cin–G×Vin×Cin (12)
Qfine=(1-G)×Cin×Vin (13)
将公式13和4代入公式2得到公式14,也就是使用预充电输入缓冲器时的平均输入电流。
Iavg-precharge=Fclk/2×(1-G)×Cin×Vin (14)
将公式5代入公式14得到公式15。我们现在可以看到,不用预充电缓冲器的平均输入电流Iavg现在降低了(1-G)倍,其中G的典型范围为0.995<G<1.005(对ADS127L11而言):
Iavg-precharge=(1-G)×Iavg (15)
外部滤波电容Cfilt提供了峰值电流一大部分,但外部输入放大器也需要提供很大的动态电流。与平均电流的降低非常相似,峰值电流的下降也很显著。峰值电流的这种降低通常会带来总失真的降低,这正是使用带有高速输入放大器的预充电缓冲器可以提供更好系统性能的原因。
峰值输入电流受内置AIN-Fine开关电阻Rsw的限制,可使用公式16计算得到。对ADS127L11来说,从AINP和AINN端看过去的差分输入开关电阻典型值为165Ω。在输入电压为4V且没有预充电缓冲器的情况下,每个周期内产生的峰值电流Ipeak接近24mA(公式17),这对于大多数精密放大器来说是相当高的,这也是为什么必须使用输入滤波器来提供大部分峰值电流的原因。
Ipeak=Vin/Rsw (16)
Ipeak=4V/165ῼ=24mA (17)
当使用预充电缓冲器时,输入采样电容上的电压值非常接近AIN-Fine开关闭合时的输入电压——在预充电缓冲器的增益误差范围内。在G=0.995的情况下,预充电缓冲器在直接连接ADC输入端之前,会将输入电容上的电压充电至约3.98V,此时得到的峰值输入电流约为121μA,公式18中就利用了这些值,结果如公式19和20所示。
Ipeak=(Vin-Vcin)/Rsw (18)
Ipeak=(4V-3.98V)/165ῼ (19)
Ipeak=121μA (20)
由于平均输入电流和峰值输入电流均有所下降,因此预充电缓冲器可以使用带宽小于10MHz的外部输入放大器。这就给放大器提供了更多的选择,使低频噪声、宽带噪声、偏移电压和其他指标的优化成为可能。

用于基准输入的预充电缓冲器

ADS127L11还集成了一个基准输入预充电缓冲器。与输入预充电缓冲器非常相似,该基准输入预充电缓冲器亦可降低峰值和平均输入电流。对该器件来说,如果使用4.096V的典型外部基准电压,输入时钟频率为25.6MHz,并工作在高速模式,那么没有预充电缓冲器时的平均输入电流为778μA,这对大多数基准来说都可以轻松驱动,然而,许多系统使用多个ADC通道,比如8个或更多个通道,此时,总的基准电流为8×778μA,即6.2mA,这对于精密基准来说就相当高了。例如,REF6041的最大输出电流为4mA,此时单个基准是无法驱动8个ADC基准输入的。REF7025是另一个不错的选择,可提供出色的低频噪声和极低的长期漂移。尽管REF70系列的最大输出电流为10mA,但为了使用该基准实现最高精度,输出电流应控制的尽可能低。

若采用内置基准预充电缓冲器就可以打破上述限制,因为每个ADC的平均输入电流降至2μA。单个基准即可驱动多个通道(如图4所示),无需担心过载,也无需额外的外部放大器,还能够降低整体电路板尺寸和成本。

在这里插入图片描述

图4:用一个基准带动多个内置预充电缓冲器ADC的典型连接图。

根据设计中使用的基准和输入放大器,可能不需要内置预充电缓冲器就能实现预期的系统总体指标。但拥有启用内置预充电缓冲器的选项,将为外部元件的选择提供了更大的灵活性,从而为优化系统设计提供了更多的工具。
本文来源于网络,公众号《面包板社区》,参考原文:《充分理解ADC预充电缓冲器的重要性》

这篇关于充分理解ADC预充电缓冲器的重要性-运放缓存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771574

相关文章

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝