ADC采样电路设计全解析:自举开关原理、实现与工程实践

发布时间:2026/9/12 22:30:29
ADC采样电路设计全解析:自举开关原理、实现与工程实践 如果说ADC系统里哪个模块让我又爱又恨那一定是自举开关bootstrap switch标题里那位经常被拼错成booststrap的老朋友。第一次把自研的12位SAR ADC样片拿去测动态性能DNL、INL静态指标全部正常唯独SFDR比仿真低了10dB以上。换了三块测试板都一样最后逐级排查问题居然出在采样开关——不是比较器不是DAC阵列恰恰是这个从设计之初就没太当回事的采样电路。从那以后采样电路在我这里的优先级直接提到了最高。这篇把采样电路的系统设计从头到尾梳理一遍结合自举开关的工作机理、电路实现、仿真验证和PCB布局给正在做ADC/DAC的IC工程师和硬件工程师一份可以直接参考的完整清单。原理部分会讲透为什么自举是必须的实现部分会给可落地的参数推导思路最后再聊那些仿真里看不到、流片和实测才会踩的坑。1. 采样电路在ADC系统里的真实分量它决定动态性能上限1.1 一条完整SAR ADC信号链路里采样网络站在什么位置SAR ADC的基本流程大家都很熟采样保持、逐次比较、DAC切换、输出数字码。很多人画框图时把采样保持当一个小方块就带过去了注意力全放在比较器失调、DAC电容失配这些看起来更难的模块上。但信号进来的第一道关卡就是采样开关和采样电容这个节点上引入的任何误差后面所有电路都救不回来。比较器失调可以修DAC失配可以校准采样阶段的非线性失真已经叠加在信号里了链路后端没有任何手段把它分离出来。以12位SAR ADC为例采样网络通常由开关管、采样电容CDAC架构里就是电容阵列本身以及钳位保护电路组成。采样保持期间输入信号通过开关给电容充电开关导通电阻、电容大小、前端驱动阻抗共同决定建立时间开关断开瞬间的电荷注入和时钟馈通决定保持值精度。前者影响带宽上限后者直接影响线性度和毛刺。这两条线就是采样电路设计的全部主线也是我今天重点展开的内容。1.2 采样非线性如何直接压垮SFDR与THD我遇到过不少团队把SFDR偏低归结为参考电压纹波或者比较器回踢其实采样开关的非线性常被漏掉。采样本质是用受时钟控制的开关把连续模拟信号变成离散电荷包。如果开关导通电阻随输入电压变化不同幅值的输入就被加上了不同的增益误差和相移体现在频谱上就是谐波失真。回到我自己那个例子12位SAR ADC输入频率1MHz、幅度接近满量程的正弦波理论上SFDR应该做到80dB以上实测只有68dB二次、三次谐波明显偏高第一判断就是采样非线性。把采样开关换成自举开关后同一个测试平台SFDR直接回到78dB。这么大幅度的改善在比较器或者DAC模块上靠一次改动很难拿到。对于折叠内插型ADC、流水线ADC这些高速架构采样网络的要求更苛刻因为工作时钟频率高采样时刻的精度直接和整体带宽挂钩。可以说无论什么架构采样电路都是信号链的灵魂入口。2. 自举开关的核心原理用恒定VGS换全域线性导通2.1 普通CMOS开关的导通电阻为什么随输入变化最简单的NMOS采样开关导通电阻公式是每个模拟工程师都会背的Ron 1 / [μCox(W/L)(VGS - VTH)]关键在于VGS。采样开关的源极直接连在输入信号上输入Vin在0到VDD之间摆动时源极电位跟着变VGS VDD - Vin就是一条随信号变化的曲线。VGS变了Ron就变开关引入的传输函数就不是线性时不变的信号幅度越大这个非线性越明显。举组直观数据0.18μm工艺VDD1.8VNMOS阈值约0.5V输入从0.3V摆到1.5V时VGS从1.5V跌到0.3V深线性区的Ron比值可以到5倍以上。拿这样的开关采样1Vpp信号谐波失真大概在40~50dB量级连8位ADC都勉强。这还没算沟道调制和体效应实际非线性只会更差。那用CMOS传输门行不行传输门确实能把Ron曲线拉平一部分因为NMOS和PMOS两条并联路径的Ron一个随输入增大、一个随输入减小合起来能在中间段做得比较平。但问题在于PMOS在低输入电压下导通时VGS同样在变加上两管体效应不一样合成曲线的平坦度和输入范围覆盖依然有限。对高分辨率ADC来说传输门只能算改善算不上根治。2.2 bootstrap开关是怎样把栅压抬起来的自举开关的思路很朴素既然问题出在VGS不恒定那就让栅极电压跟着输入信号走保证VGS始终保持恒定。具体做法是在采样主开关管的栅极挂一个浮动电源。以最经典的NMOS自举开关为例在一个时钟周期内先把自举电容Cboot充电到VDD采样阶段开始后把Cboot的下极板接到输入信号Vin上极板自然被抬到VinVDD这个上极板电压直接驱动主开关管的栅极于是VGS VDD稳稳地不随输入变化。这就是bootstrap名字的由来栅压被电容自举起来跟踪输入信号。这个方案能让开关在0到VDD整个输入范围内保持近似常值的导通电阻配合足够大的采样电容采样线性度做到12位甚至14位以上是可行的。拿生活场景打个比方普通开关是站在地面上称体重电梯上下时读数飘来飘去自举开关等于脚下的地面一直跟着电梯跑无论你在哪层楼称出来的读数都不变。2.3 自举方案的代价电荷注入、时钟馈通与栅氧化层过压自举开关不是免费的午餐它引入了三个必须处理的代价。第一个是电荷注入。主开关管关断瞬间沟道里存储的电荷会向两端泄放注入采样电容的那部分会改变保持电压。电荷注入量和沟道尺寸、过驱动电压成正比信号幅度不同时沟道电荷不同所以本质上也是非线性误差源。工程上常用dummy管做电荷中和或者采用全差分结构让两个采样通道的电荷注入以共模形式相互抵消。第二个是时钟馈通。栅极和采样节点之间存在栅氧化层电容和交叠电容时钟沿跳变时会把跳变幅度耦合到采样节点。自举开关的栅压是从VinVDD跳到地的跳变幅度比普通开关大得多时钟馈通反而更严重。缓解手段是减小交叠电容、优化时钟边沿斜率以及在采样节点加补偿电容。第三个是栅氧化层耐压。栅极电压是VinVDD输入接近VDD时栅压接近2VDD远高于正常逻辑工作电压。在先进工艺里这是非常现实的风险通常需要给主开关管选厚栅氧器件、限制输入摆幅或者用更精细的bootstrap结构把栅压钳位在工艺允许范围内。3. bootstrap开关的晶体管级实现与关键设计细节3.1 经典电容自举电路的拓扑拆解下面这版拓扑是我用得最多、也最适合作为设计起点的自举开关结构。核心器件就几个但每个都不能省。核心采样管M_sw是一个NMOS。辅助部分包括自举电容Cboot充电时存储VDD采样时提供浮动栅压充电管M1保持阶段把Cboot上极板拉到地给电容充电开关管M2、M3采样阶段把Cboot下极板接到输入、上极板接到M_sw栅极钳位管M_clamp限制栅压最高值保护栅氧化层。工作过程分两相。保持相M1导通Cboot上极板接地、下极板接VDD电容被充电到VDD。采样相M1关断M2和M3导通Cboot下极板接Vin、上极板接M_sw栅极因为电容两端电压差不能突变上极板被推到VinVDDM_sw的VGS恒等于VDD。相位切换时有严格的时序要求必须先断开充电通路、再接入采样通路否则电荷会从非预期路径泄放。实际工程里用反相器链控制这些辅助开关反相器的驱动能力直接影响切换速度和毛刺不能随便选个最小尺寸了事。这个结构在常规工艺下做到10位以上线性度比较轻松但要上到12位就得在辅助开关尺寸和时序上精细打磨。网上公开的参考电路不少真正拉开差距的往往是那些不起眼的尺寸推导和时序设计。3.2 晶体管尺寸和自举电容的选型逻辑设计自举开关时几个关键参数是互相关联的不能拍脑袋定。下面按影响链路、设定思路、参考取值的思路整理了一张表是我每次做设计时的起点参数影响链路设定思路参考方向主开关管M_sw尺寸采样带宽 vs 电荷注入由τ需求反推Ron再权衡注入几十μm/0.18μm起步自举电容Cboot栅压维持能力按Cgate的5~10倍初选几百fF量级辅助管M2/M3尺寸相位切换速度从M_sw的1/10开始迭代小尺寸为主输入摆幅范围栅氧化层耐压决定是否用厚栅氧器件不超过工艺绝对最大值主开关管M_sw的尺寸核心约束在采样带宽。采样时间如果是4ns12位精度下建立到LSB/2需要约8.3个τ那么τ最多约480ps。假如采样电容Csample是2pFRon最多240Ω按这个反推M_sw的W/L。但W/L越大电荷注入越严重所以不能为了低Ron无限加宽管子要在Ron和注入之间反复权衡。自举电容Cboot的选取逻辑是Cboot必须远大于M_sw的栅极电容否则栅压抬起来后大部分电荷消耗在栅电容上VGS会明显跌落。我一般先按Cgate的10倍取初值仿真后看采样期间VGS的跌落幅度目标控制在1mV以内然后逐步下调Cboot找到一个面积和性能的平衡点。辅助开关管M2、M3的尺寸影响Cboot的接入速度。太小会让采样相开始时栅压无法快速稳定有效采样时间被压缩太大会通过寄生电容引入额外的信号馈通。常规做法是在M_sw尺寸的几十分之一到几分之一区间迭代仿真而不是直接拉大。3.3 版图上最容易栽跟头的几个地方自举开关的版图细节几乎决定了仿真和实测之间的差距。第一是M_sw栅极和Cboot之间的走线。这条线承载的是浮动电压VinVDD任何额外寄生电容都会成为VGS的分压器让有效栅压掉下来。实际版图里这条线尽量短、尽量粗底下不要走其他信号线周围保持清场。第二是输入信号通路上的对称性。采样开关在输入信号线上引入的寄生电容如果左右不相等会直接产生偶次谐波。全差分设计里两条输入走线必须完全对称dummy器件成对出现金属层选择、过孔数量都要一致。第三是衬底隔离。自举开关的数字控制信号和模拟信号通路放在同一个阱里时数字跳变噪声会通过衬底耦合到采样节点。建议采样管周围加保护环和数字模块隔开偏置走线和时钟走线分开别图省事共用地线。版图这件事老工程师常挂在嘴边的一句话是先想后画。把电流路径、敏感节点、噪声源在纸面上画清楚再动手比后期一遍遍修DRC、清寄生省太多时间。4. 采样精度的三大体系级杀手时钟抖动、电源噪声与前端RC4.1 时钟抖动对信噪比的理论约束与实例计算采样时钟的抖动是采样系统里最隐蔽的误差源因为它直接和时间挂钩信号频率越高越致命。理想采样时刻是等间隔的真实时钟沿有随机偏移这个时间偏移乘以信号变化率就转化为电压误差折算成信噪比就是SNR_jitter -20·log10(2π·f_in·σ_t)三个参数的制约非常狠。直接算一组数据输入频率100MHz时钟抖动1ps RMS时SNR上限约64dB连11位理想SNR约68dB都够不到。如果你要做14位ADC还希望在100MHz输入下有理想表现抖动需要压到0.1ps以下这对片上时钟和测试板时钟都是不小的挑战。也是因为这个原因我一直强调设计采样电路不能只盯芯片内部测试板时钟源的质量同样关键。很多时候芯片本身的自举开关没问题但测试板用普通晶振加缓冲器抖动几百飞秒到几皮秒动态性能直接被打折。先算清楚理论约束再决定优化片上电路还是优化测试环境能少走很多弯路。4.2 电源噪声进信号链的三条路径电源噪声对采样电路的破坏很多时候是通过间接路径完成的。第一条路径是自举开关的浮动电源节点。栅压VinVDD里的VDD部分如果不干净等于把电源纹波直接调制到采样开关的栅压上VGS不再是干净的常值。第二条路径是衬底耦合数字电路翻转时的电源和地弹跳会通过衬底感应到采样管的沟道和采样电容的下极板。第三条路径是参考电压和偏置电流的串扰它们改变开关管的过驱动电压间接让Ron发生不该有的变化。对策分几个层级。片内给自举开关供电的电源域和数字逻辑隔离用独立LDO或RC滤波偏置电路加足够的去耦电容版图上在采样管下方铺隔离用的保护环把衬底噪声挡在敏感区外面。到了系统层面PCB上的电源去耦和分区也起着同等作用这个后面第6节展开。4.3 前端RC滤波的设计取舍ADC输入端最常见的配置是加一个RC低通滤波器尤其是在电流采样电路输入滤波这类场景。这个RC至少扮演两个角色一是抗混叠把带外高频噪声和干扰在进入采样开关之前滤掉二是给采样电容准备一个电荷池缓冲采样瞬间的电荷抽取。但RC不是越大越好。RC时间常数和ADC内部采样网络串联会形成新的建立时间路径。R太大高频时采样电容充不满出现幅度误差C太大驱动放大器的容性负载过重运放可能不稳定甚至振荡。常规调参思路是这样的先根据目标输入带宽确定截止频率再用运放输出阻抗和ADC输入电容估算建立时间给ADC留出至少4~5个τ的裕量。小信号仿真时把运放模型、RC网络和ADC采样网络放在一起联合仿真不要分开看。实测中如果高频幅度掉得厉害优先检查RC和驱动能力的匹配而不是怀疑ADC转换逻辑本身。5. 从仿真到流片采样网络的验证方法和排错经验5.1 建立时间的仿真与裕量判断采样网络的建立时间仿真核心是模拟采样开关从导通到关断前采样电容上的电压和理想输入值之间的残余误差。做这个仿真时我习惯至少跑三个条件最小输入频率、最大输入频率、接近满量程的正负峰值点。原因在于即便用了自举开关导通电阻仍然存在残差误差最大点往往出现在信号摆幅最大的时刻。采样电容电压与理想输入值的差在采样时钟关断前必须小于LSB/2对12位ADC就是Vref/(2^13)量级。Spectre里的做法很直接跑一个带采样时钟的瞬态仿真采样结束后读取采样电容电压与对应时刻的理想输入值做差观察误差是否收敛。如果误差曲线还在明显下降说明建立时间不够如果早早平了可以考虑增大采样电容来改善KT/C噪声反正建立裕量还够。需要提醒的是流片后的工艺角变化会让设计裕量缩水一半所以仿真阶段一定要留足余量。5.2 动态参数仿真相干采样与FFT分析验证自举开关线性度最直接的方式是对采样信号做FFT看谐波。但这里有个非常常见的误区直接把瞬态波形文件丢进FFT函数里看频谱。FFT的前提是截取信号包含整数个周期否则频谱泄漏会把谐波淹没在底噪里你看到的是一堆乱七八糟的谱线根本分不清哪个是信号哪个是噪声。正确做法是相干采样采样频率fs、输入频率fin、采样点数N需要满足fin/fs M/NM和N互质。比如100MHz采样率取4096点可以选择M41fin 100MHz×41/4096 ≈ 1.001MHz这样就能做一次干净的4096点FFT。我一般先盯SFDR和THD两个指标。自举开关设计正常时FFT里主要谐波应该是偶次谐波或三阶谐波量级要明显低于目标指标。如果FFT里出现的是杂散的、不在谐波位置上的尖峰那问题多半出在时钟或电源上和采样开关无关。见过不少人在这个问题上浪费几天时间先把频域里的尖峰分类清楚再动手排查效率会高很多。5.3 实测数据漂移的排查链路ADC实测里最常见的现象之一是数据漂移同一输入电压不同时刻读出来的数字码慢慢变化过一会儿又恢复。遇到这个问题我的排查顺序是固定的顺序本身就是为了每走一步缩小一半嫌疑范围第一步隔离参考电压。参考电压漂移直接表现为增益漂移先测参考电压的长时间稳定性。第二步检查采样保持电容上的漏电。漏电在高温下更明显如果漂移随温度加剧大概率是采样节点漏电要么版图保护环没做好要么工艺漏电模型没吃透。第三步观察数字域的电源与地噪声在ADC电源脚上并足够大的去耦电容看漂移幅度是否减小。第四步以上全部排除后才考虑ADC内部的温度系数校准。这个链路从外部到内部、从简单到复杂每走一步都能排除一类根因。直接上手改芯片设计或者登测试机台做复杂测试往往是事倍功半。6. PCB布局与系统集成把芯片采样性能完整搬到板子上6.1 规避时钟抖动与电源噪声的三个布局要点芯片设计得再好PCB布局不上心采样性能照样拉胯。针对时钟抖动和电源噪声这两类问题下面三个要点是我每次画板都会逐项检查的。要点一时钟走线必须与模拟输入通道彻底隔离。时钟线和输入信号线在相邻层平行走过几毫米就有足够大的耦合电容把时钟噪声注入输入通道。布局规则上时钟线和模拟输入之间至少留3倍线宽的间距能不平行就不平行非平行不可的话中间隔一层完整地平面。要点二电源去耦电容必须就近ADC电源引脚而且要选对电容组合。很多板子的去耦电容摆了好几毫米远走线又细又长等效于在电源通路上串了个电感高频纹波根本没被滤掉。正确做法是在ADC每个电源引脚旁对称放一个100nF陶瓷电容在电源入口处放一个10μF左右的钽电容或MLCC形成宽频带去耦网络。要点三参考电压和模拟输入必须使用独立、干净的回流路径。参考电压引脚和模拟输入引脚旁边的地过孔都要就近打别让回流电流绕半个板子才回到焊盘下方。回流路径越大捡到的噪声越多这条规则在混合信号板卡上永远不过时。6.2 驱动放大器、RC与ADC输入的协同设计实际系统里ADC前面一般都有一个驱动放大器用来提供足够低的输出阻抗驱动采样电容。这个放大器的选型和RC网络的配合是采样精度的最后一道关口。驱动放大器带宽至少要高于目标信号带宽3~5倍否则它在目标频段内的增益平坦度和驱动能力都不够。同时必须考虑运放驱动大容性负载的能力很多精密运放为了稳定性输出级对容性负载敏感负载电容大了会引入极点环路不稳定表现为时域上的振荡或过冲。协同设计的具体做法是先用运放数据手册的输出阻抗值结合RC网络的R、C估算总建立时间再检查两倍以上目标信号频率处运放的开环增益是否充足确保采样瞬间运放输出误差可以忽略最后把运放输出级模型、RC网络和ADC采样网络放到一起做联合仿真。这步虽然麻烦但能提前暴露很多实测才会出现的问题。6.3 校准与软件滤波最后一道精度防线即使硬件全部到位系统级校准和数字域软件滤波仍然值得做工艺偏差和温度漂移无论如何都存在。校准最常见的是外部三点校准分别输入接近零、中间值和满量程的已知电压得到偏移、增益和非线性三项修正系数。实测下来三点校准后系统有效精度通常能提升2~3位甚至更多性价比非常高。软件滤波方面ADC值的滤波算法我用过好几种各有适用场景整理如下算法优势主要问题实现代价滑动平均滤波周期性噪声抑制好突变信号响应慢需要N个数据缓存中值滤波尖峰脉冲干扰极佳高斯噪声平滑一般需要排序运算一阶低通指数平均实现简单、内存占用小有相位滞后只需两个变量一阶低通滤波器的C语言实现非常短适合嵌入式实时场景float adc_lpf_filter(float raw, float prev, float alpha) { return alpha * raw (1.0f - alpha) * prev; }alpha取值需要根据采样率和实际信号带宽来调我的经验是从0.1开始试观察响应速度和噪声抑制的平衡。需要清醒的一点是软件滤波处理的是系统精度末端的事前面采样电路的硬件性能才是真正的上限滤波器并不能把采样阶段引入的失真修回来。做ADC这些年我养成了个习惯每次流片回来第一件事不是测ENOB而是先用示波器看采样时钟沿的抖动量级用频谱仪看采样电路供电的电源纹波。这两项过关了再谈芯片性能指标。这个习惯帮我排掉了大量假故障也让自举开关这个模块在项目里一直稳如磐石。你要是正在调采样电路建议也试试这个顺序很多看似芯片的问题其实在系统端早就注定了。