【工业工艺与设计 电子】MOS 饱和区放大效果+Hybrid-π 模型+沟道长度调制效应+体效应+ 分析示例
MOS的三个工作区&饱和区放大效果
- MOS管严格来说有四个端: G:Gate(栅极),D:Drain(漏极),S:Source(源极),B:Body(衬底)。通常衬底和源极短接。

-
截止区: V G S < V T H V_{GS}<V_{TH} VGS<VTH,此时 I D = 0 I_D=0 ID=0相当于开关断开。
-
线性区(Triode): V G S > V T H V_{GS}>V_{TH} VGS>VTH 且 V D S < V G S − V T H V_{DS}<V_{GS}-V_{TH} VDS<VGS−VTH,电流: I D = k [ ( V G S − V T H ) V D S − 1 2 V D S 2 ] I_D=k \left[ (V_{GS}-V_{TH})V_{DS} -\frac12V_{DS}^2\right] ID=k[(VGS−VTH)VDS−21VDS2],此时MOS更像一个电阻。
-
饱和区: V G S > V T H V_{GS}>V_{TH} VGS>VTH 且 V D S ≥ V G S − V T H V_{DS}\ge V_{GS}-V_{TH} VDS≥VGS−VTH, I D = 1 2 k ( V G S − V T H ) 2 I_D=\frac12k(V_{GS}-V_{TH})^2 ID=21k(VGS−VTH)2,理想情况下 I D I_D ID与 V D S V_{DS} VDS无关。
-
常见的MOSFET模拟放大器要求工作在饱和区所以建立的小信号模型也是针对饱和区。
-
注:对于BJT构成的放大器,其对应的放大工作区是放大区(Active Region / 线性区),而不是饱和区(饱和区在BJT中通常代表开关导通的截止状态)。
小信号模型
- 饱和区电流:
I D = 1 2 k ( V G S − V T H ) 2 I_D =\frac12k(V_{GS}-V_{TH})^2 ID=21k(VGS−VTH)2
- 在静态工作点Q附近:
V G S = V G S Q + v g s V_{GS} =V_{GSQ}+v_{gs} VGS=VGSQ+vgs
I D = I D Q + i d I_D= I_{DQ}+i_d ID=IDQ+id
- 做泰勒展开:
i d = ∂ I D ∂ V G S v g s i_d =\frac{\partial I_D} {\partial V_{GS}} v_{gs} id=∂VGS∂IDvgs
- 定义:
g m = ∂ I D ∂ V G S g_m =\frac{\partial I_D} {\partial V_{GS}} gm=∂VGS∂ID
- 于是:
i d = g m v g s i_d =g_mv_{gs} id=gmvgs
- i d i_d id输出的电流大小不是固定的,而是由别的电压决定: 电压控制电流源(VCCS,Voltage Controlled Current Source)。漏源之间有一个电流源,其电流大小由 (v_{gs}) 决定,它就是 MOS 放大作用的来源。
g m v g s 控制的电流源 = MOS管“栅压控制漏电流”特性的线性化表示 \boxed{g_m v_{gs}\text{ 控制的电流源 }=\text{ MOS管“栅压控制漏电流”特性的线性化表示}} gmvgs 控制的电流源 = MOS管“栅压控制漏电流”特性的线性化表示
-
这就是小信号模型中的受控电流源,一般用菱形绘制。圆圈表示独立源。
-
g m = ∂ I D ∂ V G S g_m=\frac{\partial I_D}{\partial V_{GS}} gm=∂VGS∂ID。对于长沟道MOS: g m = k ( V G S − V T H ) g_m = k(V_{GS}-V_{TH}) gm=k(VGS−VTH),也常写为: g m = 2 I D V O V g_m=\frac{2I_D}{V_{OV}} gm=VOV2ID,其中 V O V = V G S − V T H V_{OV}=V_{GS}-V_{TH} VOV=VGS−VTH称过驱动电压。
沟道长度调制效应(二阶效应)
-
理想情况下 I D I_D ID不随 V D S V_{DS} VDS变化。但实际上 I D = 1 2 k ( V O V ) 2 ( 1 + λ V D S ) I_D=\frac12k(V_{OV})^2(1+\lambda V_{DS}) ID=21k(VOV)2(1+λVDS) 这里 λ \lambda λ就是沟道长度调制系数。
-
因此 I D I_D ID会随着 V D S V_{DS} VDS略微增加。于是定义 r o = ( ∂ I D ∂ V D S ) − 1 r_o=\left(\frac{\partial I_D} {\partial V_{DS}} \right)^{-1} ro=(∂VDS∂ID)−1
-
近似: r o ≈ 1 λ I D r_o\approx\frac{1}{\lambda I_D} ro≈λID1 因此MOS不再是理想电流源。

