模拟CMOS平方律曲线全链路:Cox、工作区、gm与ro

发布时间:2026/11/6 2:53:09
模拟CMOS平方律曲线全链路:Cox、工作区、gm与ro

简介:这份PDF面向正在学习模拟CMOS集成电路设计、使用拉扎维教材的本科生与初级工程师,聚焦课后习题的详细解答,可用于课程复习、作业核对与考前查漏补缺。内容围绕NFET与PFET展开,包含器件原理图、漏电流表达式推导、栅源电压变化时的漏电流曲线绘制,以及跨导、输出阻抗和本征增益gmro的计算过程;解答按步骤推进,并配合表格与图示说明工作区判断、参数代入和曲线趋势,便于读者对照教材厘清手算思路。压缩包共1个PDF文件,大小约68.09MB,单文件承载完整答案集,可按章节和题号查阅。该资料已有3460人学习,适合希望从习题层面夯实模拟IC基础、梳理器件分析与计算流程的读者使用。

1. 被跳过的代入步骤:模拟CMOS集成电路设计里最值钱的东西藏在哪

做模拟CMOS集成电路设计的课后题,最常见的姿势是把公式抄下来、把数代进去、对着答案核一遍,错了就重算一遍。可第 2 章那几道画曲线的题,答案里真正有价值的部分压根不是最后那条 ID-VGS 曲线,而是被“Step 1 of 9”这类分步标题悄悄跳过的三个动作:先算单位面积栅氧电容、再判器件落在哪个区、最后才决定 λ 挂不挂上去。这三步的顺序一旦颠倒,算出来的数看着对、量纲对、趋势也对,换个工艺参数照样翻车。下面就把一条曲线从工艺常数一路拆到小信号参数,看看每一环在替谁背锅。

2. 平方律的适用边界:W/L = 50/0.5 那条曲线为什么会拐两次

第 2 章第一道题给的几何是 W/L = 50/0.5,单位通常是微米,比值 100 本身无量纲。固定 |VDS| = 3 V,把 |VGS| 从 0 扫到 3 V,画 NFET 和 PFET 的漏电流。看起来只是一条从零开始、平方上升的线,但它包含两次“性质切换”:一次在 VGS 跨过阈值时,器件从关断进入导通;另一次在线性区与饱和区的分界处,电流对 VDS 的依赖从线性变成几乎无关。这两次切换的判据不同,一个是电压比较,一个是电压差比较,混起来就是后面所有错误的源头。

2.1 Cox = εox/tox:为什么第一步永远先算这个常数

详细版答案的第 3 步往往单独列出栅氧电容的计算,很多人觉得这是凑步骤。实际上 Cox 是整条因果链的起点,它量化的是“栅极电压对沟道电荷的控制强度”:单位面积的氧化层像一个平行板电容,极板间距就是氧化层厚度 tox,介质是二氧化硅,相对介电常数约 3.9。写成式子就是 εox = 3.9 × ε0,ε0 ≈ 8.854 × 10⁻¹² F/m,再除以 tox 得到 F/m²。

先把它算出来的好处是把三个维度拆干净:μCox 是工艺给的,W/L 是版图画出来的,VGS − VTH 是偏置决定的。后面的每一个公式里 Cox 只出现一次,钉死它,剩下的就是纯乘法。我一般会把它写在纸的角落,和 VTH、λ 并列,因为这三者一旦混淆,整页推导都白写。

提示:εox 用 F/m、tox 用 nm 时,先统一到米再除,否则 Cox 会相差 10⁹ 量级,这种错误在最后一步才暴露,很难回溯。

2.2 两次断点:VGS = VTH 与 VDS = VGS − VTH 把平面切成三块

平方律把整个工作区切成三块。第一块是截止区,VGS < VTH,沟道没有形成,电流在平方律模型里直接记 0。第二块是线性区(也叫三极管区),条件是 VDS < VGS − VTH,沟道从源到漏连续存在,漏端电压会把沟道电位抬高,削弱局部栅压,所以电流表达式中出现 VDS 的一次项和二次项:

