news 2026/9/17 5:46:42

自举开关与ADC采样电路系统设计:从采样保持到FFT谐波排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自举开关与ADC采样电路系统设计:从采样保持到FFT谐波排查

做信号链的工程师大多经历过这种诡异的调试场景:示波器上看输入波形干净得像用尺子画的,ADC配置、时钟、电源也挑不出毛病,但FFT一跑,ENOB比datasheet标称少两三个bit,SFDR还特别难看,输入频率越高恶化越明显。ADC采样电路的系统设计,尤其是采样保持前端里的自举开关(bootstrap switch),往往就是藏在这个现象背后的关键。我曾经做一块12位SAR ADC采集板,就被它卡了整整一周。后来把注意力从外部时钟、电源、参考电压挪到ADC内部的采样开关上,才真正想明白问题出在哪。

这篇文章围绕ADC采样电路的系统设计来写,重点拆解自举开关的作用原理、参数设计和系统级配合:为什么高速高精度ADC离不开它,采样开关管和采样电容的尺寸怎么从精度指标反推,以及时钟抖动、电源噪声、前端RC滤波、PCB布局如何跟它联动。适合模拟IC设计工程师、采集板卡和信号链硬件工程师,也适合那些被FFT谐波、SNR不达标折磨到头秃的嵌入式开发者。

坦白讲,很多人用ADC只盯着datasheet上的SNR、SFDR、ENOB,却很少去想这些数字是怎么被内部采样电路撑起来的。采样开关看似只是导通和断开,实际上它决定了整个ADC的精度上限。不理解这一点,外部做再多努力,也可能被几十欧的导通电阻起伏毁掉。

1. 采样开关的非理想效应:为什么它是ADC精度的隐藏杀手

1.1 导通电阻与输入信号的“偷偷绑定”

最基础也最容易被忽略的是,MOS开关的导通电阻不是常数。在线性区,近似公式是:

Ron ≈ 1 / [μCox·(W/L)·(VGS − VTH)]

当采样管的源端接到输入信号Vin时,如果栅极接的是固定的时钟高电平VCLK,那么VGS = VCLK − Vin。输入信号一摆,VGS就跟着摆,导通电阻自然也在变。再加上衬底偏置对VTH的影响,Ron随Vin的变化会更明显。直观地说,它就像一个受输入信号控制的电阻,串在信号路径里。

这个“受控电阻”为什么致命?用数据来说话。假设一个12位ADC,满量程1V,LSB约244µV,半LSB约122µV。输入一个10MHz、峰峰值1V的正弦,在过零点斜率最大约31.4mV/ns。如果采样瞬间的有效延时随信号变化了几个皮秒,误差就是几十微伏到上百微伏,已经逼近甚至超过半LSB。Ron变化会让采样网络的带宽和相位延时随输入改变,输出端于是出现输入信号的谐波,FFT里最常见的就是三阶谐波。这也是高速高分辨率ADC几乎不用固定栅压简单开关的原因。

顺便多说一句:外部串阻、PCB走线阻抗、ESD保护二极管的结电容,如果也存在随信号变化的非线性,造成的影响和采样开关是一样的。所以采样电路的系统设计,从来不是芯片内部一个开关的事。

1.2 电荷注入、时钟馈通与采样保持误差预算

开关断开那一下,也不是干净的。MOS管导通时沟道里有电荷,关断瞬间这些电荷要从源、漏两端泄放:

Qch = W·L·Cox·(VGS − VTH)

一部分电荷注入到采样电容Cs上,形成直流失调和增益误差。最麻烦的是,VGS如果随输入变化,Qch也随输入变化,注入误差就带上了信号相关分量,最终同样以谐波形式出现。另一个效应是时钟馈通:栅极时钟跳变通过Cgs、Cgd与采样节点耦合,叠加一个几乎与输入无关的固定失调,这个相对好校正。自举开关最大的贡献之一,就是把VGS近似固定在VDD附近,让Qch里的信号相关项大幅消失。换句话说,它不只把Ron稳住,还把电荷注入也一并驯服了。

除了静态和动态误差,还要算建立时间。采样电容上的电压要在一个采样周期内逼近输入值,误差必须小于半LSB。一阶系统建立误差是e^(−t/τ),所以:

t_settle ≥ ln(2^(N+1))·τ ≈ (N+1)·0.693·τ

12位大约需要9个时间常数,14位约10.4个,16位约11.8个。时间常数τ=Ron·Cs。这一段开始牵出参数设计的核心逻辑:不是先选一个“看起来不错”的导通电阻,而是从采样时间、位数反推Ron上限,再从物理实现约束定Ron下限。第3节会专门展开。

