
做硬件三年以上的朋友应该都听过这么一句话“MOS管导通时工作在线性区。”第一次听这话我盯着公式看了半天愣是没想通既然VDS很小沟道明明是从源端一直开到漏端为什么叫“线性区”后来才明白这个线性区对应的就是VDS很小、沟道尚未夹断的那一段工作区域这时候你拿万用表量到的导通电阻就是MOS管规格书里那个R_DS(on)。这篇文章想做的事很简单把MOS管线性区电流公式从头到尾拆开讲清楚它从哪来、怎么用、什么条件下会失效再把PMOS和NMOS在同一个公式下对比一遍。无论你是做电源设计、模拟开关、电平转换电路还是单纯想把NMOS和PMOS的导通条件搞明白这套推导和手算方法都适用。我会把推导过程、实际计算案例、仿真验证方法一起放出来方便你直接对照自己的电路去算。1. 别急着套公式线性区电流到底在哪些电路里“出场”很多人看教材一上来就是一堆希腊字母推导完了还是不知道这东西能用在哪。我先反着讲从实际电路场景切入这样你再回头看公式就能对上号了。1.1 负载开关和电源通路MOS管常态就是线性区你设计一个电池供电产品要在负载和电池之间串一颗MOS管做电源开关或者做输入防反接。正常情况下这颗MOS管完全导通漏源电压VDS只有几十毫伏到几百毫伏而栅源电压VGS远超阈值电压。此时MOS管既不工作在截止区也不工作在饱和区而是稳定工作在“可变电阻区”也就是我们说的线性区。在这个状态下MOS管的等效模型就是一个压控电阻阻值就是R_DS(on)。你关心的是导通损耗I²×R关心的是电流到底有多大而这些都直接由线性区电流公式决定。你要是误用了饱和区电流公式去算结果会差出好几个数量级因为饱和区的公式描述的是放大状态下的电流不是导通状态下的电流。1.2 模拟开关与传输门信号每次都要“穿过”线性区再看模拟开关比如I²C电平转换电路里的MOS管或者双向模拟开关芯片内部的结构。当信号要从一端传到另一端时MOS管必须保证沟道全程开通且漏源电压VDS只有信号电压的摆幅可能是0.3V、0.5V这样的小信号。这同样是在线性区工作。这里的核心指标是导通电阻随输入电压的变化曲线。如果你用的是一颗NMOS做模拟开关当源极电压升高到接近栅极电压时VGS就会变小线性区公式里的过驱动电压V_OV变小R_DS(on)迅速增大信号在上面产生明显压降。要解决这个问题往往需要PMOS和NMOS并联组成传输门由一个负责低位、一个负责高位。这就是为什么你必须同时理解PMOS和NMOS的线性区公式否则设计传输门时根本看不明白R_DS(on)曲线为什么会是那种形状。1.3 电流镜、LDO压差和PWM驱动边界场景最容易用错公式还有一类场景更微妙就是器件处于线性区和饱和区交界处。比如LDO在输入输出电压差很小时调整管会进入Dropout状态。此时VDS接近VOV这时它已经不完全是个线性电阻了但离饱和区也差一口气。你要判断压差到底还能压到多少就要用线性区电流公式去算最小压差或者反过来用饱和区公式估算VDS还能不能稳住。再比如电流镜里的MOS管如果输出端被拉到一个很低电压管子被迫离开饱和区电流镜就失真了。你用公式算一下线性区电流对VDS的敏感度就能理解为什么低压场景下电流镜特别容易出错。我见过不少初学者一旦拿到MOS管数据手册就只盯着VGS(th)看完全不看R_DS(on)和测试条件。其实R_DS(on)这个参数正是线性区电流公式在特定VGS、VDS条件下算出来的结果。规格书的R_DS(on)通常给的是某个固定VGS下的值比如VGS4.5V时的最大导通电阻但你实际电路里VGS可能是3.3V甚至2.5V这时候必须自己用公式重新估算否则导通损耗会比你预想的大得多。2. 从沟道电荷分布出发把线性区电流公式“推”出来公式这个东西死记硬背很容易搞错符号和系数。我建议直接走一遍推导过程每一步都用大白话解释。等你理解了这个过程以后再看到任何形式的线性区公式都能自己化简出来。2.1 沟道电荷沿漏源方向是不均匀的先建立物理图像。考虑一颗NMOS栅极电压VGS大于阈值电压VTH于是在栅极氧化层下方的P型衬底表面形成了反型层也就是N型导电沟道。关键是这个沟道并不是从头到尾电荷密度均匀的。沿着从源到漏的方向沟道电位从0逐渐升高到VDS。沟道某一点的局部电压记为V(x)那么该处的有效栅压是VGS减去V(x)能维持反型层的净电压是VGS - V(x) - VTH也就是局部过驱动电压。反型层的电荷面密度和这个局部过驱动电压成正比Q_n(x) C_ox × [V_GS - V(x) - V_TH]其中C_ox是单位面积栅氧化层电容是介电常数除以氧化层厚度。V(x)越高该点的沟道电荷就越少。所以靠近漏端的沟道电荷比靠近源端的少。2.2 电流恒定电荷密度变化漂移速度也跟着变漏极电流在整个沟道内是连续的不会在某一点突然消失。电流等于单位宽度上的电荷面密度乘以沟道宽度再乘以载流子漂移速度。在低电场近似下漂移速度等于载流子迁移率乘以沟道电场电场就是dV/dx。于是写出沟道内某一点的电流表达式I_D μ_n × C_ox × W × [V_GS - V(x) - V_TH] × (dV/dx)这里W是沟道宽度。把dx乘到左边I_D移到右边然后从源端x0到漏端xL做积分左边是对V(x)从0到VDS积分右边是对x整体积分。整理后得到I_D μ_n × C_ox × (W/L) × [(V_GS - V_TH) × V_DS - V_DS²/2]这就是最经典的MOS管线性区电流平方律公式。有人把μ_n × C_ox合并写成KP那公式就变成I_D KP_n × (W/L) × [(V_GS - V_TH) × V_DS - V_DS²/2]其中的V_DS²/2项反映的就是沟道电荷沿漏源方向逐渐变少导致电流-电压曲线下弯。只要V_DS不为零漏端的电荷就比源端少电流不会随V_DS完全线性增长这是理解“线性区其实是可变电阻区”的关键。2.3 两个重要近似小VDS下的固定电阻以及饱和区交界如果V_DS远小于V_GS - V_TH也就是过驱动电压很大、漏源电压很小那么V_DS²/2这一项可以忽略不计公式简化为I_D ≈ μ_n × C_ox × (W/L) × (V_GS - V_TH) × V_DS这个式子就是纯粹的欧姆定律。由此得到R_DS(on) ≈ 1 / [μ_n × C_ox × (W/L) × (V_GS - V_TH)]注意这里R_DS(on)和V_DS基本无关只由VGS和器件尺寸决定。VGS越高过驱动电压越大导通电阻越小。这就是为什么数据手册里标注R_DS(on)时总要附带一个测试栅压条件。反过来如果V_DS逐渐增大到接近V_GS - V_TH公式括号里的线性项和二次项作用相当电流增长变缓。当V_DS恰好等于V_GS - V_TH时漏端沟道电荷降到零这就是夹断点此时公式变成I_D (1/2) × KP_n × (W/L) × (V_GS - V_TH)²这正好是饱和区电流公式。所以你会看到线性区公式在边界处自然过渡到饱和区公式它们是同一个物理模型在不同VDS条件下的两种表现而不是两个割裂的公式。提示线性区这个叫法容易让人误以为I_D和V_DS始终是直线关系。只有在V_DS远小于V_OV时这条直线关系才近似成立。严格说线性区更准确的叫法是三极管区或可变电阻区因为随着V_DS增大电流增长会明显变缓并不是一条直线。3. PMOS与NMOS的五个关键差异符号、迁移率、体二极管、衬底、电流方向很多人在NMOS的公式里把电压都代对了一转到PMOS符号就开始乱。这不能怪你因为PMOS在教科书和SPICE模型里用的是带符号的电压体系而在实际手算时大家更习惯用绝对值。我两种都讲一遍你选自己顺手的用。3.1 用“绝对值坐标”避免一算PMOS就错先明确增强型PMOS的物理管脚关系源极S接高电位漏极D接低电位栅极G相对源极为负电压才能开启。阈值电压VTH_p在SPICE里是负数比如-0.7V。如果你拿到一个仿真的直流工作点VGS可能是-3.3VVDS可能是-0.1VID为负值。这是SPICE的全局符号约定本身没错但对于大多数硬件工程师来说手算时用带符号的电压反而容易把自己绕晕。我更推荐的做法是把PMOS的所有电压都取绝对值来算。定义V_SG |V_GS|即源极对栅极的电压V_SD |V_DS|即源极对漏极的电压|V_TH_p|即PMOS阈值电压的绝对值这样PMOS的线性区电流公式和NMOS在形式上完全对称I_SD KP_p × (W/L) × [(V_SG - |V_TH_p|) × V_SD - V_SD²/2]导通条件也变成两句话V_SG大于|V_TH_p|且V_SD小于V_SG减|V_TH_p|。电流I_SD从源极流向漏极这个方向就是传统电流方向也就是空穴的运动方向。需要留意的是如果你用SPICE仿真模型内部算出来的ID是负值因为它是把漏极电流方向定义为从漏极流入器件。你用绝对值公式手算出来正值再根据PMOS的电流方向自然能给仿真结果一个不会搞错的解释。3.2 迁移率差异为什么同尺寸PMOS导通电阻大这么多NMOS的载流子是电子PMOS的载流子是空穴。在硅材料中电子迁移率约是空穴迁移率的2到3倍。反映到公式里就是KP_n大约是KP_p的2到3倍。所以在W/L相同、VGS过驱动电压相同的条件下PMOS的导通电流只有NMOS的三分之一到二分之一对应的R_DS(on)就大2到3倍。这个差异在实际电路设计里非常直观。比如你要做一个低边开关NMOS的W/L做到1000就够了同样压降要求换成PMOS做高边开关W/L可能要拉到2500甚至3000才能匹配。芯片版图里PMOS的面积会比NMOS明显大一圈原因就在这。3.3 体二极管和动态源漏互换实际应用中最容易翻车的地方MOS管结构上天然存在一个寄生二极管NMOS从衬底指向源极PMOS从漏极指向源极还是从源极指向漏极取决于具体构造。这个体二极管在MOS管关断时对电路影响很大比如半桥电路里体二极管就是续流路径之一。更隐蔽的是“源漏互换”现象。MOS管在结构上高度对称所谓源极和漏极其实是按照电压关系动态定义的。实际电流方向可能完全反过来这时你电路图里标注的Source和Drain和物理上真正的源漏不一定一致。举例来说一颗NMOS被接在系统地和负载之间做低边开关源极电压为0漏极电压为VDD附近或低于VDD电流从D流向S这符合常规认知。但如果你把它串在一个浮动的信号路径里或者做传输门源极和漏极的电位谁高谁低会随信号变化此时器件内部真正的源漏会在运行中互换。这个现象对理解和应用有两层影响。一是R_DS(on)在源漏互换后依然存在公式依然适用只是你要注意电路图中的“S”和“D”可能不是电压意义上的S和D。二是体二极管的方向会限制电压范围如果体内二极管正向导通那么即使MOS管没有开启电流也会通过二极管流过去。这解释了为什么在双向开关或电平转换电路中必须把NMOS和PMOS组合成传输门结构而不是简单用一颗管子硬扛双向信号。下面这个表把PMOS和NMOS在线性区状态下最容易混淆的几个维度整理到一起对比项NMOS增强型PMOS增强型多数载流子电子空穴迁移率典型值高约2到3倍于PMOS低相同尺寸下R_DS(on)小约为NMOS的2到3倍开启电压极性V_GS V_TH_nV_TH_n为正V_SG |V_TH_p|V_TH_p为负线性区条件0 V_DS V_GS - V_TH_n0 V_SD V_SG - |V_TH_p|电流方向传统电流从D到S从S到D衬底/体通常连接接最低电位或S端接最高电位或S端典型应用低边开关、N沟道负载开关、共源放大器高边开关、PMOS负载开关、上管3.4 还容易搞混的“NMOS高边”和“PMOS低边”问题理解了上面的差异就能回答一个很经典的问题为什么NMOS通常做低边开关PMOS通常做高边开关NMOS做高边有一个麻烦就是源极是负载节点电位不再为0。要让NMOS保持导通VGS必须大于VTH这就要求栅极电压比源极高出一大截一般需要一个自举电容或者专用电荷泵。而PMOS做高边就舒服得多源极固定在VDD只要把栅极往下拉就能导通。反过来PMOS做低边开关也会遇到类似问题因为源极电位浮动栅极驱动需要的电压很难设计。所以业界常规就是“N低P高”不是为了念着顺口而是工艺和驱动电路共同决定的自然结果。不过要提醒一句就算电源系统里NMOS做低边已经约定俗成你在设计时还是要检查体二极管方向。NMOS低边开关的体二极管是从源极指向漏极还是反向取决于电压方向。如果负载电感反向续流体二极管正好承担续流路径这有时候是好事有时候会带来额外功耗你要清楚它在电路里的实际行为。4. 手算实例用一组工艺参数算出R_DS(on)并反向设计W/L公式讲得再漂亮不如动手算一遍。这一节我会带着你从头到尾算两个实例一个是NMOS低边开关一个是PMOS高边开关然后再反推设计尺寸。你以后在设计里需要快速估算时可以直接照这个流程走。4.1 先确定工艺参数以及特别容易出的单位问题要手算首先得有KP值。KP等于μ乘C_ox单位是A/V²工程上常用µA/V²。对于常见工艺节点NMOS的KP_n大约在150到400 µA/V²PMOS的KP_p大约是NMOS的一半到三分之一也就是50到150 µA/V²。我下面取两个比较有代表性的数KP_n200 µA/V²KP_p80 µA/V²。单位问题是这里最大的坑。你翻教材可能看到C_ox用的是F/cm²迁移率用的是cm²/(V·s)沟道宽度W和长度L用的是µm。一旦单位混用算出来的结果差出几个量级都不奇怪。我建议你统一采用电压用VW和L用µmKP用µA/V²电流最终用mA或AW/L本身是无量纲比值这个倒不用担心单位。比如W100µm、L0.18µmW/L就是约555而不是555µm。4.2 算例1NMOS低端开关的导通电流和电阻设定条件KP_n200µA/V²W/L1000V_GS3.3VV_TH_n0.7VV_DS0.1V。先算过驱动电压V_OV V_GS - V_TH 3.3 - 0.7 2.6V。用完整线性区公式I_D 200µA/V² × 1000 × [2.6V × 0.1V - (0.1V)²/2]括号里是2.6×0.1 - 0.005 0.255 V²注意这里单位就是V²。代进去I_D 200µA/V² × 1000 × 0.255V² 51mA导通电阻R_DS(on) V_DS / I_D 0.1V / 51mA ≈ 1.96Ω。用近似公式再验算一遍R_DS(on) ≈ 1 / (KP_n × W/L × V_OV) 1 / (200µA/V² × 1000 × 2.6V) 1.92Ω。和完整公式算出来的1.96Ω只差2%。这说明当V_DS远小于V_OV时忽略二次项是完全合理的。这里V_DS0.1VV_OV2.6V比值不到4%误差自然很小。4.3 算例2PMOS高端开关以及尺寸补偿现在换PMOS做高边开关。设V_SG3.3V|V_TH_p|0.7VV_SD0.1VKP_p80µA/V²W/L暂时也取1000。过驱动电压V_OV还是2.6V。代入I_SD 80µA/V² × 1000 × [2.6 × 0.1 - 0.005] 80µA/V² × 1000 × 0.255 20.4mA导通电阻R_DS(on) 0.1V / 20.4mA ≈ 4.9Ω。同样是1000的W/LPMOS的电阻是NMOS的2.5倍。如果电路要求PMOS低边或高边也达到1.96Ω的导通电阻怎么办直接把W/L按比例放大到2500即可。因为在线性区近似下R_DS(on)反比于W/L。这就是为什么很多封装尺寸大、电流能力高的PMOS管芯面积明显大于同等级的NMOS。4.4 反推W/L给定电流和压降设计MOS尺寸实际工程中经常是反过来用负载电流已知允许的导通压降已知求W/L。假设你要用一个NMOS做低边开关负载电流需要1A允许最大导通压降是0.1V也就是要求R_DS(on)不超过0.1Ω。栅极电压3.3VV_TH0.7VKP_n200µA/V²。直接代入R_DS(on)近似公式0.1 1 / (200µA/V² × (W/L) × 2.6V)把200µA/V²换算成2×10⁻⁴A/V²公式变为0.1 1 / (5.2×10⁻⁴ × (W/L))于是W/L 19230。这个数字听起来很大但在功率MOSFET里很常见。比如L0.35µm时W约6730µm也就6.7mm如果L取1µm则W需要约19mm。实际PDK里会有多指并联结构把这么大宽度拆成几十到上百个栅条就是为了减小栅电阻和版图面积。从这个例子你也看得出MOS管要真正做到很低的导通电阻需要非常大的宽长比这也是为什么功率管芯片面积主要被输出级占据。注意算出来的是“理想有源区电阻”还没包括金属连线电阻、封装引线电阻和接触孔电阻。数据手册里的R_DS(on)通常包含这些寄生。所以实际算系统损耗时建议在理想电阻基础上再加10%到30%的余量保险一些。5. 线性区公式的边界什么时候公式会失效任何一个物理模型都是有适用范围的平方律线性区公式看起来干净但它默认了几个前提沟道电场均匀、载流子迁移率恒定、不存在速度饱和、无串联电阻、无体效应、无亚阈值泄漏等。这些前提在早期长沟道工艺下很成立在先进工艺下则需要小心。5.1 短沟道与速度饱和平方律只剩一半成立当沟道长度缩小到亚微米以下漏源电场变得很强载流子的漂移速度不再随电场线性增长而是趋于饱和速度。这时候漏极电流不再呈现优美的二次曲线线性区的I_D比平方律公式预测的值要更“直”也就是随V_DS增长更均匀。很多工程师在0.18µm或更小节点上做精密模拟开关时发现实际R_DS(on)随V_DS变化很小但用平方律模型估算时总对不上原因就在这里。此时你应该改用BSIM等先进模型做仿真或者直接看代工厂提供的characterization数据。平方律公式作为手算估算依然有意义但别指望它在短沟道下达到高精度。它能帮你判断趋势比如V_GS增加R_DS(on)会减小、W/L加倍电阻减半这些定性规律依然成立。5.2 体偏置效应、源漏串联电阻、温度系数体效应是另一个容易被忽略的因素。当衬底电压V_BS不是0时阈值电压会变化V_TH不再等于零偏置时的值。公式里的V_TH如果用的是常数0.7V实际管子可能已经偏到0.9V甚至1V过驱动电压变小R_DS(on)比预测的大。这在运放输入对和电流镜里特别明显因为那里的共模电压会直接改变V_SB。源漏串联电阻也是低频下看着不起眼、实际很要命的因素。真实MOS管的源区和漏区是有电阻的加上接触孔和金属连线串联在沟道两端。当沟道电阻本来就只有几十毫欧时串联电阻可能占了总电阻的大头。你拿万用表量到的R_DS(on)实际上很大一部分不是沟道本身。这就是数据手册里的R_DS(on)通常比裸管芯理论值高出不少的原因之一。温度系数也要提一下。迁移率随温度升高而下降导致线性区电流变小、R_DS(on)变大。通常硅MOS管的R_DS(on)温度系数为正也就是温度每升高100℃可能变大50%到150%。这带来两个实践结论一是设计热耗散时要留足余量二是把几颗MOS管并联均流时正温度系数其实有助于自动均流因为热的那颗电阻变大、电流自动减小不容易发生热失控。5.3 亚阈值区和米勒平台虽然不在线性区公式内但你必须知道当V_GS小于V_TH时MOS管并非完全关断而是有亚阈值漏电流流动。这个电流是按指数规律变化的和线性区公式里的平方律没关系。你在算低功耗待机系统时亚阈值泄漏才是主角。很多芯片的截止态功耗超标不是线性区导通损耗的问题而是V_GS不够低导致亚阈值漏电太大。米勒平台则出现在开关过程中。PWM驱动的MOS管每个周期都会经历从截止区经过饱和区再到线性区的切换。在开通过程中V_DS从高压降到低导通压降的期间MOS管处于饱和区栅极电压被米勒电容锁定在一段平台上。这段时间里MOS管承受高电压和高电流产生开关损耗。要精确计算这段损耗需要用米勒平台时间和开关波形做能量积分而不是单纯套线性区电流公式。等V_DS降稳定后管子进入线性区再用R_DS(on)算导通损耗。这两个概念经常和线性区电流公式一起出现在面试或技术讨论里但它们分别对应“关断状态的漏电”和“开关瞬态过程”别和导通状态混在一起。你只要记住线性区公式回答的是“全通状态下流过多少电流、等效多大电阻”这一点就够了。6. 仿真扫描与实际测量怎么验证你算对了理论推导归推导最后还得回到仿真和实测来验证。见过太多人公式背得滚瓜烂熟一上示波器就对不上数大多数时候不是公式问题而是条件设置错了。6.1 仿真扫描V_DS从曲线里提取R_DS(on)最直接的办法是用SPICE或LTSpice搭一个简单电路栅极加固定电压漏极加一个可变电压源从0扫到比如0.5V源极接地。然后看I_D随V_DS的变化曲线。你会看到线性区的曲线略微下弯这是V_DS²/2项的作用。曲线在V_DS比较小的时候接近于直线越接近V_OV弯曲越明显。取V_DS0.1V处的斜率就能得到R_DS(on)。如果仿真模型用的BSIM你会看到它和数据手册的一致性比平方律模型好很多。仿真时要注意体极连接。很多初学者画NMOS符号时忘了给B端子接电位默认悬空或者不连接得到的V_TH和实际完全不符。NMOS的B端子必须接衬底电位通常是接地或接源极PMOS的B端子必须接最高电位或接源极否则体效应会把V_TH抬得很高。6.2 实测低电阻两线测量会被导线电阻骗如果你要实际量一颗小封装MOS管的R_DS(on)直接用万用表电阻档去量D-S两端大概率量出来的不是真实沟道电阻而是表笔接触电阻和导线电阻的和。当R_DS(on)只有几十毫欧时表笔接触电阻可能占了三分之一甚至更多。正确做法是用四线开尔文接法也就是在PCB上给D和S各引一根激励线和一根感应线激励线输出固定电流感应线专门测量电压。电流和电压分开就能把接触电阻的影响排除掉。同时用脉冲窄一点的驱动方式避免自热因为持续大电流会让管芯升温R_DS(on)随之漂移你测到的值和常温条件下的规格书就对不上。另外还要确认数据手册里R_DS(on)的测试条件。有的规格书写的是VGS4.5V、I_D20A有的写VGS10V、I_D50A。你按自己的栅极电压去测条件不同结果当然不同。网上经常有人发帖说“测出来比规格书大一倍”一看就是没注意测试条件。6.3 我验证公式时的一点点心得手算、仿真、实测三者对齐我在做实际项目时总结的流程是先用手算公式在当前VGS和VDS下估一个R_DS(on)再用SPICE扫一条曲线看趋势最后上板子用四线法实测。三步数据如果两两对不上我会先查器件封装和PCB走线电阻再检查栅极电压是否被拉低最后考虑是不是温度已经上来了。有一次我做一个LED驱动低边开关手算R_DS(on)约0.5Ω仿真0.55Ω实测却有0.8Ω。排查半天发现栅极驱动电阻太大开关频率又高导致栅极电压在开启瞬间被米勒平台拉低管子没有完全进入线性区。后来把栅极电阻从100Ω降到10Ω实测就回到0.55Ω了。这个案例说明当我们发现导通电阻异常偏大时不要只怪公式更多时候是外围驱动条件没把管子真正“压”到线性区。结尾把公式变成自己的工具刚开始学MOS管时我也喜欢背一堆公式但真正用起来才发现线性区电流公式最值钱的不是那个平方律形式而是它帮你建立了一个坐标系V_DS远小于V_OV时管子是电阻V_DS接近V_OV时管子开始夹断V_DS超过V_OV后管子进入电流源区。有了这个坐标系你看所有电路都会多一层直觉。我再分享一个很实用的习惯在笔记本上把常用器件的KP、V_TH、体效应系数写下来每次做设计前先手算一遍R_DS(on)然后和仿真结论对比。时间长了你对“栅压给多少、电流能过多少、管子要画多大”会形成一种很准的条件反射。这比单纯背一个公式有用得多。希望这篇关于MOS管线性区电流公式和PMOS/NMOS对比的文章能让你在面对具体电路时少走一点弯路。