ID = μCox (W/L) [ (VGS − VTH)·VDS − ½·VDS² ] (线性区)

第三块是饱和区,VDS ≥ VGS − VTH,漏端附近沟道被“夹断”,再增大 VDS 只改变夹断点的位置,不显著改变电流,于是式子简化成只与过驱动电压有关:

ID = ½ μCox (W/L) (VGS − VTH)² (1 + λ·VDS) (饱和区)

第一道题里 |VDS| 固定在 3 V,VGS 从 0 升到 3 V,VGS − VTH 最多也就 3 − 0.7 = 2.3 V,始终小于 3 V,所以整个扫描过程只跨过第一个断点,曲线形状就是“一段零 + 一段平方”。答案里画出来的那条线之所以看起来很朴素,正是因为第二个断点被固定偏置“藏”起来了;等到第 4 题让 VDS 当参数,第二个断点才会在图上显形。

2.3 λ 挂在哪里:1 + λVDS 是泰勒展开的第一项,不是经验修正

教材里 λ 常被当成“沟道长度调制系数”一笔带过,但它出现的位置有明确的几何来源。VDS 增大时,夹断点向源端移动一段 ΔL,有效沟道长度从 L 变成 L − ΔL。电流与有效长度成反比,于是

ID ∝ 1/(L − ΔL) = (1/L) · 1/(1 − ΔL/L) ≈ (1/L)(1 + ΔL/L)

在夹断区,ΔL 对 VDS 近似线性,把比例系数记作 dΔL/dVDS,就能定义 λ = (1/L)·(dΔL/dVDS)。这就是为什么 λ 的量纲是 1/V,物理含义是“每伏漏源电压把有效沟道缩短多少比例”。也直接解释了 λ ∝ 1/L 这个关系:同样的 ΔL,L 越短,占的比例越大,调制效应越强。

注意:λ ∝ 1/L 的前提是 ΔL 本身与 L 关系不大。沟道短到一定程度后 ΔL 也会随 L 变化,比例常数开始漂移,这个式子只能当趋势看。

2.4 PFET 的第二条曲线:0.8 V 阈值与更低的空穴迁移率

同一道题的后半段把器件换成 PFET,横轴改成 |VGS|,阈值换成 0.8 V(比 NFET 的 0.7 V 高 0.1 V)。两条曲线摆在一起看,PFET 的曲线整体右移一点,峰值电流低一截。右移是阈值差,低一截是迁移率差:空穴迁移率通常只有电子的三分之一到二分之一,同样的 W/L、同样的过驱动电压,|ID| 只有 NMOS 的几分之一。

这个差异在版图上的直接后果是 PMOS 常常做成 NMOS 的两到三倍宽。这属于匹配与增益预算的硬约束,并非审美问题:不把 W 加上去,PMOS 的 gm 怎么都追不上 NMOS,全 PMOS 结构的电流镜和输入对会在增益上先天吃亏。

3. 跨导与输出阻抗:gm 的三种等价写法从哪里来、什么时候会骗你

第 2 题给定 W/L = 50/0.5、|ID| = 0.5 mA,要求算 gm、ro 和本征增益 gm·ro。题目里没给 VGS,这个“没给”本身就是提示:只能用不依赖 VGS 的那条路。理解 gm 的关键是把它当成工作点处的导数,而不是三个需要背下来的公式。

3.1 gm 是工作点的导数,不是一个需要背的公式

饱和区对 VGS 求导,得到 gm = μCox(W/L)(VGS − VTH),这是斜率形式;把平方律里的 (VGS − VTH) 用 2ID/gm 替换掉,得到 gm = 2ID/(VGS − VTH),这是“电流除以过驱动电压”形式;再把过驱动电压消掉,得到 gm = √(2μCox(W/L)ID),这是只依赖电流和几何的形式。三者是同一个量在不同已知条件下的变形:

写法需要的已知量适用场合
μCox(W/L)Vov过驱动电压手算偏置点、看斜率
2ID/Vov电流与过驱动电压从功耗反推 gm
√(2μCox(W/L)ID)电流与几何电流源负载、题目只给 ID 时