体效应(Body Effect)(二阶效应)
-
考虑电流受 V S B V_{SB} VSB(或) V B S V_{BS} VBS控制。如果 V S B ≠ 0 V_{SB}\neq0 VSB=0阈值电压增加 V T ↑ V_T ↑ VT↑,导致: I D ↓ I_D ↓ ID↓,小信号模型增加一个受控源 g m b v b s g_{mb}v_{bs} gmbvbs
-
i d = g m v g s + g m b v b s + v d s r o i_d=g_mv_{gs}+g_{mb}v_{bs}+\frac{v_{ds}}{r_o} id=gmvgs+gmbvbs+rovds
-
体跨导定义为 g m b = ∂ I D ∂ V B S g_{mb} = \frac{\partial I_D}{\partial V_{BS}} gmb=∂VBS∂ID

最终MOS完整小信号模型
-
最常用的三个参数:
- g m g_m gm
- r o r_o ro沟道长度调制效应
- g m b g_{mb} gmb体效应
-
对应:

- “体二极管”:在绝大多数三引脚的离散 MOSFET(如我们在 Falstad 中常用的管子)中,源极(Source)和衬底(Body)在内部是被导线直接短路连在一起的。这就导致:源极与衬底同电位。漏极(N型)与衬底(P型,已被连到源极)之间,依然存在一个暴露的 PN 结。这个 PN 结的阳极(P)连着源极,阴极(N)连着漏极。这就构成了所谓的 “体二极管”(或寄生二极管)。体二极管和体效应不会同时出现。

-
“体效应”是分立元件和集成电路(IC)设计之间最经典的差异之一。在集成电路(IC)设计中,成千上万个 MOSFET 往往共享同一个大衬底(通常统一接地或接最高电源)。此时,某些晶体管的源极电位就不一定等于衬底电位了(即 V s b ≠ 0 V_{sb} \neq 0 Vsb=0)。当源极与衬底之间存在反向偏置电压(例如 NMOS 的源极电压高于衬底电压, V s b > 0 V_{sb} > 0 Vsb>0)时:
- 衬底中的多子(空穴)会被反向电压吸引得更深,导致沟道下方的耗尽层变宽。
- 耗尽层变宽意味着里面的负离子增多,它们会排斥栅极下方的电子。
- 结果:栅极需要施加更高的电压才能吸引足够的电子来形成反向沟道。
-
体效应(Body Effect)在源极电压不再固定,而是随信号变化,同时衬底电压保持不变时必须考虑。此时源极与衬底之间会产生变化的电压 ( V S B V_{SB} VSB),导致 MOS 管的阈值电压 ( V T H V_{TH} VTH) 发生变化,从而影响漏极电流和电路增益。典型场景包括源极跟随器(Source Follower)、差分对、带源极退化电阻的共源级、多级放大器中的级联节点以及集成电路中的 Cascode 结构等,因为这些电路的源极都不是交流地。相反,对于最基础的共源放大器,如果源极和衬底都直接接地(NMOS)或都接 ( V D D V_{DD} VDD)(PMOS),则 ( V S B = 0 V_{SB}=0 VSB=0),体效应不会产生,可以忽略。因此,一个简单的判断原则是:只要小信号分析时源极在动而衬底不动,就应考虑体效应;源极与衬底始终等电位时,则可忽略体效应。
-
分立元件情况都可忽略体效应:

分析示例:共源放大器增益

-
计算栅源电压 V G S = V G − 0 V_{GS}=V_G-0 VGS=VG−0:根据分压,栅极电压: V G = 10 V × 200 k 800 k + 200 k = 2 V V_G = 10\text{V} \times \frac{200\text{k}}{800\text{k} + 200\text{k}} = 2\text{V} VG=10V×800k+200k200k=2V
-
仿真示例中 I d ∼ 2.5 m A I_d\sim 2.5mA Id∼2.5mA, I D = k 2 ( V G S − V T ) 2 = k 2 ( 2 − 1.5 ) 2 I_D = \frac{k}{2} (V_{GS} - V_T)^2= \frac{k}{2} (2 - 1.5)^2 ID=2k(VGS−VT)2=2k(2−1.5)2, k 2 ∗ 0.25 = 2.5 ∗ 1 1000 \frac{k}{2} *0.25=2.5*\frac{1}{1000} 2k∗0.25=2.5∗10001, k ∼ 200 k\sim 200 k∼200
-
计算输出中间电平 V D V_D VD:漏极静态电压(输出中点)由电源电压减去电阻 R D R_D RD 的压降决定: V D = V D D − I D × R D V_D = V_{DD} - I_D \times R_D VD=VDD−ID×RD, V D = 10 V − 2.5 mA × 2 k Ω V_D = 10\text{V} - 2.5\text{mA} \times 2\text{k}\Omega VD=10V−2.5mA×2kΩ, V D = 10 V − 5 V = 5 V V_D = 10\text{V} - 5\text{V} = 5\text{V} \quad VD=10V−5V=5V
-
先画交流通路(AC Path):
- ① 耦合电容、旁路电容视为短路(中频增益分析,排除低频电容的影响)
- ② 直流电源视为交流地
- ③ 只保留交流信号路径
- 把三极管换成小信号模型,忽略沟道长度调制效应:
-
列方程求增益,输出节点 v o v_o vo,“离开节点”为正,列KCL:
v o R D + g m v g s = 0 \frac{v_o}{R_D}+g_mv_{gs}=0 RDvo+gmvgs=0
v o = − g m R D v g s v_o=-g_mR_Dv_{gs} vo=−gmRDvgs
A v = v o v i n = − g m R D \color{red}A_v=\frac{v_o}{v_{in}}=-g_mR_D Av=vinvo=−gmRD
CG
- 电子技术基础 习题讲义http://home.ustc.edu.cn/~pishooter/TA_Work/Analog%20Circuits%20Tutorial.pdf
- MOSFET小信号输出电阻详解
- https://rfic.eecs.berkeley.edu/courses/ee240sp06/pdf/lect3.pdf
- https://rfic.eecs.berkeley.edu/courses/ee105/pdf/module3-2_MOSFET.pdf
- https://ocw.mit.edu/courses/6-012-microelectronic-devices-and-circuits-spring-2009/16357c9888d3c06699dd573b0f5a8869_MIT6_012S09_rec11.pdf
- 体二极管:https://electronics.stackexchange.com/questions/389406/how-should-i-understand-the-intrinsic-body-diode-inside-a-mosfet
- (模拟电子)交流小信号等效电路简析
- 沟道长度调制效应:MOSFET- Channel Length Modulation Explained
- 体效应: https://www.scribd.com/document/372019026/Lecture13-Small-Signal-Model-MOSFET
- 示例地址
- https://www.analog.com/cn/resources/analog-dialogue/studentzone/studentzone-may-2020.html
- MOSFET作为有源器件用于放大电路,为什么要处于饱和区才有放大效果?
<mxfile host="65bd71144e">
<diagram id="W9irxNJBeYfh5iWaxH5I" name="Page-1">
<mxGraphModel dx="455" dy="560" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="" style="pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;shape=mxgraph.electrical.resistors.resistor_2;rotation=90;" vertex="1" parent="1">
<mxGeometry x="310" y="400" width="100" height="20" as="geometry"/>
</mxCell>
<mxCell id="3" value="" style="pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;shape=mxgraph.electrical.signal_sources.source;aspect=fixed;points=[[0.5,0,0],[1,0.5,0],[0.5,1,0],[0,0.5,0]];elSignalType=dc2;elSourceType=dependent;" vertex="1" parent="1">
<mxGeometry x="260" y="390" width="50" height="50" as="geometry"/>
</mxCell>
<mxCell id="5" value="" style="endArrow=none;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="260" y="310" as="sourcePoint"/>
<mxPoint x="285" y="360" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="6" value="" style="endArrow=none;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="285" y="480" as="sourcePoint"/>
<mxPoint x="275.00000000000006" y="440.0000000000001" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="7" value="" style="endArrow=none;html=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="58" y="360" as="sourcePoint"/>
<mxPoint x="128" y="360" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="8" value="" style="endArrow=none;html=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="120" y="480" as="sourcePoint"/>
<mxPoint x="360" y="480" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" value="" style="endArrow=none;html=1;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" target="26">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="203" y="360" as="sourcePoint"/>
<mxPoint x="443" y="360" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="10" value="" style="pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;shape=mxgraph.electrical.signal_sources.source;aspect=fixed;points=[[0.5,0,0],[1,0.5,0],[0.5,1,0],[0,0.5,0]];elSignalType=dc2;elSourceType=dependent;" vertex="1" parent="1">
<mxGeometry x="178" y="390" width="50" height="50" as="geometry"/>
</mxCell>
<mxCell id="11" value="" style="endArrow=none;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="178" y="310" as="sourcePoint"/>
<mxPoint x="203" y="360" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="12" value="" style="endArrow=none;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="203" y="480" as="sourcePoint"/>
<mxPoint x="193.00000000000006" y="440.0000000000001" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="13" value="<font style="font-size: 16px;" face="Times New Roman">g<sub>m</sub></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="210" y="430" width="20" height="30" as="geometry"/>
</mxCell>
<mxCell id="14" value="<font style="" face="Times New Roman"><span style="font-size: 16px;">v<sub>gs</sub></span></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="234" y="429" width="12" height="30" as="geometry"/>
</mxCell>
<mxCell id="16" value="<font style="" face="Times New Roman"><span style="font-size: 16px;">v<sub>bs</sub></span></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="320" y="429" width="12" height="30" as="geometry"/>
</mxCell>
<mxCell id="17" value="<font style="font-size: 16px;" face="Times New Roman">g<sub>mb</sub></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="295" y="431" width="20" height="30" as="geometry"/>
</mxCell>
<mxCell id="18" value="<font style="" face="Times New Roman"><span style="font-size: 16px;">v<sub>gs</sub></span></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="115" y="401" width="12" height="30" as="geometry"/>
</mxCell>
<mxCell id="19" value="<font style="font-size: 16px;" face="Times New Roman">r<sub>o</sub></font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="380" y="405" width="20" height="30" as="geometry"/>
</mxCell>
<mxCell id="20" value="<font style="font-size: 15px;">+</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="91" y="360" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="21" value="<font style="font-size: 18px;">-</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="91" y="450" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="23" value="" style="endArrow=none;html=1;entryX=0.93;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" target="2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="360" y="480" as="sourcePoint"/>
<mxPoint x="290" y="270" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="24" value="<font face="Times New Roman" style="font-size: 15px;">G</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="23" y="329" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="25" value="<font face="Times New Roman" style="font-size: 15px;">S</font>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="200" y="525" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="26" value="<span style="font-size: 15px;"><font face="Times New Roman">D</font></span>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="397" y="331" width="60" height="30" as="geometry"/>
</mxCell>
<mxCell id="27" value="" style="endArrow=none;html=1;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="230" y="520" as="sourcePoint"/>
<mxPoint x="230" y="480" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="28" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="421" y="356" width="10" height="10" as="geometry"/>
</mxCell>
<mxCell id="29" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="47" y="355" width="10" height="10" as="geometry"/>
</mxCell>
<mxCell id="30" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="225" y="521" width="10" height="10" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)