2. 自举开关原理拆解:让栅压“如影随形”的设计哲学

2.1 经典栅压自举结构的工作时序

自举开关的核心一句话:想办法让采样管的VGS不随输入变化。传统开关的栅极被钳在高电平,输入一变,VGS就变;那反过来,如果让栅极电压始终比输入高出一个固定值,问题就解决了。

教科书上最常见的结构是一个自举电容Cb加上几个辅助开关,按相位拆开看:

  • 保持相(采样管关断):辅助开关把Cb充电到电源电压VDD,通常是Cb一端接VDD、另一端接GND,两端储存约VDD的压差。
  • 采样相(采样管导通):辅助开关断开充电通路,然后把Cb的一端接到采样管栅极,另一端接到输入Vin。由于电容两端电压不能突变,栅极电压被直接抬到Vin+VDD。这样VGS = (Vin+VDD) − Vin = VDD,几乎恒定。

这个思路听起来简单,实际电路里要做到位却不容易。首先,Cb在采样相会持续向采样管栅极泄漏电流,栅极等效电容也会分走一部分电荷,导致VGS有轻微跌落。Cb太小,VGS会“塌”,Ron慢慢变大;Cb太大,进入保持相时充电又太慢,占用整个时钟周期,高速ADC直接崩掉。工程上Cb一般取采样管栅极寄生电容的几倍到十倍,具体要靠仿真迭代。

辅助开关的实现同样讲究。如果充电管和连接管的沟道电荷注入不对称,Cb上的电压会被悄悄改动,破坏自举精度。所以很多设计里辅助开关会用互补MOS开关,甚至也用自举结构来伺候这些开关。到了先进工艺节点,这个开关网络本身就可能成为功耗和版图面积的大户。

另外,SAR ADC里自举开关不一定只在输入端。很多全差分结构中的CDAC底板采样、顶板采样开关网络里,也会对关键开关做自举,目的是压制DAC建立过程中的非线性。只是这些开关不直接面对外部输入,要求没有输入采样那么极端。

2.2 衬底效应、耐压约束与厚栅氧/深N阱处理

VGS恒定以后,还有一个容易漏掉的隐患:采样管的衬底。如果body接固定电位,输入Vin变化时VSB在变,阈值VTH也在变,Ron公式里VTH不是常数,VGS恒定带来的好处就要打折扣。因此,高速高精度ADC里的主采样管通常放在深N阱里,让source和body短接,VSB恒等于0;或者用动态body偏置,让body跟着输入走。这都要在版图上付出代价,但为了失真性能值得。

更麻烦的是耐压。当输入接近电源电压时,栅极电压VG=Vin+VDD可能接近2VDD,对栅氧化层和源漏扩散区的结击穿都是考验。所以不能简单粗暴地把VGS做到VDD就完事,很多时候要让VGS比VDD略低一点,给击穿电压留裕量,或者主采样管直接用厚栅氧器件。输入范围也会因此在芯片级被有意限制。你去看一些高速ADC的datasheet,模拟输入范围往往比电源轨低不少,背后就有这个原因。

我第一次画自举开关时,直接拿普通薄栅氧管搭,仿真到高温工艺角直接击穿报警,才反应过来工艺库里的器件耐压约束得提前检查。后来养成的习惯是画完原理图先做一遍PVT角仿真,看看最差情况下栅压是否还在安全范围,再开始布版图。这种坑不踩一次,很难记住。

3. 从精度指标反推采样开关管与电容尺寸

3.1 kT/C噪声定电容下限

采样电容的主要下限来自kT/C热噪声。采样开关断开的瞬间,电阻热噪声被“冻结”在电容上,其有效值:

Vn_rms = sqrt(kT/Cs)

300K左右时kT≈4.14×10^-21 J,所以1pF对应约64µVrms,4pF对应约32µVrms,16pF对应约16µVrms。信号用满幅正弦波有效值近似为满幅/(2√2)。如果目标是让采样噪声不成为限制项,即低于量化噪声,那么在单端满幅1V、无过采样条件下,不同分辨率所需电容下限大致如下:

分辨率理论SNR(量化)单端满幅1V、无过采样时Cs下限参考
12位74 dB约1 pF
14位86 dB约13 pF
16位98 dB约200 pF(差分结构可降到约50 pF量级)