第 2 题只能用第三行。这也是习题在偷偷教的方法论:拿到题先看给了什么,再挑写法,而不是抓一个公式就代。

值得多说一句,gm/ID 这个比值才是工艺无关的设计货币。gm/ID = 2/Vov,在强反型区上限是 2/Vov,往亚阈值方向走可以超过 20 1/V。手算时把 gm/ID 记成“每毫安电流能买到多少毫西门子跨导”,比记三个公式有用得多。

3.2 ro = 1/(λID):小信号电阻是直流工作点的函数

输出电阻的定义是 ∂VDS/∂ID,对饱和区表达式求导,忽略分母里的 (1 + λVDS) 高阶项,得到 ro = 1/(λID)。习惯上定义 Early 电压 VA = 1/λ,于是 ro = VA/ID。这个式子传达的信息很直接:器件在小信号意义上等效成一个电流源并联一个电阻,而这个电阻的阻值由直流电流决定,电流越大电阻越小。

把 λ ∝ 1/L 代进去,ro ∝ L/ID。想提高输出电阻有两条路:加大长度,或者减小电流。前者几乎不花代价(除了面积和寄生电容),后者要拿摆幅换。这就是“增益靠长度”这句老话的来历,并不是玄学。

3.3 gm·ro = 2/(λVov):一个把 ID 消掉的量

第 3 题要求把 gm·ro 表示成 ID 和 W/L 的函数,并画成以 L 为参数的曲线。推导只有两行:

gm·ro = √(2μCox(W/L)ID) / (λ·ID) = √(2μCox(W/L)/ID) / λ

再代入 λ = k/L(k 是比例常数,量纲为长度/伏):

gm·ro = (1/k) · √(2μCox·W·L/ID)

结果里 ID 的指数是 −1/2,L 的指数是 +1/2。也就是说固定几何、固定电流时,本征增益与 √L 成正比;固定几何和长度、扫电流时,曲线在双对数坐标下是一条斜率 −1/2 的直线。这正好对应答案里那张图:L 取三个不同值时得到三族曲线,彼此平行,只有截距不同,斜率完全一样。

换一个视角看同一个结论。gm = 2ID/Vov,ro = 1/(λID),相乘时 ID 直接消掉,得到 gm·ro = 2/(λVov) = 2VA/Vov。本征增益与电流无关,只与 Early 电压和过驱动电压有关。这是模拟设计里最有用的一条直觉:想要高增益,要么加长沟道抬高 VA,要么压低过驱动电压——而后者的代价是速度、摆幅和匹配精度。所有增益分配上的拉扯,本质都是在这两个旋钮之间调。

import math # 工艺侧常数只用来演示趋势,真实取值必须查自己工艺的参数表 MU_N_COX = 200e-6 # 电子:mu_n * Cox,单位 A/V^2 MU_P_COX = 60e-6 # 空穴:迁移率天生低一截,同几何下 gm 更小 LAMBDA_N = 0.1 # 单位 1/V,与 1/L 成正比 LAMBDA_P = 0.1 W_OVER_L = 50 / 0.5 # 题目给定几何,无量纲 def intrinsic_gain(mu_cox, lam, id_amp): """gm*ro:gm 用 sqrt(2*mu*Cox*(W/L)*ID),ro 用 1/(lambda*ID)""" gm = math.sqrt(2 * mu_cox * W_OVER_L * id_amp) # 单位 A/V ro = 1 / (lam * id_amp) # 单位 Ω return gm * ro # 无量纲 for id_ma in (0.1, 0.5, 1.0): id_amp = id_ma * 1e-3 nmos = intrinsic_gain(MU_N_COX, LAMBDA_N, id_amp) pmos = intrinsic_gain(MU_P_COX, LAMBDA_P, id_amp) print(f"ID={id_ma:>4} mA NMOS gm*ro={nmos:6.1f} PMOS gm*ro={pmos:6.1f}")

