
1. 从一颗模拟开关芯片的翻车案例说起几年前我帮朋友调试一块便携音频设备的样机现象很诡异信号源输出干净的正弦波经过一颗标称导通电阻只有几欧姆的模拟开关之后示波器上却出现了明显的削顶和偶次谐波失真。换了几批芯片都一样最后把开关拆下来单独测才发现问题出在开关内部——那颗芯片用的就是典型的CMOS传输门结构而它的NMOS和PMOS尺寸配比不合理导致在电源电压中间段导通电阻急剧上升信号摆幅一大就被压缩了。这个案例让我意识到CMOS传输门也叫互补开关虽然原理简单到教科书只用半页纸就讲完了但真正把它用好、设计好需要关注的细节远比想象中多。导通电阻随输入电压变化的非线性、电荷注入导致的采样误差、衬底电位的接法、版图上的阱隔离……每一个点都可能成为产品翻车的根源。这篇内容面向的是正在做模拟开关、采样保持电路、多路复用器、开关电容电路或者单纯想搞清楚传输门到底怎么设计的工程师和学生。我会从器件原理讲到参数计算从电路设计讲到版图注意事项再结合LTspice仿真给出可复现的验证方法最后把常见的坑一个个拆开讲清楚。不管你是刚接触CMOS电路的新手还是已经画过几版流片的老手应该都能从中找到有用的东西。2. 传输门凭什么比单管开关好用2.1 单管开关的致命短板要理解传输门为什么被发明出来得先看单管开关差在哪里。一个单独的NMOS管做开关时栅极接高电平导通源极和漏极之间形成导电沟道。问题在于当输入信号电平升高时栅源电压VGS会减小。具体来说如果栅极接VDD输入信号从0升到VDD那么VGS从VDD逐渐降到0。而NMOS的导通条件是VGS大于阈值电压VTH所以当输入电压超过VDD减去VTH时NMOS就截止了。这意味着一个NMOS开关能正常传输的输入范围只有0到VDD减VTH。假设VDD是3.3VVTH是0.7V那么输入超过2.6V之后开关就逐渐关断了。输出端看到的波形会在高端被削掉一块这就是我在开头案例中遇到的削顶失真的根本原因之一。PMOS的情况刚好反过来。PMOS在栅极接低电平时导通导通条件是VGS的绝对值大于VTH的绝对值。当输入信号接近0V时PMOS的栅源电压不够无法导通。所以PMOS开关能传输的范围大约是从VTH到VDD低端有死区。用生活化的类比来说NMOS像一个只能推不能拉的手PMOS像一个只能拉不能推的手。单管开关就是只用一只手干活总有一半的行程够不着。2.2 互补结构如何实现全摆幅导通传输门的核心思路很直接把NMOS和PMOS并联起来让它们互补工作。NMOS负责传输低段电压PMOS负责传输高段电压两者合起来就能覆盖从0到VDD的整个范围。具体连接方式是NMOS的源极和PMOS的源极相连作为一端NMOS的漏极和PMOS的漏极相连作为另一端NMOS的栅极接控制信号CLKPMOS的栅极接CLK的反相信号。这样当CLK为高时NMOS导通同时CLK反相为低PMOS也导通。两个管子同时导通输入信号无论在高电平还是低电平总有一个管子处于良好的导通状态。这里有一个容易被忽略的细节传输门导通时两个管子的源漏角色是动态变化的。当输入电压较低时NMOS的源极是输入端因为源极定义为电位较低的一端PMOS的源极是输出端。当输入电压较高时情况反过来。这种源漏互换的特性意味着导通电阻的计算不能简单地套用单管公式需要分段分析。2.3 导通电阻的完整推导传输门的总导通电阻是NMOS和PMOS导通电阻的并联值。但关键在于这两个电阻都随输入电压变化而且变化趋势相反。对于NMOS当它导通且工作在深线性区时导通电阻近似为Ron_N 1 / [μn × Cox × (W/L)n × (VGS_N - VTH_N)]其中VGS_N VDD - Vin栅极接VDD源极接输入。所以Ron_N 1 / [μn × Cox × (W/L)n × (VDD - Vin - VTH_N)]对于PMOS栅极接0V源极接输入当输入较高时VGS_P Vin - VDD注意PMOS的VGS是源极减栅极这里源极是输入端。PMOS的导通条件是|VGS_P| |VTH_P|即VDD - Vin |VTH_P|。其导通电阻为Ron_P 1 / [μp × Cox × (W/L)p × (VDD - Vin - |VTH_P|)]总导通电阻Ron_total Ron_N || Ron_P从这个公式可以清楚看到当Vin接近VDD时NMOS的过驱动电压趋近于零Ron_N急剧增大但此时PMOS的过驱动电压最大Ron_P很小并联后总电阻仍然可控。反之当Vin接近0时PMOS的电阻增大但NMOS的电阻很小。这就是互补结构的精妙之处。不过要注意在Vin等于VDD/2附近两个管子的过驱动电压都不算大总导通电阻会出现一个峰值。这个峰值的大小取决于两个管子的尺寸配比。如果尺寸设计不当这个峰值可能比两端高出好几倍直接导致信号在中间电平处产生非线性失真。2.4 尺寸配比的核心原则为了让导通电阻在整个输入范围内尽可能平坦需要合理设计NMOS和PMOS的宽长比。基本原则是让两个管子的导通电阻在中间电平处相等。由于电子迁移率μn大约是空穴迁移率μp的2到3倍在典型工艺下所以PMOS需要更大的宽度来补偿迁移率的劣势。通常取(W/L)p约为(W/L)n的2到3倍具体值取决于工艺参数。一个实用的设计流程是先根据需要的导通电阻目标值和最差情况下的过驱动电压计算出NMOS的最小宽度。然后按照迁移率比值确定PMOS的宽度。最后通过仿真扫描整个输入范围检查导通电阻的平坦度必要时微调尺寸。注意这里说的迁移率比值是粗略估计实际工艺中PMOS和NMOS的迁移率比值会随温度和偏置变化。精确设计必须查工艺库的模型参数不能凭经验拍脑袋。3. 用LTspice把传输门的关键参数跑一遍3.1 搭建测试电路的基本框架LTspice是验证传输门特性的好工具免费且模型库丰富。下面我给出一个可以直接复现的测试方案。首先建立传输门的基本电路。用两个MOS管一个NMOS一个PMOS源漏并联。NMOS的栅极接控制电压VCLKPMOS的栅极接VCLK的反相。反相可以用一个理想反相器或者行为电压源实现。为了测试导通电阻在传输门的一端接一个直流扫描电压源Vin另一端接一个固定的小电阻到地通过测量流过传输门的电流来计算导通电阻。或者更直接的方法在传输门一端接电压源另一端接一个已知的负载电阻RL测量负载上的电压然后计算分压比。我通常用第二种方法因为更接近实际应用场景。具体电路是Vin接传输门输入端传输门输出端接RL到地同时接一个电压探针测量Vout。导通电阻Ron RL × (Vin - Vout) / Vout。3.2 直流扫描看导通电阻曲线设置Vin从0到VDD做直流扫描VDD取3.3V。控制信号VCLK设为3.3V常通状态。运行仿真后用公式计算每个Vin对应的Ron然后画出Ron随Vin变化的曲线。一个设计良好的传输门这条曲线应该相对平坦中间略高但不超过两端的两倍。如果曲线在中间出现明显的尖峰说明尺寸配比有问题需要增大PMOS的宽度或者调整NMOS的宽度。我实测过一组典型数据在0.18微米工艺下NMOS取W/L2μm/0.18μmPMOS取W/L5μm/0.18μmVDD1.8V时导通电阻在两端约为80欧姆中间峰值约为150欧姆。这个平坦度对于大多数信号切换应用是可以接受的。如果要求更高可以把两个管子都加宽但要注意寄生电容会随之增大。3.3 瞬态仿真观察开关速度和电荷注入直流特性只是第一步传输门在动态工作时还有两个关键问题开关速度和电荷注入。开关速度主要受限于栅极电容的充放电和沟道电荷的建立时间。在LTspice中可以给控制信号加一个脉冲源观察输出信号的上升下降时间。传输门的开通时间通常比关断时间略长因为开通时需要建立导电沟道。电荷注入是更隐蔽的问题。当传输门从导通变为关断时沟道中存储的电荷会向源极和漏极两端流出其中一部分会注入到输出端的采样电容上造成电压误差。这个误差在采样保持电路中尤为致命。在LTspice中观察电荷注入的方法是在传输门输出端接一个小电容比如1pF输入端接固定电压然后让控制信号从高变低观察输出电容上的电压变化。理想情况下输出应该保持不变但实际上会看到一个台阶状的跳变这就是电荷注入导致的。减小电荷注入的常用方法有采用互补控制信号让NMOS和PMOS的注入电荷相互抵消、在输出端加虚拟开关管、采用差分结构等。其中互补抵消是最基本的思路但实际效果取决于两个管子注入电荷的匹配程度。3.4 用参数扫描找到最优尺寸LTspice的参数扫描功能可以大大提高设计效率。把NMOS和PMOS的宽度设为变量用.step指令扫描一组值然后观察导通电阻平坦度和开关速度的变化。具体操作是在电路图中把MOS管的W参数写成{WN}和{WP}然后在仿真指令中添加.step param WN list 1u 2u 4u 8u和.step param WP list 2u 4u 8u 16u。运行后会得到一组曲线可以直观地看到不同尺寸组合下的性能差异。我的经验是先固定一个合理的长度通常取工艺最小长度以减小寄生电容然后扫描宽度。导通电阻目标值决定了宽度的下限而电荷注入和速度要求决定了宽度的上限。在这之间找一个平衡点。提示仿真时别忘了设置合理的温度。MOS管的迁移率随温度升高而下降导通电阻会增大。工业级应用通常需要在-40到85摄氏度范围内验证极端情况下甚至要覆盖-55到125摄氏度。4. 版图阶段最容易翻车的几个地方4.1 阱隔离与衬底接法传输门在版图上的第一个大坑是阱的接法。NMOS做在P型衬底或P阱中PMOS做在N阱中。对于NMOS衬底通常接最低电位地这没问题。但PMOS的N阱接哪里需要仔细考虑。如果PMOS的N阱接VDD那么当传输门传输的输入信号高于VDD时比如在电荷泵电路中PMOS的源极与阱之间会形成正向偏置的PN结导致漏电甚至闩锁。这种情况下N阱需要接到一个比最高信号还高的电位上。即使输入信号不超出电源范围N阱接VDD也会带来一个问题当输入信号接近VDD时PMOS的源极和阱之间没有压差这没问题但当输入信号较低时PMOS的源极输入端电位低于阱电位源阱之间的寄生电容会随电压变化影响高频性能。更稳妥的做法是将PMOS的N阱接到一个独立的偏置电位通常取VDD或者更高的电压。在版图上这意味着需要为传输门的PMOS单独做一个阱并且阱的接触孔要足够多确保阱电位均匀。4.2 源漏对称性与寄生电容传输门的源漏是对称的信号可以双向流动。但在版图上如果画得不对称比如一端靠近阱边缘而另一端远离会导致两端的寄生电容不匹配。在采样保持电路中这种不对称会引入固定的失调误差。解决办法是采用中心对称的版图布局。把NMOS和PMOS并排放置源极和漏极交替排列用多个指状结构multi-finger来减小栅极电阻和寄生电容。每个指的宽度不宜过大通常控制在几微米以内否则栅极电阻会增大影响开关速度。另外传输门的输出端通常接采样电容这个节点的寄生电容直接叠加在采样电容上会造成增益误差。在版图上要尽量减小这个节点的面积把传输门和采样电容紧挨着放连线尽量短而宽。4.3 控制信号的走线匹配传输门需要一对互补的控制信号。如果这两个信号的走线长度不一致到达栅极的时间会有差异导致NMOS和PMOS的开关时刻不同步。在高速开关场景下这种不同步会造成瞬间的直通电流或者信号毛刺。版图上要让CLK和CLK反相的走线尽量等长必要时可以走蛇形线来匹配延迟。如果控制信号来自较远的地方还要考虑走线上的RC延迟可能需要加缓冲器来驱动。还有一个细节控制信号的摆幅要足够大确保传输门充分导通和关断。如果控制信号的高电平只有VDD减去一个阈值NMOS可能导通不充分导通电阻会增大。在低压工艺中这个问题尤其突出可能需要用电荷泵产生高于VDD的控制电压。4.4 闩锁效应的预防CMOS工艺中NMOS的源极、P型衬底和PMOS的N阱会形成寄生的NPN和PNP晶体管构成可控硅结构。当有大的电流流过衬底或阱时可能触发闩锁导致芯片失效。传输门虽然电流不大但如果输出端接了大的电容负载开关瞬间的充放电电流可能通过寄生路径注入衬底。预防措施包括在传输门周围加保护环guard ring把NMOS和PMOS分别用P和N保护环包围并接到对应的电源轨在阱和衬底上多打接触孔降低寄生电阻输出端的电容不要太大必要时加限流电阻。5. 那些年我踩过的传输门坑5.1 导通电阻非线性导致的失真回到开头那个音频设备的案例。当时的问题就是传输门的导通电阻在中间电平处出现峰值而音频信号恰好经常在中间电平附近摆动导致信号被非线性压缩产生了偶次谐波失真。排查过程是这样的先用示波器看波形发现削顶然后断开负载用直流扫描测传输门的导通电阻曲线发现中间峰值是两端的3倍多最后查芯片内部电路发现PMOS的宽度只取了NMOS的1.5倍远低于迁移率补偿所需的2到3倍。修复方案很简单把PMOS宽度加大到NMOS的2.5倍。重新流片后导通电阻平坦度改善到中间峰值只有两端的1.3倍失真降到可接受范围。这个坑给我的教训是传输门的尺寸配比不能凭感觉必须根据工艺的迁移率参数精确计算并通过仿真验证。5.2 电荷注入引起的采样误差另一个让我印象深刻的坑是在一个12位SAR ADC的采样保持电路中。采样精度总是差几个LSB而且误差随输入电压变化。排查了很久最后发现是传输门关断时的电荷注入导致的。具体来说传输门关断时NMOS和PMOS的沟道电荷会向两端流出。如果两个管子注入到输出端的电荷不能完全抵消就会在采样电容上留下残余电荷造成电压误差。更麻烦的是这个误差与输入电压有关因为沟道电荷量取决于关断前的VGS。解决办法是采用底极板采样技术让传输门的关断时刻与采样电容的底极板开关配合把电荷注入的影响降到最低。另外在传输门输出端加一个虚拟开关管dummy switch让虚拟管的沟道电荷与主开关的注入电荷相互抵消也能改善精度。5.3 控制信号串扰导致开关误动作还有一个坑发生在多路复用器中。多个传输门共享控制信号当某一路开关动作时控制信号上的毛刺会通过栅极电容耦合到其他路的输出端造成串扰。这个问题在版图上很难完全消除因为控制信号线不可避免地会经过其他传输门的栅极附近。缓解措施包括在控制信号线上加去耦电容、增大控制信号的驱动能力、在传输门输出端加滤波电容、采用差分信号传输等。我最后的解决方案是把控制信号分成多组每组单独驱动减少共享走线的长度。同时在每个传输门的栅极串联一个小电阻抑制高频耦合。这些措施综合起来把串扰降低到了可接受的水平。5.4 温度漂移带来的参数变化最后一个坑是关于温度的。有一次做工业级产品常温下测试一切正常但到了高温85摄氏度时导通电阻增大了近50%导致信号幅度不够。原因是MOS管的迁移率随温度升高而下降导通电阻随之增大。应对方法是设计时留足余量按照最高工作温度下的最差情况来设计尺寸。如果余量不够可以考虑增大控制电压的摆幅或者采用温度补偿电路。在LTspice中可以用.temp指令扫描温度提前发现这个问题。6. 传输门在不同电路中的实战配置6.1 采样保持电路中的传输门设计采样保持电路对传输门的要求最苛刻因为精度直接取决于开关的电荷注入和导通电阻。设计要点包括采用互补传输门结构、尺寸配比精确匹配、版图中心对称、控制信号同步、输出端加虚拟开关。采样阶段传输门导通输入信号通过传输门给采样电容充电。充电时间常数是Ron乘以采样电容必须远小于采样周期。保持阶段传输门关断采样电容上的电压保持不变。关断瞬间的电荷注入是主要误差源需要通过互补抵消和虚拟开关来抑制。6.2 多路复用器中的传输门阵列多路复用器把多个传输门并联通过控制信号选择其中一路导通。关键问题是通道间的隔离度和串扰。未选通的传输门应该完全关断但寄生电容会提供耦合路径。改善隔离度的方法有在未选通的传输门输出端加接地开关、采用T型开关结构串联传输门加并联到地的开关、增大传输门的关断电阻。T型开关的隔离度最好但导通电阻会略大需要权衡。6.3 开关电容电路中的时钟馈通开关电容电路中的传输门由时钟信号控制时钟的跳变会通过栅漏电容耦合到输出端造成时钟馈通。这个问题在滤波器等对精度要求高的电路中尤为明显。减小时钟馈通的方法包括采用互补时钟信号让馈通相互抵消、在输出端加虚拟管、采用底极板采样、减小传输门的栅漏电容通过减小宽度或采用特殊版图。实际设计中通常需要组合使用多种方法。6.4 双向传输与电平转换传输门的双向传输特性使它很适合做电平转换。比如在1.8V和3.3V电路之间传递信号可以用传输门配合适当的控制电压实现。但要注意当信号从低压侧传到高压侧时传输门的控制信号需要足够高确保PMOS充分关断。电平转换应用中传输门的N阱接法需要特别注意。如果高压侧信号可能高于VDDN阱必须接到一个更高的电位否则会漏电。这种情况下通常需要额外的电荷泵或升压电路。7. 仿真与实测的差距在哪里7.1 模型精度的影响LTspice仿真用的MOS模型通常是BSIM系列精度已经相当高但仍有局限。比如模型可能没有准确反映短沟道效应、窄沟道效应、栅极漏电等。在先进工艺节点下这些效应的影响不可忽略。我的经验是仿真结果用来指导设计方向是可靠的但绝对数值不能全信。特别是导通电阻和电荷注入仿真值可能与实测值有20%到30%的偏差。设计时要留足余量流片后必须实测验证。7.2 寄生参数的提取仿真时如果只画原理图不提取版图寄生参数结果会偏乐观。版图上的连线电阻、耦合电容、阱电容都会影响传输门的实际性能。在关键设计中必须做后仿真把版图寄生参数提取出来反标到电路中。后仿真的流程是完成版图后用寄生提取工具生成带寄生参数的网表然后在LTspice或Spectre中重新仿真。对比前仿真和后仿真的结果如果差异大说明版图需要优化。7.3 测试方法的注意事项实测传输门时测试方法本身也会引入误差。比如用示波器探头测量输出时探头的输入电容会与传输门的输出电容分压导致读数偏低。用万用表测导通电阻时测试电流不能太大否则会改变管子的工作点。我通常用高阻抗探头配合低电容负载来测波形用四线法测导通电阻。测试时还要注意屏蔽和接地避免外界干扰。温度控制也很重要测试环境温度要稳定必要时用恒温箱。8. 写在最后的一些个人体会传输门这个电路教科书上可能只占半页纸但真正把它设计好、用好需要关注的细节贯穿了器件物理、电路设计、版图布局、仿真验证、测试调试整个链条。我做了这么多年模拟电路每次觉得自己已经把传输门吃透了下一个项目又会遇到新的问题。如果让我给正在学习或使用传输门的朋友一条建议那就是不要满足于仿真通过一定要流片实测。仿真和实测之间的差距往往就是那些教科书上不会写的坑。另外多看看工艺库的模型参数理解每个参数背后的物理意义比死记公式有用得多。传输门虽然简单但它是很多复杂电路的基础。采样保持、开关电容滤波器、ADC、DAC、多路复用器这些电路里都有传输门的身影。把传输门搞扎实了再去看这些电路会发现很多问题都迎刃而解。