做ADC设计这些年,我最常跟团队里新人说的一句话是:别急着画比较器,先把你最前面那个采样开关想明白。很多人拿到一个高速高精度ADC项目,第一反应是研究SAR逻辑、校准算法、比较器失调,结果流片回来一测,SFDR和SNR全被输入级那个看似不起眼的开关拖垮了。采样电路,尤其是自举开关(bootstrap switch),是决定整个转换链路真实性能的隐形天花板。这篇文章就把我在这类系统设计里的完整思考路径写出来,从为什么需要自举、怎么设计、到前端RC怎么配、PCB有哪些坑,一次性说透,适合正在做ADC前端设计、信号链系统集成,或者想搞明白"采样电路到底卡在哪"的工程师。
1. 系统视角:采样电路为什么能决定一颗ADC的"上限"
1.1 采样电路到底做了什么
采样电路的核心任务,说白了就是在极短的时间内,把模拟输入信号"拍一张快照",然后把这个快照值精确地保存在电容上,供后级量化器慢慢比对。这个过程由采样开关和采样电容共同完成。
但问题就出在这个"拍快照"上。理想情况下,开关闭合后应该是一个纯电阻,无论输入信号电压是多少,导通电阻都恒定不变。实际芯片里最常用的NMOS开关,导通电阻和输入电压是强相关的:当输入电压接近地电位时,NMOS的过驱动电压大,导通电阻小;当输入电压接近电源电压时,过驱动电压变小,导通电阻迅速增大,甚至直接关断。信号电压本身在变化,开关电阻也在跟着变化,这就在采样值上叠加了一个随信号非线性变化的误差。
这个误差在频域里表现为谐波失真,直接扼杀了ADC的无杂散动态范围(SFDR)。对12位以上的系统来说,这会变得非常致命。所以要解决的根本问题只有一个:让开关的导通电阻不随输入信号变化。
1.2 三种主流ADC架构对采样前端的不同要求
采样电路不是孤立存在的,它必须和ADC架构匹配,否则就是"车好但路烂"。我在系统设计时一般会先明确后端用哪种架构,再倒推采样前端的需求。
| ADC架构 | 采样特点 | 前端设计侧重点 |
|---|---|---|
| SAR ADC | 采样频率中等,逐次逼近,输入信号直接接采样电容 | 采样开关非线性影响最大,自举开关几乎是刚需 |
| 流水线ADC | 第一级MDAC对采样精度要求极高,残差信号要精确放大 | 采样网络和运放建立时间要同时满足,kT/C噪声分配要谨慎 |
| 过采样∑-Δ ADC | 采样频率远高于奈奎斯特频率 | 前端的抗混叠滤波可以简化,但对带内噪声和时钟抖动依然敏感 |
以SAR ADC为例,在12位精度下,如果采样电容是2pF,kT/C噪声约45uV rms,这要求采样开关的导通电阻在满摆幅输入范围内不许有肉眼可见的波动,否则谐波失真会远大于量化噪声。所以说,采样电路是ADC系统里"最前端、最容易被低估、最影响全局"的环节,一点都不夸张。
2. 自举开关原理精讲:把"门"举到天花板
2.1 采样开关的非线性从哪来
在讲自举之前,先算一笔账。对单个NMOS管而言,导通电阻可以近似写成:
Ron = 1 / [μn * Cox * (W/L) * (VGS - VTH)]
这里VGS是栅源电压,VTH是阈值电压。当源端电压(也就是输入信号Vin)上下摆动时,如果栅极电压固定不变,VGS = VDD - Vin 就一直变化,Ron自然也跟着变。更麻烦的是,VTH还会因为体效应随源电压变化而变化,非线性进一步加剧。
要让Ron恒定,最直接的办法就是让VGS不变。既然源头电压在变,那栅极电压就得跟着源头一起变,始终保持"栅极比源极高出一个固定电压",这就是自举(bootstrap)的想法。生活化理解:你想让门一直保持打开到同样的角度,就不能把门把手固定在地上,要把整个手举到和门一样高。
2.2 经典自举结构工作过程拆解
最经典的NMOS自举开关结构,核心是一个辅助电容Cboost和几个开关管。整个工作分两相:
采样相:辅助电容Cboost先被充电到电源电压VDD,然后一端接到输入信号Vin,另一端接到采样管的栅极。因为电容两端电压不能突变,栅极电位就被"举起"到Vin + VDD附近。此时采样管的VGS ≈ VDD,无论输入电压怎么变,这个压差基本恒定,Ron也就保持稳定。
保持相:采样管栅极被拉低到GND,开关断开,采样电容上保持住采到的电压。与此同时,Cboost重新复位充电,为下一次采样做准备。
实际工程中,开关管的时序要精心设计,否则会出现时钟馈通和电荷注入。我记得第一次带学员做这个模块时,大家仿出来的波形"看起来没问题",但一跑FFT,SFDR在80dB就上不去了。排查下来,问题出在栅极电荷注入的失调电压上,这个等会细讲。
2.3 还有哪些"魔鬼细节":电荷注入、时钟馈通、体效应
自举开关原理不复杂,真正难的是处理寄生效应。
电荷注入:采样管从导通切换到断开时,沟道里的电荷会有一部分注入到采样电容上,形成一个与输入信号有关的电压误差。解决办法是加虚拟开关管(dummy switch),让dummy管在采样管断开瞬间把注入电荷吸收掉。误差仍然存在,但会变成与信号无关的固定失调,可以通过后续校准消除。
时钟馈通:时钟跳变通过栅源、栅漏寄生电容耦合到采样电容上。它和电荷注入一样,都希望采样开关的尺寸尽量小,但尺寸小了Ron又变大,这是一个经典权衡。设计时要在Ron、寄生电容、开关速度三者之间反复迭代。
体效应:我在2.1里已经提到过,阈值电压VTH受源衬电压影响,即使VGS恒定,Ron也可能不完全平坦。严谨的做法是把采样管的衬底接到源极,或者用深N阱工艺把采样管的衬底独立出来,跟随源极电位浮动,彻底消除体效应。当然,这要考虑漏电和闩锁风险,不是所有工艺都方便这么做。
我在实际项目里的经验是,对于12位、采样率50MSPS这个级别的SAR ADC,Ron变化控制在0.1%以内是一个可以参考的指标。具体算法很简单:先根据采样时间和精度要求算出允许的最大RC时间常数,再给Ron定上限,然后用仿真去验证整个输入摆幅内的Ron平坦度。
3. 前端系统设计实操:从开关到电路板的每一步
开关设计得再漂亮,如果系统前端不配合,照样白搭。采样电路的"系统设计"至少包含三个层次:片内的采样网络、片外的驱动与滤波、PCB的布局布线。
3.1 前端RC滤波设计:频域和噪声的权衡
很多人问我:ADC前端要不要加RC滤波?加多大?我的回答是,必须加,但不能乱加。
RC滤波的作用有两个:一是限制带外噪声和高频干扰,防止它们通过混叠折叠进基带;二是削弱运放驱动ADC采样电容时的振铃。代价就是引入极点,降低信号带宽。
计算公式很直接。假设ADC采样电容是Cs,采样开关导通电阻是Ron,再加上外部串联电阻Rext,总时间常数就是 (Ron + Rext) * (Cs + Cext),其中Cext是外部滤波电容的一个分量。要求在采样时间内建立到0.5 LSB以内,就要满足:
t_settle ≥ (N+1) * ln2 * (Ron + Rext) * (Cs + Cext)
以12位ADC为例,(N+1)ln2约为9。如果采样时间是20ns,那时间常数最多只有2.2ns左右。如果你外部串了1kΩ电阻,再并一个10nF电容,时间常数是10us,那ADC连边都摸不到,采集出来的值全都是"上一次的余温"。
对于∑-Δ ADC,情况略有不同,它过采样率高,抗混叠要求低,前端RC可以小一些,但带外噪声容易让调制器饱和,所以还是需要一个适度的带宽限制。我的习惯是,先看datasheet里推荐的ADC驱动电路,然后根据实际信号频率重新算一遍极点位置,而不是照抄。
3.2 运放驱动与钳位保护设计
ADC前端的运放不是随便选个低噪声运放就完事。它要在每个采样周期都给采样电容充足电,建立误差要远小于0.5 LSB。这意味着运放的带宽、压摆率、输出阻抗三者要同时达标。
压摆率不足的典型症状是:输入信号摆幅大、频率高时,转换结果出现"S型"失真,而且信号频率越高越明显。这种失真用加RC滤波解决不了,只能换更高压摆率的运放,或者在软件上做sin(x)/x补偿。
钳位保护电路我觉得是很多系统的盲区。尤其在被测信号可能超过ADC电源轨的场合,比如电流采样、电池电压检测,输入端一旦出现浪涌,ADC瞬间报废。实用的做法是在运放输出到ADC输入之间,用两个二极管分别接到电源轨和地,把电压钳在安全范围内。用运放构成的有源钳位更精确,可以做到输出限幅而不只是简单的二极管钳位,代价是电路复杂一些。对于7kW充电枪CP信号占空比采样这种应用,信号本身在标准协议内有明确范围,但实际线缆上的浪涌不可不防,钳位保护属于必须项。
3.3 PCB布局三个要点:时钟抖动与电源噪声
这是我踩过最多坑的部分,写出来希望后来人少走弯路。
要点一:时钟走线必须远离模拟输入。ADC的采样时钟哪怕只有皮秒级的抖动,也会直接转化为信噪比损失。换算公式是:SNR = 20 * log10(1 / (2π * f_in * t_jitter))。举个例子,输入信号100MHz,时钟抖动1ps,信噪比上限也只有64dB左右,这还没算其他噪声源。如果时钟线走在模拟输入旁边,串扰会让抖动恶化到几十皮秒,高端ADC直接废掉。所以时钟线要包地,要走阻抗受控线,离模拟输入至少3倍线宽以上。
要点二:电源去耦要"立体式"布局。我见过很多板子,原理图里每个电源引脚都放了0.1uF和10uF电容,但布局时全挤在一角,等效串联电感大的吓人,高频噪声根本滤不掉。小电容要尽量紧靠电源引脚,过孔直接落在电容焊盘旁边,地回路要短而粗;大电容次之。模拟电源和数字电源之间可以加磁珠隔离,但磁珠本身也有阻抗,别用在ADC基准等对阻抗敏感的节点上。
要点三:采样电容的地回路要独立回到ADC地。很多人把采样电容的地就近随便接到数字地,结果数字开关噪声全部通过地平面电流注入采样回路。我的做法是模拟地单独铺一块铜皮,单点连接到数字地,采样电容、基准电容、输入滤波电容都放在这块模拟地上。
下表整理了我常用的PCB布局检查清单:
| 检查项 | 合格标准 |
|---|---|
| 时钟走线与模拟输入最小间距 | ≥ 3倍线宽,最好有地线隔离 |
| 模拟电源去耦电容到引脚距离 | ≤ 100 mil(2.54mm) |
| 采样电容接地方式 | 独立模拟地,单点接数字地 |
| 基准源到ADC基准引脚走线 | 尽量短,加宽,避免细长走线 |
| 采样时钟上升沿 | 尽量陡,必要时加缓冲器整形 |
4. 采样建立时间与仿真验证
4.1 建立时间怎么算
采样建立时间这个指标,很多人只是看一眼datasheet里的t_acq就完事,但真到了自己设计时,往往不知道这个时间是怎么来的。
建立过程本质上是一个RC指数充电过程。误差从初始值衰减到目标精度所需的时间,取决于时间常数τ和需要衰减的位数。对于N位ADC,建立到0.5 LSB需要约 (N+1)*ln2 个时间常数。如果是12位,大约9个τ;16位则需要约11.8个τ。
需要注意的坑是,这里的"建立时间"不能用"半个周期"来算。以SAR ADC为例,采样阶段往往只占整个转换周期的一小部分。比如一个10MSPS、12位SAR,转换周期100ns,SAR内部比较量化时间可能占了80ns,真正给采样保持的时间可能只有20ns甚至更少。如果前端的RC时间常数是2ns,9个τ是18ns,勉强够用;如果你给外部串了50Ω电阻、又并了100pF电容,τ变成了5ns,那45ns的建立时间刚好超了,数据就开始漂。
所以我在项目里都会做一个表格,把各个频率点的允许外部RC值算清楚,再反推PCB上该放多大的滤波电容。这里有个工程折中:滤波电容太小,抗干扰效果差;太大,建立时间不够。低功耗芯片常见做法是外部只放几十皮法的电容,依靠片内采样电容和高带宽运放来处理。
4.2 从仿真到实测:需要盯的几个指标
仿真阶段,我会重点看三个波形。
一是采样时钟边沿处的输入电压变化。理想情况是开关在时钟沿瞬间闭合,采样电容在随后的时间里完成建立。如果开关控制信号太慢,输入信号在建立期间还在大幅变化,结果就会带上动态误差。二是采样电容上的电压在开关断开瞬间的毛刺大小,这是电荷注入和时钟馈通的直接体现。三是整个输入摆幅范围内,采样保持电路输出共模电压的波动,波动越大,非线性越明显。
实测阶段,我会先用正弦波输入做FFT测试,看SFDR和SNR是否达到目标。如果频谱里出现明显的二次谐波,大概率是采样开关的VGS不对称;三次谐波常常是运放或RC非线性贡献;底噪抬升优先怀疑电源和参考源噪声。这里给一个来自实操排查的建议:先单独测运放输出端的信号纯度,再测ADC采样后的FFT,这样才能快速定位失真来源是驱动级还是ADC本身。
5. 校准、漂移和问题排查实录
5.1 外部ADC三点校准怎么做
我在实际调试时发现,很多板子以为是硬件问题,结果只是没做校准。ADC系统里最常见的误差有三种:失调(offset)、增益误差(gain error)和线性误差(linearity)。
三点校准是对这三种误差做一次性修正的标准做法:
- 失调校准:输入接地(或已知共模电平),采集N次求平均,得到失调值,后续所有读数都减去它。
- 增益校准:输入一个接近满量程的已知精确电压,采集后计算实际增益 = (读数 - 失调) / 参考电压,然后用这个增益系数去缩放。
- 线性校准:在输入范围内选第三点(通常是中间量程或者某个特定压力点),用两点插值或更高阶拟合,修正剩余的非线性误差。
校准公式不用写复杂,核心是把"理想转移曲线"和"实际转移曲线"的偏差存成一个查找表,运行时查表修正。三点校准适合温度变化不大、信号变化规律稳定的场合。如果系统工作温度范围很宽,就需要在不同温度点做多点标定,甚至做成分段线性拟合。外部ADC的基准电压精度直接影响增益校准,所以校准用的电压源要高精度,且远离走线干扰源。
5.2 ADC数据漂移怎么排查
"ADC读回来的数据一直漂"是我在论坛和项目里被问最多的问题之一。排查这类问题,我的顺序基本固定:
先查参考源。用万用表测基准电压是否稳定,如果基准芯片温度系数差或布局不合理,基准电压会跟着发热器件走,数据自然就飘。再查电源纹波。开关电源的纹波如果不处理好,会直接耦合到ADC参考或输入回路。用示波器看ADC电源引脚的纹波峰峰值,如果超过几十毫伏,就得加强去耦。
还要查线路板上的地弹。采样瞬间电流很大,如果地回路阻抗偏高,地电位被瞬间抬高,采集结果就会周期性跳动。我遇到过GD32系列单片机ADC用DMA采集时数据时乱时稳,最后发现是地平面被一个槽分割了,DMA虽然只是搬运数据,但数字翻转噪声全部灌入了模拟地。
软件层面的滤波也很关键。硬件做得再干净,传感器信号本身也可能有工频干扰。常用的做法是滑动平均滤波、中值滤波,或者对多周期采样结果做均值处理。纯粹用软件滤波提高不了ADC的有效位数,但对付叠加在信号上的随机噪声和周期性尖峰非常有效。
复盘一次真实项目:某块板子的电流采样电路,ADC数据低频漂移,我怀疑过基准、怀疑过运放、怀疑过温漂,最后用示波器测出来是开关电源在轻载模式下进入跳周期模式,输出纹波频率刚好落在信号带内。解决方案是给电源加了一个假负载,让其保持在连续导通模式,数据立刻稳定。
6. 关键技术选型:MCU内置ADC还是外部ADC芯片
做系统设计时,经常会遇到一个灵魂拷问:用MCU内部的ADC,还是单独选一颗ADC芯片?
MCU内置ADC的优势是成本低、集成度高、软件生态成熟。STM32、S32K312这类芯片的SAR ADC采样率从几MSPS到十几MSPS,配合DMA和高级定时器触发,在很多电机控制和电源应用里完全够用。S32K312的ADC还支持多个转换通道分组和硬件平均,用起来很灵活。但内置ADC的参考电压、采样保持电容这些参数往往是固定死的,前端可调空间小,精度上限在12位到16位之间。
外部ADC芯片的优势在于:可以选更好的输入结构,比如真正的差分输入、真正的高输入阻抗;可以选更高的分辨率和采样率;可以进行更灵活的前端设计和校准方案。缺点是需要额外设计驱动电路、参考电路和数字接口。
我的选型经验是:如果信号链路只要求12位以下、采样率不高,优先用MCU内置ADC,省事省钱。如果系统对精度、温漂、采样保持性能有严格要求,或者信号带宽明显超出内置ADC能力,就上外部ADC。记住,选型不是在选"最好的ADC",而是在选"最匹配整个信号链的ADC"。
7. 写在最后的一些体会
采样电路这套东西,原理书上就几页纸,但真正做起来,从版图到PCB,每一个细节都能让数据掉几个LSB。我带学员时最常说的一句话是:不要相信第一次仿真就完美通过的采样电路,要把电荷注入、时钟馈通、建立时间、参考源噪声全部拉出来反复拷问,采样电路才敢说设计完了。如果这篇文章能帮你少走一段我当年走过的弯路,那就算没白写。以后有机会,我再单独写写SAR比较器里的噪声分配,以及自举开关在深亚微米工艺下的可靠性设计。