这段代码只做一件事:把 3.3 节的推导数值化,验证“电流翻十倍、本征增益按 √10 下降”这个趋势。参数说明集中在三行常量上——μCox 决定跨导的量级,λ 决定输出电阻的量级,W/L 决定几何缩放。改 μCox 只改变两条曲线的整体高度,不改变斜率;改 λ 同时改变高度和 NMOS/PMOS 的相对位置。跑一遍输出就能看到,PMOS 的 gm·ro 明显低一档,原因只有一个:空穴迁移率低,同电流下 gm 低,而 ro 由 λ 和 ID 决定,两者一样时 ro 是一样的。

3.4 为什么 PMOS 的本征增益天生低一截

上面那段代码的输出不是巧合。本征增益又可以写成 2VA/Vov,而 Vov = 2ID/gm,所以归根结底是 2VA·gm/(2ID):迁移率通过 gm 直接进入这个乘积。同 ID、同 W/L、同 λ 的条件下,μ 低一倍,gm 就低 √2 倍,本征增益也低 √2 倍。想让 PMOS 追平,只能加宽(提高 W/L)或者加长(提高 VA),两者都要面积和电容。

这条结论在电流镜、差分对、共源共栅的增益预算里反复出现:同样的电路拓扑换成 PMOS 输入对,开环增益会掉一截,这不是仿真器的 bug,而是材料参数写死的结果。

4. 体效应与源漏互换:曲线为什么会在半路“倒着走”

第 4 题和第 5 题开始出现两种“反直觉”的形状:一条是 ID-VGS 曲线随 VBS 整体平移,另一条是电流和跨导扫到某一点后突然改变走向。它们看起来像两种无关的现象,底层其实是同一件事——阈值电压不是一个常数,而是一个关于衬底电位的函数。

4.1 VTH 的平方根项来自耗尽层电荷

阈值电压的经典表达式是:

VTH = VTH0 + γ ( √(2ΦF + VSB) − √(2ΦF) ) γ = √(2q·εsi·NA) / Cox

平方根因子不是拟合出来的曲线形状,而是耗尽层电荷的几何结果。栅压要先把栅下方的耗尽层“清空”,才能形成反型层;耗尽层宽度 Wd 与表面电位的关系本身就是平方根,所以耗尽层电荷 Qdep ∝ √(2ΦF + VSB)。VSB 越大,反向偏置越深,耗尽层越宽,需要更大的栅压才能达到同样的反型程度。

注意 γ 与 Cox 成反比这条关系。氧化层越厚,Cox 越小,栅极对沟道的控制力越弱,衬底那一份“话语权”占比就越大,体效应越严重。这就解释了为什么老工艺(厚氧化层、低 Cox)的体效应系数比先进工艺大得多,也解释了为什么源跟随器在老工艺里是一个让人头疼的结构。

4.2 源跟随器的自举失效:1.97 V 这个数字是怎么来的

第 5 题第一小问的电路里,栅极接一个固定电压,源极接扫描电压 VX,VX 从 0 往上升。这里同时发生两件事:一是 VGS = VG − VX 随 VX 上升而减小,过驱动电压被压缩;二是 VSB = VX 随 VX 上升而增大,阈值电压被抬高。两条曲线相向而行,最终在某一点相交,交点就是器件关断的位置。

答案里那个 1.97 V 看起来像一个随手拈来的数,其实它被三个参数唯一确定:VTH0 = 0.7 V、γ = 0.45 √V、2ΦF = 0.9 V,加上栅极电压 3 V。三个数联立之后,1.97 V 并不是拍脑袋的结论,而是方程的不动点。手算一遍不容易发现这层关系,写几行代码却一眼能看出来:

