
CMOS传输门作为数字集成电路和模拟开关电路里的基础单元经常被初学者忽略——因为它实在是太“简单”了无非就是一颗NMOS和一颗PMOS并在一起。但真正做过高速信号切换、采样保持电路或者低功耗逻辑设计的人都会对这颗小小的传输门又爱又恨。爱的是它结构简洁、功耗低、速度快恨的是它的导通电阻非线性、电荷注入、时钟馈通每一个问题都足以让输出波形失真到怀疑人生。这篇文章我想从一个实际使用者的角度把这颗传输门从头到尾拆开揉碎讲清楚。不管你是刚接触集成电路设计的在校学生还是在做模拟前端、传感器信号采集、音频切换电路的工程师只要你的系统里需要“用电平来控制信号通断”CMOS传输门就是你绕不开的基础模块。我会从它最底层的半导体物理讲起再到具体参数怎么影响你的信号质量最后结合这些年调试中踩过的坑说说传输门在真实项目里到底怎么用、怎么优化。内容会尽量往深了挖但我会用大家都能听懂的逻辑去讲保证读完你能对传输门的性格摸得一清二楚。1. 核心结构与工作原理1.1 为什么一颗管子不够非要两颗互补并联要理解CMOS传输门得先理解一个最基本的问题单个MOS管能不能当开关用答案是可以但不好用。拿一颗增强型NMOS来说它的漏源之间要导通栅源电压必须超过阈值电压。假设我们在源极接了一个0到3.3V的模拟信号栅极接3.3V控制信号那么当输入信号接近3.3V时栅源电压(V_{GS})就只有接近0V管子会进入截止区信号根本传不过去。这就是单个NMOS管作为开关时的“阈值损失”问题——高电平信号过不去。反过来PMOS管因为电流方向相反、阈值电压为负它擅长传输接近电源电压的高电平信号但对低电平信号又会出现类似的导通困难。如果把一颗NMOS和一颗PMOS并联让它们用互补的时钟信号控制——NMOS的栅极接控制信号(C)PMOS的栅极接(C)的反相信号(\overline{C})——那么在任何输入电压下总有一颗管子处于强导通状态。当输入接近地时NMOS扛大梁当输入接近电源电压时PMOS扛大梁中间的过渡区域两颗管子一起导通共同分担电流。这就是CMOS传输门的基本设计哲学用器件之间的互补性消除单一器件的性能盲区。注意这里的“互补”不仅仅指PMOS和NMOS的导电类型互补更关键的是它们的阈值损失特性互补。NMOS损失高电平PMOS损失低电平合在一起恰好覆盖完整信号摆幅。1.2 传输门的四种工作状态用一个2输入控制信号(C)和(\overline{C})传输门就有清晰的四种工作状态。我把它们整理成一张表这样看着最直观控制信号C控制信号\和平CNMOS状态PMOS状态传输门状态01截止截止关断高阻10导通导通开通传输11截止导通非正常工作态00导通截止非正常工作态前两种是标准工作状态后两种在常规应用中是禁止的。为什么不是电路会烧管子而是因为当(C\overline{C})意味着PMOS和NMOS的栅极控制信号不是互补关系这时候传输门不具备全摆幅传输能力。举个例子如果(C1)、(\overline{C}1)NMOS的栅极是1、PMOS的栅极也是1那么输入短到地时NMOS倒是能通但输入接近VDD时PMOS的(V_{GS}0)它就断了信号高电平被钳位。这不仅会产生静态功耗还会让波形严重畸变。所以从设计角度CMOS传输门对时钟信号有一个硬性要求控制信号必须严格互补而且转换速度要尽量快尽量避免两个管子同时处在半导通的状态。如果控制信号上升沿太缓会有一段相当长的时间里NMOS和PMOS同时处于线性放大区一方面信号路径的阻抗极低导致瞬态电流冲击另一方面也会引入额外的噪声。1.3 导通路径的电流分析再往深一层看看传输门导通时电流是怎么走的。当输入信号(V_{in})处于中间电平时比如0.8V到2.5V之间NMOS和PMOS都在导通状态信号电流会分成两路一路通过NMOS的沟道一路通过PMOS的沟道。两条路径的电流分配比例取决于两者的宽长比(W/L)和当时的工作点。这里有一个很多教材没明说、但工程上极其重要的点传输门的等效导通电阻是两颗管子导通电阻的并联值。既然NMOS和PMOS都在传导电流那么总电阻(R_{on} R_{on,N} \parallel R_{on,P})。如果两颗管子的尺寸设计得当在整个输入电压范围内等效电阻的波动可以控制在比较小的范围内。那么“尺寸设计得当”到底是怎么个得当法我直接给你们结论在同等工艺条件下PMOS的迁移率大约是NMOS的一半到三分之一所以要达到相同的导通能力PMOS的沟道宽度通常是NMOS的2到3倍。如果一个传输门里NMOS取(W/L 2/0.18)那么PMOS就应该取(W/L 4/0.18)到(6/0.18)这样两者在中间电位处的导通能力才匹配。当然这是从导通电阻均匀性角度出发的结论。如果你对传输门的带宽、速度更敏感那就是另一个优化方向——后面我会专门说。2. 信号传输质量的关键参数2.1 导通电阻的非线性问题传输门在实际使用中最令人头疼的就是它的导通电阻(R_{on})随输入电压变化而强烈变化。虽然并联了PMOS和NMOS但(R_{on})并不是一条平坦的直线而是在中间电压区域有一个明显的“峰”。我实测过很多次用0.18µm工艺做的传输门宽长比NMOS取(2/0.18)PMOS取(5/0.18)电源电压1.8V输入从0扫到1.8V时(R_{on})的峰值大约出现在(V_{in} \approx V_{DD}/2)附近峰值电阻可能是两端导通电阻的2到3倍。为什么会这样因为在中间电位时NMOS的栅源电压变小导致驱动能力下降而PMOS的源栅电压也变小同样导致驱动能力下降两颗管子的导通能力在中间区域同时“疲软”并联后的总电阻反而最高。这个非线性在数字电路里无所谓因为数字信号只有高低电平两个状态中间过渡区稍慢一点不影响逻辑判断。但在模拟信号链路中这个问题就严重了。比如你做高精度数据采集传输门前面接的是传感器信号后面接的是ADC输入如果传输门导通电阻随信号幅度变化就会引入谐波失真直接拉低系统的SFDR无杂散动态范围和THD总谐波失真。2.2 不只是电阻还有电容很多新手只盯着(R_{on})忽略了传输门的寄生电容。可实际上在高速信号切换场景里寄生电容往往比导通电阻更容易成为瓶颈。一个传输门至少有三个来源的寄生电容栅极电容(C_{gs})和(C_{gd})、源漏结电容(C_{sb})和(C_{db})、以及金属互连电容。其中栅极电容与管子面积成正比——你为了降低(R_{on})而加大(W)就必然增大栅电容和结电容这是一个绕不开的物理约束。这些寄生电容造成了两个问题。第一个问题是信号路径上的RC延迟传输门的(R_{on})和负载电容、寄生电容构成的RC时间常数会限制信号带宽。第二个问题更阴险——电荷注入Charge Injection。当传输门从导通切换到关断时沟道里储存的电荷和栅极耦合的电荷会有一部分注入到信号路径上形成一个电压毛刺。这个毛刺在采样保持电路里会直接表现为采样电压的误差而且这个误差与信号电平相关理论上可以通过差分结构消除一部分但残余误差依然存在。2.3 时钟馈通效应必须重视与电荷注入密切相关的还有时钟馈通Clock Feedthrough。控制信号通过栅漏寄生电容(C_{gd})耦合到信号路径上会在输出端产生一个与控制信号幅度成比例、与信号电平无关的跳变干扰。在实际测试中我当时用1.8V的时钟信号控制0.18µm工艺的传输门输出端能观察到几十毫伏的时钟馈通尖峰。这个幅度听起来不大但如果你的模拟信号本身就只有几百毫伏的摆幅这个尖峰足以把信号淹没在噪声里。有一个经验公式可以估算时钟馈通的大小[ \Delta V_{out} \approx \frac{C_{gd}}{C_{gd} C_{load}} \times V_{CK} ]其中(V_{CK})是时钟信号的摆幅(C_{load})是输出端的总负载电容。从这个公式能读出两个信息一是输出负载电容越大时钟馈通越小二是栅漏电容越大馈通越大。所以从版图层面减小(C_{gd})或者在输出端加补偿电容都是抑制时钟馈通的有效办法。但加大负载电容又会影响带宽所以实际设计中需要做折中。2.4 亚阈值导通你关不死的通道这个坑是我一个做低功耗设计的同行踩过的。当时他用传输门做电源域隔离想着控制信号拉到0V就能彻底切断模拟前端和数字后级之间的通路。结果待机电流比预期大了几个量级排查了半天才发现是传输门的亚阈值漏电。所谓亚阈值导通就是当(V_{GS})低于阈值电压(V_{TH})时MOS管并没有绝对截止沟道里依然存在一个随(V_{GS})指数级减小的漏电流。在传输门关断状态下NMOS和PMOS各自都存在亚阈值漏电通路而且因为是并联结构两路漏电加起来成为一条不希望的漏电路径。对于低频或者直流信号隔离场景亚阈值导通会让你的“断开”不再彻底对于存储电路来说它直接限制了数据保持时间。解决思路有三个一是加长沟道长度(L)来减小亚阈值摆幅效应二是在传输门旁边串接一个始终截止的高阈值管来阻断漏电路径三是用衬底偏置技术动态提高阈值电压。但对于标准数字工艺里的传输门最简单的办法还是加电源门控在待机时直接断掉核心电源。3. 信号传输优化的工程实践3.1 尺寸设计的第一步不扯虚的直接说尺寸怎么定。传输门的尺寸设计需要从两个方向权衡你要多低的导通电阻以及你能承受多大的寄生电容。先算导通电阻需求。比如你做一个模拟开关要求最大导通电阻不超过50Ω电源电压3.3V输入信号范围0到3.3V。那么你需要保证在整个输入范围内NMOS和PMOS并联后的等效电阻都小于50Ω。初算时可以用这个简化模型[ R_{on,N} \frac{1}{\mu_n C_{ox} (W/L)N (V{GS}-V_{TH})} ]假设电子迁移率(\mu_n)典型值500cm²/V·s栅氧单位电容(C_{ox})在0.18µm工艺下大约是8.6 fF/µm²取(V_{GS})最不利的情况也就是输入电压接近VDD时NMOS的(V_{GS})接近0你会发现这时候NMOS基本帮不上忙只能靠PMOS硬扛。所以最坏情况下的导通电阻主要由PMOS决定。把这个逻辑走一遍你就明白了一个工程规律传输门尺寸设计要以最不利输入电压下的单管导通能力为基准而不是以中间电压下的并联值为基准。很多新手在这里算错结果做出来的传输门在信号两端时电阻超标反射系数变差信号完整性问题就来了。3.2 降低导通电阻变化率的实用技巧如果你对导通电阻的平坦度要求极高除了疯狂加大尺寸之外还有几个更“讲道理”的做法。第一个做法是多段并联加权控制。把传输门拆成若干个不同宽度的子传输门并行排列通过数字控制字决定哪些子门开启。这样可以根据输入信号幅度或者工作状态动态调整总宽度在信号幅度大、需要低电阻时全开在信号幅度小、对RC延迟不敏感时减少并联数量。这种方法在可编程增益放大器和可调带宽滤波器里非常实用。第二个做法是栅压自举。标准传输门的控制信号最高就是电源电压(V_{DD})但是如果你用一个电荷泵把控制信号抬到(2V_{DD})就能显著提高NMOS在大输入信号时的栅源电压进而降低导通电阻。自举电路的代价是额外的控制逻辑和电荷泵面积但在高线性度模拟开关里这是最常见的优化手段之一。我之前做音频切换开关时用过这种方案THD可以从0.01%级别降到0.001%以下效果非常明显。第三个做法是负压控制。对于关断状态的传输门把控制信号取到负电压可以让管子进入更深的截止区大大减小亚阈值漏电。这个方法在电源管理IC里很常见。3.3 电荷注入补偿的两条路线电荷注入在采样保持电路中的影响最为致命。最常见的补偿方法有两种思路一种叫“虚拟开关补偿”另一种叫“差分抵消”。虚拟开关法是在主传输门旁边添加一个悬空的假传输门假门的漏源接在一起它的栅极控制信号与主门时钟反相。当主门关断时假门恰好开启利用假门沟道吸收主门注入的电荷。这个方法在原理上很漂亮但实际效果依赖两管尺寸的精确匹配工艺偏差会导致注入电荷不能完全抵消。我自己的经验是虚拟开关能把电荷注入误差减小到原来的十分之一左右但不可能完全消除而且对时钟沿的匹配要求极高。差分抵消法更简单直接——用全差分信号路径让两个传输门的电荷注入在减法器处相互抵消。第一阶抵消效果很好但二阶非线性失配仍然存在。为了进一步压制失配可以在版图上把差分对的两个传输门做共质心布局确保工艺梯度效应在差分对上保持一致。3.4 版图布局的实战要点版图是整个传输门设计中最容易出问题、也最容易被忽视的环节。我在第一版传输门版图里吃过亏这里把血泪经验直接写出来。第一接触孔要打够。传输门的电流密度取决于源漏区的接触孔数量接触孔打少了电流在接触区就会形成瓶颈等效串联电阻骤然上升。大电流场景下还可能引发局部过热。第二栅极多晶硅必须直通。PMOS和NMOS共用一个栅极控制信号从物理上看就是一条多晶硅走线同时跨过N阱和P阱。这条多晶硅走线的电阻对开关速度有明显影响特别是大尺寸传输门栅极电阻和栅电容组成一个分布RC网络会让管子不同区域的开关时间不一致。比较好的做法是栅极在两端都引出通过金属层把栅极电阻降低几个数量级。第三匹配性设计要做到位。如果你用的是差分结构或者多个并联子门器件方向要一致、周围环境要尽量一致。最好用虚拟器件把边缘的工艺效应吸收掉。共质心布局是必须的不要觉得麻烦而省略。第四衬底和阱的接触要密集。传输门在开关瞬态会抽取或注入衬底电流如果衬底和阱的接触不够密集会引发闩锁效应Latch-up。特别是在大尺寸传输门、高开关频率的场景下衬底电位波动能直接改变MOS管的阈值电压造成信号失真。注意闩锁效应不是传说是真实存在的失效机制。CMOS传输门因为同时包含N阱里的PMOS和P衬底里的NMOS天然构成了PNPN结构。一旦寄生三极管被触发导通轻则功能错乱重则烧毁芯片。所以版图里well contact和substrate contact必须打得密、打得匀。4. 常见问题与排查技巧实录4.1 输出波形中间出现台阶之前调试一个传感器信号切换电路发现传输门输出的正弦波在中间电压位置出现了一个明显的“台阶”波形好像被什么东西“咬”了一口。第一反应是控制信号不干净但用示波器看时钟信号挺正常。后来把问题定位到导通电阻的非线性上——因为信号传输路径上还有一个固定电阻与传输门串联为了做阻抗匹配这样传输门的电阻变化会与固定电阻分压导致增益随输入电压变化。输入信号在中间电平附近时传输门电阻最大分压比例变化最大于是波形出现了畸变。解决方法是把固定电阻改小让传输门的电阻变化在总串联电阻中占比降低同时把传输门尺寸增大到原来的2倍把峰值导通电阻压下来。改完后再测波形平滑了谐波失真下降了将近10dB。这件事让我养成了一个习惯凡是传输门后面接了电阻性负载的电路一定要先画分压曲线看看传输门电阻波动造成的增益误差是否在容忍范围内。4.2 控制信号串扰导致误触发还有一次是在一个多通道数据采集板卡上相邻两个通道的传输门控制信号来自同一个移位寄存器但是PCB走线的时候时钟线和控制信号线并行走了一段。结果当一个通道的传输门切换时大的时钟跳变通过寄生电容耦合到了旁边通道的控制线上导致相邻通道误触发。这个问题的根源有两个层次一是PCB层面的耦合二是芯片内部传输门之间的耦合。PCB层面加宽信号间距、加地屏蔽线可以解决芯片内部则需要保证控制信号的驱动强度够大让耦合过来的干扰不足以超过逻辑阈值。实际修板的时候我先在误触发的控制线上对地加了10pF电容问题立刻消失了。但这不是长久之计因为加大电容会让控制信号边沿变缓反而给下一级传输门带来额外的交错导通时间。最终方案是重新布线把控制信号和时钟信号分开走。4.3 低频信号传不过去的高频陷阱一个非常反直觉的问题传输门做低频信号切换按理说应该毫无压力但实测发现10Hz的正弦波经过传输门后幅度衰减了20%。百思不得其解最后用频谱仪一看发现传输门处于间歇导通状态——控制信号来自一个定时器定时器本身没问题但它的输出驱动能力不够导致传输门栅极电压在高低电平之间缓慢摆动让传输门长时间处于高阻的“半开”状态。这给了所有人一个提醒不要默认逻辑输出可以直接驱动传输门。如果控制信号的源阻抗高、上升沿慢传输门会长时间工作在过渡区等效电阻剧增信号衰减严重。在控制信号与传输门之间加一级缓冲器Buffer几乎是必须的它能把上升沿压到纳秒级让传输门快速进入完全导通状态。这个问题的隐蔽之处在于静态下你用万用表量控制信号电平是正常的动态下用示波器看也能看到波形但不看上升沿细节根本发现不了问题。4.4 高端电路里如何选型这里顺便给做实际工程选型的同行一个参考。如果你不是自己画传输门而是用分立IC那么市面上常见的CMOS模拟开关比如CD4066、DG419、TS5A23157这些内部本质上就是CMOS传输门加上必要的控制逻辑和ESD保护。选型时除了看导通电阻和泄漏电流还必须关注三个指标导通电阻平坦度(R_{on}) Flatness、电荷注入量Charge Injection、以及带宽Bandwidth。很多国产型号标称导通电阻很低但平坦度做得不好用在精密模拟链路里照样翻车。所以我的建议始终是先把系统链路预算算清楚再去看器件手册上的曲线图而不是只看首页那几个醒目的参数。关键参数影响后果排查优先级导通电阻(R_{on})信号衰减、RC延迟高(R_{on})平坦度谐波失真、波形畸变高电荷注入采样误差、直流偏移中时钟馈通输出尖峰、噪声恶化中亚阈值漏电待机功耗、隔离失效中带宽/截止频率高频信号衰减低低频应用4.5 传输门在数字电路里的隐藏角色最后说一个很多教材里不强调、但实际芯片里到处都在用的场景——传输门逻辑。经典的D触发器、锁存器、多路选择器在标准单元库里很多都是用传输门实现的而不是用我们熟悉的与非门、或非门搭出来的。为什么因为传输门逻辑的管子数更少。比如一个用CMOS传输门实现的D锁存器只需要4个管子两个传输门加两个反相器而纯逻辑门实现需要更多的晶体管。在追求面积和功耗的手机SoC、MCU里这种省面积的优势会被放大到极致。理解这一点很关键——你学的传输门不只是独立的模拟开关它在数字世界的底层同样无处不在。而在数字场景下传输门的设计侧重点又不一样这里更重要的是开关速度、时钟到输出的延迟、以及输出驱动的能力而不是模拟场景下看重的线性度和电荷注入。5. 最后再分享一个系统性测试方法调试传输门的时候我建议你们做一个系统性的测试别只看一两个指标就下结论。我自己常用的测试方案是给传输门输入端加一个低频高摆幅的正弦波输出端接高阻抗负载用高精度示波器同时抓输入输出波形然后把两个波形相减放大观察残差。这个“残差观察法”能一次性暴露多个问题波形畸变对应导通电阻非线性问题切换瞬间的毛刺对应电荷注入和时钟馈通问题输出跟随但幅度偏小对应导通电阻过大的问题波形尾部拖尾对应寄生电容过大的问题。如果残差波形是一条平滑的低幅正弦说明传输门工作正常一旦残差里出现台阶、尖峰、非线性畸变就能快速锁定问题的物理根源。根据我个人做过的几个高速数据采集项目传输门的问题几乎都是出在“你以为它很简单”的地方——尺寸取小了、控制信号没加缓冲、版图匹配没做到位、负载电容没算清楚。只要按照前面说的步骤把静态参数算明白、把动态效应想周全、把版图画对称CMOS传输门就是一个极其可靠的单元。但如果哪个环节偷懒了它也会用最隐蔽的方式让你的系统性能悄悄劣化——这大概就是模拟电路的魅力吧。