这个表第一次看容易吓一跳。但注意两点:第一,差分结构信号有效值翻倍,所需电容约降为原来的1/4;第二,实际ADC常配合过采样或噪声成形来缓解kT/C限制。所以16位SAR内部采样电容虽不至于到200pF,但普遍在数十pF量级,远大于12位ADC。这也是为什么高分辨率ADC前面驱动运放的压力明显更大。

3.2 开关W/L和导通电阻Ron的迭代

有了Cs,就要求在可用采样时间内完成建立。假设某个12位SAR,采样时间100ns,Cs取1pF,12位需要约9τ,那么τ不能超过100/9≈11.1ns,即Ron≤11.1kΩ。这个数值对MOS开关来说很宽松。但如果采样时间被压缩到10ns,Cs还是1pF,τ就要小于1.1ns,即Ron≤1.1kΩ,这就开始吃力了。

增大W可以降低Ron,因为Ron≈1/[μCox·(W/L)·(VGS−VTH)]。但W增大会带来三个代价:沟道电荷Qch增大,电荷注入变大;源漏寄生电容变大,输入电容对前端驱动不友好;版图上大尺寸管与周围器件失配也会增大。所以Ron不是越低越好,而是在满足建立时间的前提下,尽量把W/L压到较小。

实际设计流程通常是:先由噪声和精度定Cs,再按时钟预算和位数定Ron上限,然后根据工艺参数和自举电压算出W/L,跑TRAN仿真看FFT的SFDR/THD,不达标就微调。如果想进一步减少电荷注入失真,可以在采样管旁边加dummy管吸收一部分沟道电荷。高精度SAR里甚至会把主采样管拆成多指并联,配合版图对称来抵消工艺梯度。

仿真时有个快速定位技巧:看到三阶谐波偏大,先把主采样管宽度加大一档再仿真。如果SFDR明显改善,说明问题在导通电阻或带宽调制;如果几乎没变,就要回头查辅助开关的时钟时序——辅助开关断开得比主开关晚或早,都会造成Cb上的电荷分配异常。这种时序问题在高速设计里比栅压跌落更隐蔽。

4. 采样电路的系统级配合:时钟、电源、前端驱动一个都不能少

4.1 时钟抖动先定下底噪

采样瞬间的抖动,等价于在信号斜率上叠加了一个不确定延时,产生的电压误差约为:

ΔV ≈ 2π·f_in·A·t_jitter

拿满幅1V的正弦,A=0.5V来算,把误差压在1/2 LSB以内,不同条件下的抖动预算如下:

分辨率输入频率抖动预算(满幅1V,误差≤半LSB)
12位10 MHz约3.9 ps
12位100 MHz约0.39 ps
14位10 MHz约0.97 ps
16位10 MHz约0.24 ps

这就是为什么高速高分辨率ADC对时钟源要求极高,也解释了采集板上一个劣质有源晶振就能让SFDR全线崩溃。排查时有个简单手法:如果FFT底噪随输入频率升高而变大,信号峰值不变,大概率是时钟抖动或孔径不确定性问题;如果降采样率但保持输入频率,底噪明显改善,那更指向时钟源本身。第6节案例还会再用到。

4.2 前端RC滤波、驱动运放与采样电容的相互作用

很多网上的“标准ADC采样电路”就是运放+RC+ADC,但如果你没把建立时间算进去,这个标准电路就是最大的坑。SAR ADC在采样时可以等效成一个开关串着一个电容。采样开关一闭合,驱动源要瞬间给Cs充电。如果前面串了很大阻值的抗混叠电阻,时间常数变大,建立时间不足,高频信号精度就会出问题。RC的截止频率不能光按抗混叠来算,还要考虑采样建立。

举个例子:某SAR ADC采样电容5pF,内部开关Ron约200Ω,那么τ=1ns。如果前端再串100Ω电阻和20pF对地电容,这个外部RC和内部采样网络就变成二阶网络,内部采样电容看到的驱动阻抗不是恒定值,而是一个随频率变化的阻抗。为了在100ns内让5pF电容充电到16位精度,平均时间常数要控制得很好,外部阻抗稍微高一点,就非常危险。这种二阶建立问题在原理图仿真里很容易看出来,但很多人只算一阶RC,自然发现不了问题。

对于∑-∆ ADC,前端RC一般允许更大,因为内部有数字滤波器和过采样平均,对单次建立要求低一些。SAR ADC则敏感得多。我见过不少功率系统里的电流采样电路,为了抑制开关电源毛刺,在ADC输入前放了一个很大阻值的RC低通,结果有用信号衰减严重,建立时间也被拖垮。正确做法是先定目标信号带宽和ADC采样率,再反推R和C的分配:R尽量小,C承担主要抗混叠和电荷储备,必要时在运放输出级加小电容补偿稳定性。