import math # 参数来自教材参数表:VTH0 / gamma / 2*Phi_F / 栅极固定电压 VTH0, GAMMA, PHI2, VG = 0.7, 0.45, 0.9, 3.0 def vth(vsb): """阈值电压随源-体电压抬升,平方根关系来自耗尽层电荷""" return VTH0 + GAMMA * (math.sqrt(PHI2 + vsb) - math.sqrt(PHI2)) def residual(vx): """残差 = 当前栅源电压 - 当前阈值电压,等于 0 时器件刚好关断""" return (VG - vx) - vth(vx) lo, hi = 0.0, VG for _ in range(60): # 二分法,60 次足够压到浮点精度 mid = (lo + hi) / 2 if residual(mid) > 0: # 残差为正说明仍然导通 lo = mid else: hi = mid print(f"关断点 VX ≈ {lo:.3f} V,此时 VTH ≈ {vth(lo):.3f} V") # 关断点 VX ≈ 1.966 V,此时 VTH ≈ 1.035 V,与答案的 1.97 V 对得上

这段代码的意义不在算出一个数,而在于反向验证:如果答案里的 1.97 V 是用另一组 γ 或 ΦF 算出来的,二分法立刻对不上。详细版解答每一步都把中间量写出来的价值就在这里——它允许你从结果倒推参数,把答案变成一个可以自洽检验的黑匣子,而不是只能背下来的数字。

提示:VSB 用 V 做单位、γ 用 √V 做单位,两者必须一致;把 γ 写成 mV 单位是常见的翻车点。

4.3 源漏互换:源是一个电学定义,不是版图定义

第 5 题第二小问的曲线更奇怪:电流和跨导扫到中途会改变走向,甚至出现符号翻转。原因是 MOS 管在结构上完全对称,源和漏并不是版图上刻出来的身份,而是由电位关系临时决定的——对 NMOS 来说,电位低的那一端是源,因为载流子从那里出发。

当 VX 从 0 往上扫,某一端的电位迟早会超过另一端,源漏的角色就在这一刻对调。对调之后,VGS 的定义从 VG − VX 变成 VG − V_另一端,VDS 的定义从 V_另一端 − VX 变成 VX − V_另一端,式子里每一个符号都要重写。曲线之所以“反折”,不是因为器件坏了,而是因为坐标系换了。

这个机制还带来一个实用结论:工作在线性区时,跨导不再饱和,而是退化成 gm = μCox(W/L)VDS,随 VDS 近似线性增长。答案里那条“先线性上升、到某个电压后变平”的 gm 曲线,正是器件从线性区滑进饱和区的过程。饱和之后 gm 才与 VDS 脱钩,变成只由过驱动电压决定。

4.4 VBS 作参数:曲线整体右移,断点跟着挪

第 4 题第二小问把 VBS 当参数,ID-VGS 曲线随 VBS 增大整体向右平移。平移而不是缩放,这一点很关键:平方律里 gm 只与过驱动电压有关,与阈值无关,所以曲线斜率不变,只是断点从 VGS = VTH0 挪到了 VGS = VTH(VSB)。

如果只从图上看,这条结论像是“曲线右移”;如果从器件物理上看,它其实是“栅极需要先支付一笔额外的电压,用来清理更宽的耗尽层”。两种说法等价,但后一种能解释为什么高温、低电源电压下源跟随器的输出摆幅会比预期小一截——阈值被体效应吃掉的那部分,直接从摆幅预算里扣。

5. 排查清单:五个让答案对不上的坑,以及它们背后的机制

习题答案对不上,十有八九不是思路错,而是某个中间量在单位或者区间判定上出了问题。下面五条是我自己在对照详细版步骤时反复踩过的,按“现象—原因—解决”写,每条都对应前面某一节的机制。

5.1 量纲与单位:µA 和 mA 之间隔着一整条曲线

现象:算出来的 ID 比答案大或小三个数量级,曲线整体飘出坐标范围,但形状是对的。

原因:μCox 常常以 µA/V² 给出,W/L 是微米比值(无量纲),电压用 V,乘出来的结果单位是 µA;要换成 A 还得乘 10⁻⁶。另一处常见错位是 Cox:εox 用 F/m、tox 用 cm,除出来是 F/m² 还是 F/cm² 相差 10⁴。

解决:先把所有量写成 SI 基本单位再代,最后按需要换算;写代码时把单位写进变量名(id_amp、mu_cox_si),让量纲错误在命名阶段就暴露。

