做信号链的工程师大多经历过这种诡异的调试场景:示波器上看输入波形干净得像用尺子画的,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 调试清单速查
整理一个检查清单,方便收藏:
- FFT先看谐波分布。奇次谐波重,优先查信号路径和自举/开关非线性;偶次谐波重,查差分失配或直流偏置。
- 换更低抖动时钟源,若无改善,排除时钟。
- 调低输入频率重复FFT,若改善明显,往采样带宽和前端驱动方向查。
- 检查运放输出阻抗、外部串阻、抗混叠RC是否挤压建立时间。
- 检查参考电压去耦和参考源输出噪声,Vref脚多放几颗并联电容,保证短回流。
- 最后确认PCB走线长度、过孔数量、时钟隔离。
做完这些,绝大多数“FFT不达标”都能定位到具体环节。
文章写到这里,再说一点个人体会。采样电路的系统设计,本质是在精度、速度、功耗、面积之间做预算。自举开关解决了单点失真,但它不能替你弥补外部串阻、劣质时钟、紊乱电源带来的问题。我现在的习惯是画板子之前先画一张采样等效模型图,把Ron、Cs、源阻抗、外部串阻、参考去耦全部标上去,花十分钟估算建立时间和噪声预算,再决定选什么运放、多少阻值的RC滤波。这个习惯帮我少返了好几次板。希望这篇能让你在设计ADC采样链时,少踩几个我踩过的坑。