模拟CMOS开关电容电路设计:从基本单元到非理想效应全解析 📅 发布时间:2026/9/14 0:45:11 👁 浏览次数: 1. 核心思路为什么模拟CMOS里SC单元绕不开做模拟IC设计的人早晚都会撞上开关电容电路也就是SC。不管你是做ADC里的采样保持电路还是做滤波器、比较器、电荷泵SC基本单元就像搭积木的最小模块天天见。我最早接触SC是在做一款SAR ADC的采样前端那时候对开关电容的理解仅限于“开关加电容”等到真正去调电路、看波形、找问题的时候才发现SC单元里面藏着非常多的门道。模拟CMOS里的SC电路核心就一句话用开关和电容来模拟电阻的行为。为什么要这么麻烦因为在标准CMOS工艺里做一个高精度的电阻非常占面积而且电阻的绝对值偏差很大可能是正负20%甚至更高。相比之下电容的匹配精度可以做得很高能做到千分之一甚至万分之一量级。如果你需要的是一个时间常数也就是电阻乘电容的乘积用电容替代电阻之后时间常数就变成由电容比值和时钟频率来决定这两个量在芯片上都是可以做得很准的。可能有人会问开关电容本质上是一个离散时间系统它跟连续时间的RC滤波器有什么本质区别这个问题问得很好。SC电路虽然在一个时钟周期内看电荷转移是逐步发生的但是在低频、或者说在远低于时钟频率的频段内它的行为可以用一个等效电阻来建模也就是R_eq 1/(f_clk * C)。这个式子是整个SC电路分析的基础几乎所有SC基本单元的行为推导都从它出发。我在给团队新人讲SC的时候经常用一个水管类比想象两个水池之间有一根水管水流大小取决于管子的粗细这就是电阻。SC的做法是用一个水杯反复从一个池子舀水倒到另一个池子里舀水的频率越快、水杯越大单位时间转移的水量就越多等效的水管就越粗。这个类比虽然简单但是在直觉上非常有用尤其是分析电荷转移方向、理解开关时序的时候脑子里有这个画面会轻松很多。SC基本单元的另一个核心优势在于它可以精确实现一些用连续时间电路比较难做的功能比如精确的加减法、乘系数、积分还有可编程的增益控制。因为这一切都取决于电容比值而电容比值可以通过版图布局做得很准。再加上CMOS工艺里开关只需要一个晶体管面积和功耗都很低所以SC电路在混合信号芯片里几乎是标配。2. 基本单元解剖开关、电容、运放、时钟2.1 开关管的选择NMOS、PMOS还是传输门SC电路里的开关最简单的实现就是一个NMOS管。但NMOS管有一个明显的毛病传输高电平的时候会有阈值损失。如果你用NMOS当开关输入信号接近VDD的时候输出最多只能到VDD减Vth这在高精度电路里是不可接受的。PMOS正好相反传输低电平会有问题。所以大多数情况下我们会用传输门也就是NMOS和PMOS并联互补控制这样全摆幅信号都能通过。在实际设计里开关管的尺寸选择是一个权衡的问题。管子越大导通电阻越小充电时间越短精度越高但是寄生电容也越大时钟馈通和电荷注入效应也更严重。我记得有一次在设计采样开关的时候为了追求低导通电阻把管子做得特别大结果采样保持后的电压出现了明显的台阶这就是电荷注入引起的误差。后来把管子尺寸降下来同时在开关管旁边加了虚拟管来吸收注入电荷问题才解决。这里要特别提醒一点开关管的导通电阻并不是恒定的它随着输入信号电压变化而变化。在采样保持电路中这种非线性会导致采样电压失真。缓解的办法通常是让开关管的栅极过驱动电压尽量大或者使用栅压自举开关。栅压自举技术说白了就是让开关管在导通时栅源电压保持恒定不随输入变化这样导通电阻的一致性就大大提高了。现代高速高精度ADC里采样开关几乎清一色用栅压自举。对于一般的SC基本单元比如积分器和比较器普通传输门就够用了。你只需要确保在信号摆幅范围内开关始终可靠导通并且导通电阻足够小不至于影响建立时间就行。具体电阻值要求取决于你给电路留的建立时间余量后面我会专门讲怎么估算。2.2 电容的选取单位电容、匹配和寄生SC电路的精度很大程度上取决于电容匹配。在CMOS工艺里常用的电容类型有MIM电容、MOM电容和MOS电容。MIM电容是金属-绝缘层-金属结构线性度好匹配也不错缺点是单位面积电容小比较贵。MOM电容是金属-氧化物-金属的叉指结构用的是金属层之间的侧壁电容在现代工艺里很常见匹配精度可以做得很好。MOS电容单位面积电容最大但是它有明显的电压依赖性也就是电容值会随偏置电压变化这在精密SC电路里是致命的所以一般不拿来当采样电容。设计SC电路的时候通常先确定单位电容的大小再从匹配角度确定总电容。单位电容越大匹配越好KT/C噪声越小但是功耗和面积也越大。这是一个典型的工程权衡。我在一个项目里遇到过这种情况理论上算下来单位电容50fF就够了但流片回来测出来增益偏差超过了预期。后来仔细分析发现这个工艺在50fF这个尺寸下边缘效应导致匹配很差把单位电容改到150fF之后实测匹配就好很多了。所以我的经验是如果要追求好的匹配单位电容别小于100fF除非你非常清楚这个工艺的电容特性。寄生电容是另一个绕不开的问题。电容的下极板通常会比上极板寄生电容大很多因为下极板离衬底更近。所以在版图设计的时候尽量把所有关键电容的下极板接到低阻抗节点比如运放输出或者地这样可以消除下极板寄生电容对电荷转移的影响。这个技巧在SC电路版图里属于基本操作但是很多新手会忽略。2.3 运放的核心指标增益、带宽、摆率SC基本单元中运放的作用是提供精确的电荷转移。无论是积分器的虚地节点还是比较器的预放大级运放的性能直接决定整个SC电路的精度。首先是直流增益。在SC电路中运放的有限增益会导致电荷转移不完全这等价于给电容比值引入了一个误差项。简单来说如果运放增益为A那么实际的闭环增益会偏离理想值一个约1/A的相对误差。对于14位精度的系统你需要运放的增益至少在90dB以上才能保证增益误差小于1个LSB。其次是单位增益带宽和建立时间。SC电路工作在离散时间域每个时钟相位内电荷转移必须完成到指定精度。建立误差跟带宽和相位裕度的关系比较复杂但大致上单位增益带宽至少要达到时钟频率的5到10倍才有可能在半个时钟周期内完成0.1%精度的建立。如果你做的是高精度应用还要把建立精度要求提高到0.01%那么带宽可能要到时钟频率的20倍以上。这还只是单极点近似实际运放还有次极点的影响。摆率是另一个经常被忽视的指标。运放建立过程分两段先是摆率限制的大信号阶段然后是线性建立的小信号阶段。如果摆率不够在大信号跳变时输出跟不上建立时间就会被拉长。在SC积分器里采样电容上的电压从上一个周期的输出跳变到当前周期的输入这个跳变幅度可能很大运放必须以足够快的摆率跟上。一个实用的估算方法是摆率至少要满足在四分之一时钟周期内完成最大信号摆幅的建立否则线性建立的时间就不够了。2.4 时钟非交叠时钟和自举开关的配合SC电路离不开时钟。两个基本要求一是非交叠二是足够的驱动能力。非交叠的意思是在两个开关的控制时钟之间必须留有一段死区时间确保一组开关完全关断之后另一组开关才导通。如果不满足非交叠条件采样阶段和转移阶段会短暂打混导致电荷意外泄漏直接影响精度。非交叠时间的选取需要平衡。太短会有关键的时刻风险太长则会压缩有效的建立时间。一般取时钟周期的1%到2%作为非交叠时间比较常见。比如时钟频率10MHz也就是周期100ns非交叠时间取1到2ns。时钟信号的边沿速率也很重要。理想情况下我们希望时钟边沿非常陡以减小开关导通时间的不确定性。但是边沿越陡时钟馈通效应也越显著。在实际设计里通常会用专门的时钟缓冲器来驱动开关管栅极并确保各个开关的时钟边沿对齐。值得注意的是对于使用栅压自举开关的高速采样电路时钟驱动能力的要求会更高因为自举电路本身需要给自举电容充电这部分动态功耗不可忽视。3. 常用SC基本单元逐一拆解3.1 增益级比例放大器最简单的SC增益级就两个电容加一组开关。它的基本思路是采样阶段输入信号对采样电容充电转移阶段采样电容接到运放的反相输入端反馈电容接在输出和反相输入端之间电荷从采样电容转移到反馈电容。最终的输出电压等于输入电压乘以两个电容的比值也就是V_out -(C_s / C_f) * V_in。这个电路看似简单但是有两个细节值得注意。第一增益精度完全取决于两个电容的比值跟时钟频率无关。这就是SC电路的最大优势之一时钟频率变了增益不变。第二运放输入端的共模电压会被开关动作影响因为采样阶段采样电容一端接地转移阶段一端接运放输入。所以设计时必须考虑共模建立的问题必要时加入共模反馈网络来稳定运放的工作点。在实际应用中这种增益级常被用来实现精确的比例放大或者衰减。比如在一个PGA可编程增益放大器里通过开关阵列切换不同的反馈电容就可以实现从0.5倍到16倍的可编程增益而且每档的增益精度都能做得很高这是连续时间电阻方案很难做到的。3.2 积分器SC积分器SC积分器是SC滤波器里最核心的单元。它的结构是采样电容C_s和反馈电容C_f开关按非交叠时钟工作。每个时钟周期采样电容获取输入电荷然后转移到反馈电容上反馈电容上的电荷不断累积输出就是输入的时间积分。SC积分器的传输函数为H(z) -(C_s / C_f) * z^(-1) / (1 - z^(-1))它对应连续时间域的积分器但是多了一个时钟周期的延迟。这个延迟在离散时间系统里是正常的不会影响滤波器的特性但对反馈环路来说这可能带来额外的相位滞后需要在系统层面处理。设计SC积分器的时候反馈电容的取值决定了最大输出电压摆幅和噪声。反馈电容越大噪声越低能处理的电荷越多但面积也越大。在采样阶段运放处于单位增益缓冲状态反馈电容和采样电容断开运放的输入失调电压会存储在一个专用的失调消除电容上也可以靠相关双采样技术来消除。这种消除技术在很多高精度ADC里是标配。我之前在一个Σ-Δ ADC项目里积分器的反馈电容从1pF加大到2pFSNR提升了大概3dB这就是KT/C噪声的贡献。但是代价是运放的负载电容翻倍功耗也增加了近一倍。所以做噪声和功耗的trade-off时一定要整体考虑不能只看电路本身的性能。3.3 比较器预放大加锁存SC比较器在SAR ADC里很常见。它的基本结构是采样阶段把输入信号和参考电压的差值存储在电容上比较阶段利用锁存器把这个差值放大到数字电平。为什么要用SC结构来实现比较器因为在CMOS工艺里锁存器的失调电压比较大可能有几十毫伏。如果直接用锁存器比较两个电压精度很低。SC比较器的思路是先用一个预放大级对小信号进行放大然后才交给锁存器判断。预放大级可以用一个简单的SC放大器来实现增益不需要太高10到20倍就差不多了关键是带宽要够能在短时间内完成建立。用SC方式还有一个好处可以很方便地实现采样保持和比较的串行操作。SAR ADC在每一位转换过程中都要比较DAC输出电压和输入信号SC比较器天然支持这种“先采样再比较”的工作方式而且采样电容还可以兼作DAC的电荷重分配电容。这种“一鱼两吃”的设计在SAR ADC里非常经典。当然SC比较器也有它的弱点主要是噪声和速度的矛盾。采样电容越大KT/C噪声越小但是充电时间越长比较速度越慢。在高分辨率SAR ADC里比较器的噪声指标通常要低于1/2 LSB这对采样电容的大小有明确的要求。以12位、1.8V参考电压的SAR ADC为例LSB大约是0.44mV比较器输入噪声需要控制在0.2mV以下这时候采样电容至少要做到几百fF的量级。4. 设计中有意思的地方非理想效应的深度思考4.1 电荷注入和时钟馈通精度杀手MOS开关在关断时会把沟道里的电荷注入到信号路径上这就是电荷注入效应。假设一个NMOS开关沟道尺寸是W和L栅极过驱动电压是V_ov那么沟道里的总电荷大约是Q_ch W * L * C_ox * V_ov。关断时这些电荷大约一半注入到信号节点一半流到栅极驱动端。如果信号节点的电容是C_signal那么电压误差大约是Q_ch的一半个除以C_signal。这个误差有多大举个例子W/L 2um/0.18um的NMOS管C_ox大约10fF/um²V_ov是0.3V那么沟道电荷大约是1.08fC。如果信号节点电容是100fF注入一半电压误差大约是5.4mV。对于12位ADC来说这个误差相当于好几个LSB完全不可接受。所以必须用虚拟开关管或者全差分结构来抵消。时钟馈通是另一个效应它通过开关管的栅漏和栅源寄生电容耦合到信号节点。这个耦合不像电荷注入那样可以通过虚拟管精确抵消因为它不只是跟电荷有关还跟时钟边沿的斜率有关。在实际工作中我通常把电荷注入和时钟馈通统称为“开关噪声”在设计时分两步处理原理图上用虚拟管消除主要电荷注入仿真时看瞬态波形如果还有明显的毛刺就调整开关管尺寸和时钟边沿斜率。4.2 KT/C噪声躲不掉的锅里饭SC电路的噪声性能最终受限于KT/C噪声。这是采样电容带来的基础热噪声表达式是v_n² kT / C_s。这里面没有任何技巧可以绕开采样电容越大噪声越小但代价是面积和功耗。举个具体的数字。常温下kT大约是4.14×10⁻²¹焦耳。如果采样电容是1pF那么KT/C噪声电压大约是64.3uV RMS。对于一个1.8V的参考电压12位系统的LSB是0.44mV六倍标准差对应约7个LSB这就是为什么高精度系统的采样电容不敢做小的原因之一。在系统层面KT/C噪声跟带宽无关只跟电容大小有关这点很多初学者会困惑。这是因为在采样瞬间带宽越大噪声带宽也越大两者抵消之后落在电容上的噪声能量恒定。所以减小采样带宽并不能降低KT/C噪声唯一的方法就是加大电容。这个结论对SC电路设计有深远的影响很多高精度设计的面积和功耗预算都被这个噪声限制住了。4.3 比较器失调和噪声的折衷SC比较器的失调可以通过自动调零技术来消除但噪声只能靠加大电容和降低带宽来控制。失调消除的基本思路是在自动调零相位把比较器的输入失调电压存储在电容上然后在比较相位把它跟输入信号串联从而抵消掉失调。自动调零电容的大小选择有一个讲究电容越大存储失调电压越稳定但是会降低比较器的带宽。在实际设计里这个电容一般取几百fF到几pF的量级具体看比较器的输入管尺寸和噪声要求。需要注意的是自动调零技术消除的是失调不是噪声。噪声是随机的无法用存储的方式抵消。在高精度SAR ADC里比较器的设计通常要经过多轮仿真迭代。第一步是确定输入对管的尺寸和偏置电流满足噪声和速度要求第二步是设计自动调零路径和开关模拟失调消除效果第三步是仿真整体失调和噪声看看有没有达到位数要求。经常出现的情况是第一轮仿真噪声超标第二轮加大电流后速度上去了但是功耗超标最后需要在连续几轮迭代里找到平衡点。5. 从单元到系统一个SC积分器的完整设计流程5.1 从指标反推参数我们以一个实际例子来走一遍完整的SC积分器设计流程。假设我们要设计一个用于音频Σ-Δ ADC的第一级积分器采样时钟频率是6.4MHz过采样率是128倍目标信噪比是100dB。首先确定采样电容。根据KT/C噪声的要求100dB的SNR意味着噪声功率要低于信号功率10个数量级。如果满摆幅差分信号是1Vrms那么总噪声功率要小于1×10⁻²⁰左右折合到输入端的噪声电压要小于1uVrms左右。考虑到Σ-Δ调制器的噪声整形特性第一级积分器的KT/C噪声不会被整形所以这里的采样电容要足够大。简单估算下来采样电容至少要5pF。实际设计中我会留一点余量取6pF到8pF。然后是反馈电容。这个取决于第一级积分器的增益也就是调制器的量化噪声整形参数。通常第一级增益取0.3到0.5之间这样既能保证稳定性又有足够的噪声整形效果。假设取0.5那么反馈电容就是采样电容的两倍也就是12pF到16pF。反馈电容越大等效噪声越小但是面积和功耗也上去了。再来看运放的指标。负载电容大约是采样电容加反馈电容的等效并联值再加上下一级的输入电容和版图寄生的估算大约在20pF左右。要在半时钟周期也就是约78ns内建立到0.001%精度运放的单位增益带宽大约需要30MHz到50MHz。直流增益要达到100dB以上相位裕度至少要60度这是稳定性的硬指标。5.2 运放设计要点与选择逻辑对于这么高的增益要求单级套筒式共源共栅运放可能会比较吃力通常需要使用两级运放或者增益自举运放。两级运放的优点是输出摆幅大但补偿起来麻烦增益自举运放可以在不牺牲输出摆幅的情况下获得高增益但是结构和偏置电路比较复杂。在这个应用场景里我会选择增益自举的套筒式运放。原因有三一是音频带宽对带宽要求不算极端套筒式结构足够二是增益自举可以把增益做到120dB以上余量充足三是套筒式结构的功耗效率比较高在电池供电的音频设备里比较友好。第一级用NMOS输入对管尾电流源提供偏置负载用PMOS共源共栅结构。增益自举放大器用折叠式共源共栅结构把自己的增益做高同时不影响主运放的主极点位置。第二级是一个简单的共源极放大器用来提供足够的输出摆幅。米勒补偿电容放在第一级输出和第二级输入之间同时加一个调零电阻来消除右半平面零点的影响。补偿电容大约2pF到3pF这个值是靠仿真迭代确定的初值可以按负载电容的五分之一来估。5.3 版图布局和仿真验证的复盘版图阶段重点注意三件事电容匹配、信号路径屏蔽、电源去耦。采样电容和反馈电容要采用共质心布局周围加虚拟电容来保证边缘一致性。关键信号线尽量用上下左右的电源或地线包裹起来减少耦合干扰。电源去耦电容可以放在版图空白区域尽量靠近运放的电源引脚。仿真验证阶段我先做瞬态仿真看积分器输出波形是否正确累积。然后在相同条件下跑噪声仿真看输出噪声谱是否符合预期。再跑蒙特卡洛仿真验证电容失配和运放失调对整体性能的影响。最后还要做工艺角仿真至少在TT、FF、SS三个角下确认电路都能正确工作。我踩过的一个坑是在TT角下性能非常完美但SS角下建立时间不够导致SNR掉了5dB。原因是SS角下晶体管的阈值电压偏高开关导通电阻偏大充电时间变长。解决办法是适当加大关键开关管的宽长比同时把时钟的非交叠时间稍微缩短一点这样在各个工艺角下都能保证足够的建立时间。这类工艺角问题在仿真阶段如果不仔细检查流片回来就麻烦了。6. 常见问题与排查技巧实录6.1 积分器输出波形出现台阶这个现象通常是采样时钟和转移时钟之间没有足够的非交叠时间。两个时钟交叠时采样电容同时连接输入和运放输出出现电荷竞争输出就会出现异常台阶。排查方法很简单在Cadence里把时钟波形和输出波形放在同一张图里放大看时钟边沿的时序关系如果能明显看到交叠基本上就坐实了。解决办法是调整非交叠时钟产生电路的延迟单元。一般的设计里会用反相器链来产生非交叠时间调整反相器的尺寸或者增加级数就能加长延迟。需要注意的是非交叠时间跟时钟频率无关是一个固定的时间量所以当工作频率比较低时非交叠时间占时钟周期的比例很小问题不大但是频率高到一定程度非交叠时间就会吃掉太多的有效时间这时需要重新平衡。6.2 输出有过大的毛刺如果输出波形在时钟沿附近出现很尖的毛刺大概率是时钟馈通效应。这种毛刺的幅度跟开关管尺寸和时钟边沿斜率直接相关。我的处理顺序是先看毛刺幅度是否影响系统精度如果只是仿真里的视觉问题可以忽略如果影响了性能再通过减小开关管尺寸来缓解。还有一种情况是运放带宽太高把时钟信号的一部分耦合到了输出端这时候即使开关管尺寸不大毛刺也会很明显。可以考虑在运放输出端加一个小电容做带宽限制。不过要小心这可能会影响建立时间需要仿真确认。6.3 建立时间不够怎么调建立时间不够的直接表现是输出波形在半时钟周期结束时还没稳定到目标精度。这时候先别急着加大运放偏置电流可以从几个方面排查。第一看运放是工作在摆率限制区还是线性建立区。如果输出波形呈明显的线性斜坡说明运放正在摆率限制下工作这时加大电流才有意义。如果输出已经接近最终值但有小尾巴那是线性建立阶段带宽不够要增加带宽而不是电流。第二检查采样开关的导通电阻是否成为瓶颈。如果开关导通电阻太大采样电容的充电时间常数就长即使运放带宽足够信号也进不来。这时候要加大开关管的宽长比或者调整时钟边沿让有效导通时间更长。第三检查运放的相位裕度。相位裕度不足会导致建立过程出现振铃波形看起来像是过冲后在振荡。这个跟补偿电容的大小直接相关可以适当加大补偿电容来改善相位裕度代价是带宽下降。所以这是个典型的trade-off需要多次迭代。6.4 噪声性能达不到预期仿真显示SNR和设计值差了很多第一步先确认噪声来源。把运放的噪声贡献关掉只看KT/C噪声是否跟理论值一致再把采样电容的噪声忽略只看运放噪声。这样就能定位问题出在哪个环节。如果KT/C噪声超标那就是采样电容太小加大采样电容但同时要确认反馈电容也按比例加大否则增益会改变。如果运放噪声超标先看输入管的gm是否够大增大偏置电流是提高gm最直接的办法。另一个常见问题是噪声仿真时没有正确设置噪声带宽导致积分得到的噪声值偏大。噪声仿真的带宽上限至少要设到5到10倍的运放单位增益带宽不然高频噪声被漏掉了。6.5 时钟馈通导致的比较器误判在高速比较器里时钟馈通可能让判决结果在边界附近出现随机抖动。典型现象是输入接近阈值时输出结果在多次仿真中不一致。这个问题比较隐蔽因为看起来像运放噪声变大但本质是开关噪声带来的信号扰动。我遇到过一次把比较器的输入信号设为阈值电压时输出在两种状态之间随机跳变看起来像仿真器出了问题。后来把采样时钟边沿减慢毛刺幅度减小误判就消失了。这说明时钟馈通确实影响了比较器的门限。解决办法除了减小开关管尺寸还可以在全差分结构里利用共模抑制来抵消馈通效应的共模成分。7. 个人经验总结与后续方向思考做SC电路设计这几年我最大的感受是SC电路的门槛不在于看懂基本结构而在于把每个非理想效应都想透。电荷注入怎么抵消、KT/C噪声怎么折衷、时钟馈通怎么规避、建立时间怎么权衡每一个问题拿出来都可以写一整篇深入的文章。但反过来讲只要把这些基本问题理清楚SC电路设计就变成了一套有章可循的工程方法不再是凭感觉调参数碰运气。我建议刚开始接触SC电路的读者一定要自己动手搭一个最简单的SC积分器从选电容开始到设计运放再到画版图、跑仿真完整走一遍流程。这个过程里你会遇到很多书本上讲不清楚但是现实里一定会出现的问题。把这些坑踩一遍你对SC电路的理解会有一个质的提升。SC电路的后缀还有很多可以深入的方向。一个是低电压低功耗设计现代可穿戴设备对功耗的要求极高SC电路的动态功耗跟开关频率和电容大小直接相关在保证噪声和速度的前提下优化功耗是很值得研究的课题。另一个是高性能采样保持电路特别是栅压自举开关的设计这在高精度高速ADC里非常关键。还有SC共模反馈电路的设计虽然它像是一个配角但在全差分SC系统里少了它就是不行。我个人后面比较关注的方向是把SC技术和连续时间技术结合比如连续时间Σ-Δ调制器里的一些混合结构。这类结构既能利用SC电路精确的比例关系又能借助连续时间电路的低功耗优势在中等精度中等带宽的应用里非常有竞争力。如果你对SC电路已经有一定基础不妨往这个方向多看看。最后分享一个设计小技巧SC电路的版图设计里关键电容下面的地平面一定要完整不要走其他信号线。我吃过一次亏在采样电容下方走了一根控制线结果每次控制线翻转时采样电容都会耦合到一点噪声虽然幅度不大但在高精度系统里就是那1到2个LSB的差别。后来把控制线绕到其他层走问题就解决了。版图上的小细节往往就是流片成败的分水岭。