现象:输出电阻 ro 和答案差一个数量级,gm 却是对的。

原因:λ 的量纲是 1/V,数值与沟道长度强绑定。把另一个 L 的 λ 直接抄过来,ro 就会整体偏。

解决:从 VA = 1/λ 反推。同一工艺下 VA 大致随 L 线性增长,用这个关系交叉验证手上的 λ 是否合理。

5.2 区间判定与符号:PFET 的绝对值会咬人

现象:PFET 的 |ID| 曲线照抄 NFET,出来一条负电流,或者区判结果和答案相反。

原因:PFET 的 VGS、VDS、VTH 全是负值,平方律要写成绝对值形式才成立;判区时必须比较 |VDS| 与 |VGS| − |VTH|,不能用带符号的量直接比。

解决:先在纸上画一个“绝对值版”的器件符号,所有公式只写绝对值,算完再把方向和电路节点对应回去。这一条血泪经验,换来的是后面所有 PMOS 电路都不用重推一遍。

现象:源跟随器曲线的关断点和答案差几十毫伏,其他部分都对。

原因:忘了体效应,把 VTH 当常数。几十毫伏的差异在一根 3 V 的曲线上看不出来,但关断点位置对不上就是它的指纹。

解决:只要 VSB ≠ 0 就上平方根项。判断标准很简单:源极没有接在电源轨上,就一定有别体效应。

现象:本征增益随 ID 变化的曲线,斜率算成了 −1。

原因:把 gm 写成与 ID 成正比,或者把 λ ∝ 1/L 当成等式 λ = 1/L 直接代。gm 是 √ID 的关系,乘上 ro 的 1/ID,净指数才是 −1/2。

解决:先化成 gm·ro = 2/(λVov),再代 Vov = 2ID/gm,看清 ID 的指数。中间多做一步化简,比对着答案猜斜率快得多。

现象:扫描曲线在某一点突然对不上,前后两段各自都能算通。

原因:源漏互换之后没有重新定义 VGS 和 VDS,仍在用旧的坐标系。

解决:扫描类题目先标出“哪一端电位更低”,分段写公式,在断点处检查两侧是否连续。连续就说明定义换对了。

6. 设计取舍:为什么手算一遍比直接看仿真波形更值

仿真器能给出精确到小数点后四位的波形,但它不会告诉你这个数从哪来。手算的价值不在于精度,而在于因果链:Cox 决定控制强度,W/L 决定几何缩放,过驱动电压决定 gm,λ 决定 ro,这四个环节串起来,才能回答“把 L 加倍,增益涨多少、带宽掉多少”这类问题。仿真只能回答“当前这组参数下是多少”。

问题手算/推导仿真
gm 为什么是这个值能拆成 μCox、W/L、Vov 三项只给结果
L 加倍后增益怎么变能给出 √L 的趋势需要重跑
体效应吃掉多少摆幅能算出平方根项需要专门扫参数
短沟道二阶效应占比不能能

这张表说明的是分工,不是替代关系。真正容易出问题的地方在于:把仿真结果当成了推导结果,于是不知道某个参数动了之后电路会往哪边偏。做偏置点分配时,我习惯先用平方律手算一遍,把 gm/ID、Vov、VA 三个数写下来,再跑仿真对照。两者差得远,说明二阶效应显著,此时才需要回到仿真里找原因;两者接近,说明这条设计路径是干净的。

那套按步骤拆解的详细版解答,价值也在这里:它把每一步的中间量都摊开,让你能对着自己的推导核“第几步开始分叉”,而不是只核最后那个数。核对中间量,错在哪一步一目了然;只核最终答案,错了只能从头再算一遍,连后悔药都没得吃。

从那以后我每次看一条 ID-VGS 曲线,都强制先在纸角写下 Cox、VTH、λ 这三个数,再动笔算第一个点。三个数不写在纸上,后面的推导基本等于白写。希望帮到你。

本文还有配套的精品资源,点击获取