驱动运放也不能只看噪声。SAR ADC的采样电容在采样瞬间像一个动态负载,运放输出级必须有能力在几个τ内稳定下来。运放带宽不够,或输出电流不足,很容易出现建立误差。有人喜欢选超低噪声运放,忽略了输出驱动能力,结果噪声没降下来,谐波先上去了。这个道理不限于独立ADC芯片,MCU内置ADC一样适用——只是很多人默认板子上的12位ADC已经够好,从不跑FFT看有效位数罢了。

参考电压同样是被低估的重灾区。ADC比较器的参考电压直接参与量化,参考上的任何纹波和噪声都会混入信号。Vref引脚至少需要一组低ESL陶瓷电容紧贴引脚并联,比如1µF+100nF+10nF。参考源到ADC之间的走线用星形连接,别让数字电流串进来。

4.3 电源域与地平面的“最后一道防线”

电源噪声对ADC的影响,一部分通过模拟电源进入采样开关和参考网络,一部分通过数字电源进入逻辑开关导致时钟/控制时序抖动。常规做法是AVDD和DRVDD分开供电,中间用磁珠或RC隔开;模拟电源后面的去耦电容要成组分布在芯片电源引脚四周,每个引脚至少一颗小容值高频电容。数字信号走线不要跨越模拟地平面开槽,否则回流电流到处乱窜,FFT底部就会出现一堆来路不明的spur。

很多人以为把LDO换成低噪声型号就万事大吉,其实电源噪声很多时候不是LDO贡献的,而是PCB布局和去耦电容的摆放不当放大的。去耦电容离引脚越远,等效串联电感越大,高频去耦效果越差,这在高分辨率ADC板上尤其明显。

5. 原理图到PCB:三个更容易翻车的物理细节

5.1 输入路径的长度、过孔与回流

采样电容的参考是地平面,所以输入信号走线必须和地参考层形成紧耦合,尽量减少过孔。每个过孔会给信号路径引入寄生电感和额外回流面积,对高频输入信号影响很大。差分输入要等长、走在一起;单端输入在远端找个干净的地回流点。

如果你用板级自举式模拟开关来切换采样通道,输入/输出引脚两边的走线更得注意:开关本身Ron平坦度很好,但开关左右走线寄生电容不平衡,切换瞬间的共模跳变照样打穿精度。这是很多人忽略的细节。

5.2 芯片外部自举/电荷泵电容的摆放与选型

有些ADC或模拟开关会把自举电容做到外部引脚上,方便客户调整。这种电容建议用C0G/NPO材质,温漂和偏压特性好;容量不能随手选。位置要尽量靠近对应引脚,走线短粗,地回流直接回到芯片地焊盘。

我特别想强调电容的直流偏压特性。常见X7R、X5R陶瓷电容在加上直流偏压后容量会明显下降,甚至只剩标称值的一半;C0G/NPO电容则几乎不随偏压变化。自举网络在工作时Cb两端电压不是固定直流,而是随采样相和保持相切换变化,如果容量随偏压非线性变化,等于把非线性又引回栅压。所以高频高精度场景里我会坚持用C0G/NPO,贵一点但值得。

别把自举电容和数字去耦电容混在一起,否则开关网络里的毛刺会污染自举电压,直接表现为SFDR变差。那些需要外部摆电容的电荷泵内部节点同样敏感,很多模拟开关的Ron平坦度在datasheet上很好,但客户布板时不按参考设计来,实际THD就掉档。这锅真不能全甩给芯片。

5.3 时钟与模拟输入的隔离

时钟信号是PCB上最容易被忽略的噪声源。时钟线从ADC输入走线下方平行穿过这种事,我见过不止一次,结果FFT底部像长了草。时钟线要短,尽量安排在独立信号层,与模拟输入和参考线保持距离;差分时钟优先走差分对,端接电阻靠近时钟源。时钟芯片自己的供电更需要单独LC或RC滤波,干净电源配低抖动时钟,才能支撑高分辨率采样。

还有一个小技巧在嵌入式系统里很好用:如果板上既有高速数字总线又有ADC,尽量让采样时钟与数字总线不同步,或者在软件上把采样点安排在数字翻转的静默窗口里。这不算芯片级设计,但对实测数据的影响立竿见影。

6. 一例实测排查:FFT谐波超标背后的完整链路

6.1 现象与初步定位

