
1. 项目概述从“一页笔记”到栅压自举电路的深度拆解在模拟集成电路设计的浩瀚海洋里总有一些电路结构因其精妙和关键性成为工程师们必须烂熟于心的“看家本领”。栅压自举电路就是这样一个经典的存在。它不像运放那样结构庞大也不像带隙基准那样理论深邃但它却是许多高性能模拟模块尤其是采样保持电路、开关电容电路以及高速高精度ADC输入缓冲级中那个不可或缺的“幕后功臣”。今天我们就以“一页笔记”的极简精神为引但绝不满足于浅尝辄止而是要深入栅压自举电路的肌理把它从原理、设计到仿真、调优的每一个细节都掰开揉碎讲清楚。这不仅仅是一份笔记更是一份基于多年流片实战经验的设计备忘录目标是让你读完就能理解其精髓并能在自己的项目中自信地应用和优化它。所谓“一页笔记”强调的是对核心知识点的极致提炼和结构化呈现。而对于栅压自举电路其核心使命非常明确消除作为开关的MOS管因栅源电压变化导致的导通电阻非线性从而在信号通路上实现一个近乎理想的线性开关。想象一下在一个精密的采样保持电路中采样开关的非线性会直接引入谐波失真污染你辛辛苦苦处理的信号。栅压自举电路就是来解决这个问题的“特效药”。它通过一个巧妙的反馈机制无论输入信号如何变化都能动态地调整开关管的栅极电压使其栅源电压维持恒定从而让开关的导通电阻变成一个相对恒定的值。接下来我们将从它的核心需求出发一步步构建起对它的完整认知。1.1 核心需求解析为什么我们需要“自举”要理解栅压自举电路为什么必要我们必须先直面一个根本问题用单个MOS管做模拟开关时它到底哪里不“理想”一个简单的NMOS开关其栅极接一个固定的高电平比如VDD以开启。当输入信号Vin变化时源极电位在开关导通时近似等于Vin也随之变化。由于栅极电压Vg固定栅源电压Vgs Vg - Vin 就会随着Vin变化而变化。MOS管在深线性区的导通电阻Ron与Vgs直接相关Ron ∝ 1/(Vgs - Vth)。于是Ron不再是常数而是一个随输入信号变化的变量。这直接导致了两个恶果信号失真开关的电阻非线性会使通过的信号产生谐波失真对于高精度应用是致命的。有限的信号摆幅为了保证开关始终导通Vgs Vth输入信号Vin的最大值被限制在 Vg - Vth。这严重压缩了信号的动态范围。栅压自举电路的提出正是为了从根本上解决这个问题。它的设计目标非常清晰让开关管M_switch的栅源电压Vgs_sw在开关导通期间保持为一个恒定的值通常设为VDD或另一个合适的电压而与输入信号Vin完全无关。这样Ron就恒定开关的特性就趋近于理想。“自举”这个词非常形象。它原本指的是“拽着自己的鞋带把自己提起来”在电路里意味着电路通过某种方式利用自身的输出或状态来提升或控制自身的某个节点电位。在栅压自举电路中就是利用一个辅助电路将开关管的栅极电位“举”到跟随输入信号变化且总保持一个固定压差的位置。1.2 电路拓扑演进从基本构想到经典实现最直接的想法可能是给开关管的栅极也加一个随Vin变化的信号且比Vin高出一个恒定的VDD。但如何可靠地生成这样一个“VinVDD”的电压呢而且这个电压还要能驱动开关管的栅电容需要一定的驱动能力。这就引出了经典的栅压自举电路结构它通常由充电阶段和自举阶段循环工作核心包含一个储能电容自举电容Cboot和若干控制开关。一个最经典、最易于理解的栅压自举电路模块如下图所示此处进行文字描述你可以在脑海中或纸上勾勒主开关管M_sw即我们需要线性化的那个模拟开关。自举电容C_boot电路的核心储能元件通常其一端连接M_sw的栅极。充电开关M_charge在充电阶段将C_boot的一端连接到电源VDD另一端连接到地或一个固定偏置从而在C_boot两端建立起VDD的电压差。自举开关M_boot在自举阶段将C_boot原先接地的一端切换到输入信号Vin。由于电容两端电压差不能突变此时C_boot连接M_sw栅极的那一端电位将变为 Vin VDD。这样M_sw的栅极电压Vg Vin VDD而其源极接输入Vin电压Vs Vin因此Vgs_sw VDD实现了恒定。这个描述勾勒出了基本原理但一个鲁棒、实用的栅压自举电路需要考虑更多细节如何生成互补且非重叠的时钟来控制这些开关如何确保在切换瞬间没有电荷注入和时钟馈通造成的误差自举电容的值需要多大辅助MOS管应该用什么类型这些正是设计中的精髓所在。2. 核心细节解析与设计要点理解了基本框架后我们必须深入每一个晶体管的角色、每一个电容的影响以及时序的严格要求。忽略这些细节电路可能仿真看起来美好一到流片测试就会问题百出。2.1 自举电容C_boot的选择并非越大越好自举电容是保证Vgs恒定的能量来源。在自举阶段它需要为M_sw的栅极电容Cgs_sw充电以将其电位抬升。如果C_boot太小在共享电荷后M_sw栅极的实际电压会低于理想的VinVDD导致Vgs_sw下降开关线性度变差。我们可以进行一个简单的电荷守恒分析假设在充电阶段结束时C_boot上的电压为VDD。在自举阶段开始时C_boot带有电荷Q_boot C_boot * VDD与M_sw的栅极电容Cgs_sw初始电压不确定但可简化分析并联连接。根据电荷守恒最终节点电压Vg满足 C_boot * VDD Cgs_sw * V_initial (C_boot Cgs_sw) * Vg‘ 为了达到理想的Vg’ Vin VDD我们需要C_boot远大于Cgs_sw以减小电荷重分配带来的电压损失。电压损失ΔV ≈ (Cgs_sw / (C_boot Cgs_sw)) * (VDD - V_initial)。实操心得在实际设计中我通常会让C_boot至少是Cgs_sw的10倍以上。但这不是盲目地大。C_boot本身会带来额外的寄生电容影响驱动它的开关速度并且占用芯片面积。需要在线性度、速度和面积之间取得平衡。对于高速应用还需要考虑C_boot的充放电速度这由充电开关的驱动能力和时钟频率决定。2.2 开关晶体管的选择与尺寸权衡电路中有多个开关晶体管M_charge, M_boot等它们的选择和尺寸至关重要。类型选择通常这些控制开关会使用传输门TG即PMOS和NMOS并联来实现。原因在于单个MOS管在传输电压时存在阈值损失和体效应问题。例如如果只用NMOS做M_boot来传输Vin到C_boot当Vin较高时NMOS的栅极需要高于VinVth才能良好导通这增加了时钟电压设计的复杂性。使用传输门可以保证从0到VDD全摆幅范围内的低阻传输。尺寸权衡开关尺寸大导通电阻小充放电快但带来的寄生电容Cgs, Cgd, Cdb也大。这些寄生电容是电荷注入和时钟馈通误差的主要来源。尤其是M_boot开关其漏/源端连接着关键的Vin节点和C_boot节点它的寄生电容会直接与信号路径耦合。电荷注入当开关关断时沟道中的电荷会向源漏两端离散注入到相连的节点。注入到C_boot或Vin节点的电荷会扰动电压。时钟馈通通过栅漏/栅源覆盖电容Cgd/Cgs时钟信号的跳变会耦合到信号节点。注意事项为了减小这些误差有几种常用技巧1使用尽可能小的开关尺寸在满足速度要求下2采用差分结构使注入到正负端的电荷相互抵消3使用下极板采样等技术在开关电容电路中常见4设计时钟时序使敏感节点在注入发生时处于“浮空”或已被采样保持的状态。2.3 时钟生成非重叠时钟的绝对必要性栅压自举电路至少需要两个相位充电相位Φ1和自举相位Φ2。这两个时钟必须是非重叠时钟。也就是说在Φ1变为低电平关闭充电电路后必须等待一段“死区时间”Φ2才变为高电平开启自举电路反之亦然。为什么必须非重叠想象一下如果Φ1和Φ2同时为高那么VDD和Vin将通过开关直接短路导致巨大的短路电流和功能紊乱。如果切换瞬间有重叠即使很短也会引起严重的电荷共享和电压扰动。因此一个可靠的、带死区时间的非重叠时钟生成电路是栅压自举模块不可分割的一部分。这个电路通常由几个反相器和与门/或门构成确保输出时钟的上升沿和下降沿之间有一个可控的延迟。3. 一个完整的实战电路设计与仿真验证让我们设计一个用于采样保持电路前端的栅压自举开关目标是在0-3.3V输入范围内将开关的导通电阻变化控制在1%以内。工艺节点假设为0.18μm CMOS电源电压VDD3.3V。3.1 电路模块详细设计我们将电路分为几个子模块来构建非重叠时钟发生器// 这是一个行为级描述便于理解 module non_overlap_clk_gen ( input clk_in, // 输入主时钟 output phi1, // 相位1时钟 output phi2 // 相位2时钟 ); // 通过串联偶数个反相器产生延迟路径 wire clk_delayed; // 假设使用4个反相器产生延迟 inv_chain #(.N(4)) delay_chain (.in(clk_in), .out(clk_delayed)); assign phi1 clk_in (~clk_delayed); // 经过简化逻辑示例 assign phi2 (~clk_in) clk_delayed; endmodule实际电路中会用标准单元或定制反相器链来实现并通过仿真调整反相器尺寸来控制死区时间通常设置为几十到一百皮秒量级。栅压自举核心单元 我们采用一个包含传输门的经典结构。假设主开关管M_sw是一个宽长比W/L10u/0.18u的NMOS具体尺寸需后续迭代。充电阶段Φ1高传输门TG1导通将自举电容C_boot的下极板接至地GND上极板接至VDD。此时C_boot被充电至VDD3.3V。另一个开关用NMOS实现将M_sw的栅极拉低至地确保其关闭。自举阶段Φ2高TG1关断TG2连接Vin和C_boot下极板导通。由于电容电压不能突变C_boot上极板接M_sw栅极的电位变为 Vin V_Cboot Vin 3.3V。同时使能开关导通将这个电压连接到M_sw的栅极使其导通且Vgs_sw (Vin3.3V) - Vin 3.3V。这里TG1和TG2都应使用传输门以实现全摆幅传输。C_boot的选择先估算M_sw的栅电容Cgs。对于0.18u工艺单位面积栅电容Cox约为8.5fF/μm²。Cgs ≈ (2/3) * Cox * W * L 忽略边缘电容粗略估算。计算得Cgs_sw ≈ (2/3)8.5e-15(10e-6)*(0.18e-6) ≈ 10.2 fF。为确保性能取C_boot 200fF约为Cgs的20倍。可以使用MIM电容或MOS电容实现。3.2 仿真验证与性能评估设计完成后必须通过仿真进行严格验证。主要仿真步骤和关注点如下瞬态仿真Tran目的观察电路在时钟控制下的动态工作过程验证各节点电压波形是否符合预期。方法输入一个低频正弦波如1MHz幅值0-3.3V施加时钟如100MHz。观察关键节点Vin M_sw栅极电压Vg_sw M_sw源极电压Vs_sw≈Vin以及Vgs_sw。预期结果在Φ2有效期间Vg_sw应该紧密跟随 Vin 3.3V波形与Vin形状一致只是向上平移了3.3V。Vgs_sw应该是一条平坦的直线值等于3.3V。任何波动或倾斜都说明自举效果不理想。导通电阻扫描仿真目的定量评估开关线性度。方法将栅压自举开关连接成简单的串联通路输入一个直流电压源Vin进行DC扫描从0扫到VDD。在输出端接一个理想电流源如1μA测量开关两端的电压差Vds。导通电阻 Ron Vds / I_d。绘制Ron随Vin变化的曲线。预期结果与对比一个没有自举的普通NMOS开关其Ron曲线会随着Vin升高Vgs减小而急剧上升。而一个设计良好的栅压自举开关其Ron曲线在大部分输入范围内应该是一条平坦的直线仅在接近电源轨的极端位置可能因开关管进入线性区边缘而略有变化。通过对比这两条曲线可以直观看到自举电路带来的线性度提升。频谱分析对于采样系统目的评估开关引入的失真。方法将栅压自举开关置于一个采样保持电路中进行仿真。输入一个纯净的单频正弦波运行瞬态仿真足够长时间然后对输出保持的电压进行FFT分析。预期结果输出频谱中除了输入信号的主频外谐波分量特别是二次和三次谐波应该被抑制得非常低。总谐波失真THD或无杂散动态范围SFDR是关键的指标。一个优秀的自举开关可以将THD改善数十个dB。4. 常见问题、陷阱与调试技巧实录即使原理清晰仿真完美在实际设计和调试中依然会遇到各种问题。下面是我在多次项目中总结的一些“坑”和应对方法。4.1 问题一自举电压不足Vgs在输入信号峰值时下降现象瞬态仿真中当Vin接近最高值时M_sw栅极电压Vg_sw未能达到理想的VinVDD导致Vgs_sw下降Ron增大。根本原因自举电容C_boot不够大这是最常见的原因。电荷被Cgs_sw分享后电压被拉低。充电开关导通电阻过大在充电阶段未能将C_boot完全充电至VDD起始电压就不足。自举开关TG2的传输损耗如果TG2的导通电阻大在自举阶段当需要从Vin节点抽取或注入电流来调整C_boot下极板电位时会产生IR压降导致实际加到C_boot下极板的电压不是完美的Vin。寄生电容连接到M_sw栅极的走线寄生电容、后续缓冲器的输入电容等这些额外的负载电容C_parasitic会与C_boot分压。电压损失 ΔV ≈ (C_load / (C_boot C_load)) * VDD其中C_load Cgs_sw C_parasitic。排查与解决仿真检查充电完成电压在Φ1结束时测量C_boot两端的电压确认是否达到VDD。如果没有增大充电开关尺寸或延长充电时间降低时钟频率。增大C_boot这是最直接的方法但要注意面积和速度代价。可以按比例逐步增大观察Vgs平坦度的改善情况。减小寄生负载检查M_sw栅极的连接尽可能缩短走线。如果栅极需要驱动多个器件考虑插入一个缓冲器但要注意缓冲器本身的输入电容。优化自举开关确保TG2的尺寸足够大在工艺角仿真下也能对全摆幅Vin保持低阻。可以仿真TG2的导通电阻随Vin变化的曲线。4.2 问题二开关切换时的电压毛刺或振荡现象在时钟边沿尤其是Φ1到Φ2的切换时刻M_sw的栅极或源极电压出现尖峰毛刺或衰减振荡。根本原因时钟馈通控制开关尤其是连接敏感节点的开关的栅极时钟跳变通过栅漏/栅源覆盖电容耦合到了信号节点。电荷注入控制开关关断时沟道电荷不均匀地注入到两端。非重叠时间不足充电通路和自举通路存在瞬间的直流通路引起电流冲激。寄生电感与电容形成谐振电路在高速情况下封装或键合线的寄生电感与芯片上的寄生电容可能产生谐振。排查与解决检查并增加非重叠时间首先确保时钟发生器的死区时间足够。可以通过仿真时钟波形测量Φ1下降沿到Φ2上升沿之间的间隔。分析关键开关定位哪个开关的时钟馈通影响最大。通常是与Vin节点或C_boot节点直接相连的开关。可以尝试在该开关的栅极使用缓变的时钟信号但会降低速度或者采用差分结构抵消。后端布局优化对于高频毛刺检查电源/地网络的去耦是否充分。在敏感节点附近增加一些小的去耦电容如MOS电容可以吸收高频噪声。使用仿真工具定位利用SPICE仿真器的波形计算功能可以绘制出通过某个寄生电容的位移电流直观看到耦合能量的大小和时刻。4.3 问题三在不同工艺角、电压、温度PVT下性能波动大现象在TT典型工艺角下性能良好但在FF快快或SS慢慢工艺角或者高温、低电压条件下开关线性度急剧恶化。根本原因电路中的MOS管特性随PVT变化。阈值电压Vth、迁移率μ的变化会影响开关的导通电阻、充电速度等。FF角/高温Vth降低MOS管更易导通充电更快但亚阈值漏电可能增大影响保持阶段。SS角/低温/低电压Vth升高MOS管驱动能力变弱可能导致充电不完全或开关导通不良。排查与解决进行全面的PVT仿真这不仅是规定动作更是必须的。在设计的早期就要跑遍所有关键工艺角TT, FF, SS, FS, SF电压范围如VDD±10%温度范围-40°C到125°C。关注最坏情况充电不足往往发生在SS工艺角、低电压、高温虽然高温下Vth会降低但低电压是主要矛盾的组合下。检查此时C_boot的充电完成电压。设计冗余基于最坏情况仿真结果来调整器件尺寸。例如如果SS角下充电开关驱动不足就适当增大其尺寸。确保在最坏情况下C_boot也能充电到目标电压的95%以上。考虑使用偏置电路对于非常苛刻的应用可以考虑使用一个与PVT无关的恒流源来给C_boot充电但这会增加电路复杂性。4.4 问题四在高速时钟下性能下降现象当时钟频率升高到一定程度后开关线性度变差THD升高。根本原因充电时间不足在充电阶段Φ1给C_boot充电的时间T_charge 时钟周期的一半。频率越高T_charge越短。如果充电电路的时间常数RC太大C_boot就无法在一个相位内充满电。开关动态特性限制控制开关本身的开启/关断需要时间当时钟周期接近这个开关时间时电路无法完全进入稳态。排查与解决计算并仿真充电时间常数充电回路的电阻主要是充电开关的导通电阻R_on_charge时间常数τ R_on_charge * C_boot。通常需要满足 T_charge 5τ 才能充电到99%以上。根据目标时钟频率反推允许的最大τ从而确定R_on_charge和C_boot的上限。优化充电通路使用驱动能力更强的缓冲器来驱动充电开关的栅极减小其开启电阻。或者如果架构允许考虑使用两个交替工作的自举电容一个在充电时另一个在工作但这会加倍面积。权衡C_boot大小高速应用下C_boot不能一味求大。需要在“足够大以保证线性度”和“足够小以保证充放电速度”之间找到最佳折中点。这需要通过扫描C_boot值在目标频率下仿真THD或Ron平坦度来确定。栅压自举电路是模拟电路设计中一个将巧妙构思与严谨工程实践完美结合的典范。它没有高深莫测的数学公式但其性能的优劣直接取决于设计师对器件物理、寄生效应和时序控制的把握。每一次成功的应用都建立在对上述原理的透彻理解和对无数细节的反复推敲之上。希望这份远超“一页”的深度笔记能成为你攻克相关设计难题的一块坚实垫脚石。记住仿真波形上的那条平坦的Vgs曲线就是对你所有努力的最佳回报。