我曾经做一块14位、2MSPS的SAR ADC板子,实测遇到一个典型问题:1kHz正弦输入时ENOB约13.1位,SFDR约95dB,看着还行;输入频率升到20kHz,SFDR掉到82dB,三阶谐波非常突出。我一开始怀疑时钟抖动,因为输入频率越高抖动惩罚越大。换了一个低相噪时钟源,没改善;再把采样率从2MSPS降到500kSPS,情况几乎没变。这说明不是时钟或孔径不确定性问题,而是信号路径本身的非线性或建立问题。

6.2 逐项排查和最终处理

接下来查前端。原设计里为了抗混叠和隔离,运放输出到ADC输入之间串了100Ω电阻,ADC等效输入电容约30pF,算下来τ=3ns,14位需要约10.4τ即31ns,采样时间150ns,账面上看完全够。但问题在于,运放高频段输出阻抗会升高,和100Ω串在一起,等效源阻抗变大;同时高频输入信号被这个阻抗和输入电容分压掉一部分,误差随频率上升。把100Ω串阻改成10Ω后,SFDR从82dB回升到93dB。还差2dB,继续查参考电压去耦。原板子Vref脚只有一颗0.1µF电容,离引脚还有一段过孔;换成10nF+100nF紧贴引脚并缩短过孔后,SFDR又涨了约2dB,最终约95dB,和datasheet基本对齐。

这个案例说明:datasheet里的SFDR是芯片内部采样电路配合理想外部条件测出来的。外部一个看似无害的100Ω电阻,就能毁掉两三个bit。调试时先分谐波和噪底:谐波突出优先查信号链非线性、采样开关、参考耦合;噪底平坦抬高优先查时钟抖动、电源、参考噪声。分类能省大量时间。

排查还有一个顺序上的建议:先软件,后硬件。先用芯片自带的测试模式或去掉前端输入,直接给ADC一个内部短路或者直流电平,看FFT是否干净;再把外部前端一级一级接回去。这样能快速把问题缩小到芯片周边还是前端信号链。

6.3 调试清单速查

整理一个检查清单,方便收藏:

  1. FFT先看谐波分布。奇次谐波重,优先查信号路径和自举/开关非线性;偶次谐波重,查差分失配或直流偏置。
  2. 换更低抖动时钟源,若无改善,排除时钟。
  3. 调低输入频率重复FFT,若改善明显,往采样带宽和前端驱动方向查。
  4. 检查运放输出阻抗、外部串阻、抗混叠RC是否挤压建立时间。
  5. 检查参考电压去耦和参考源输出噪声,Vref脚多放几颗并联电容,保证短回流。
  6. 最后确认PCB走线长度、过孔数量、时钟隔离。

做完这些,绝大多数“FFT不达标”都能定位到具体环节。

文章写到这里,再说一点个人体会。采样电路的系统设计,本质是在精度、速度、功耗、面积之间做预算。自举开关解决了单点失真,但它不能替你弥补外部串阻、劣质时钟、紊乱电源带来的问题。我现在的习惯是画板子之前先画一张采样等效模型图,把Ron、Cs、源阻抗、外部串阻、参考去耦全部标上去,花十分钟估算建立时间和噪声预算,再决定选什么运放、多少阻值的RC滤波。这个习惯帮我少返了好几次板。希望这篇能让你在设计ADC采样链时,少踩几个我踩过的坑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 5:45:14

VirtualBox搭建Linux开发环境:从安装到调优的完整指南

如果你跟我一样,日常主力机是 Windows,但手头又经常需要跑 Linux 环境来编译内核、调嵌入式交叉工具链,或者就是想验证某个开源项目在 Linux 下的表现,那 VirtualBox 大概率是你绕不开的第一个选项。我这几年用它搭过 Ubuntu、Deb…

作者头像 李华
网站建设 2026/9/17 5:42:56

RediSearch实战:从ES迁移的性能跃迁与避坑指南

1. 这不是“替代ES”的噱头,而是重新定义搜索性能边界的实战方案最近在几个技术群里看到有人反复问:“有没有比ElasticSearch快5倍的搜索引擎?”——这问题本身就很值得拆解。它背后藏着三类真实诉求:一类是业务QPS突然翻了3倍&am…

作者头像 李华
网站建设 2026/9/17 5:42:52

嵌入式工程师的三层能力栈:裸机C、RTOS、Linux硬核进阶路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 5:42:45

拆解DL16 Plus逻辑分析仪:1GHz采样背后的国产FPGA技术解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 5:42:35

PyTorch模型部署全攻略:从ONNX转换到推理优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华