ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

模拟CMOS集成电路设计Chapter 2课后题详解:从漏电流到本征增益

模拟CMOS集成电路设计Chapter 2课后题详解:从漏电流到本征增益

简介:这份资源是拉扎维《模拟CMOS集成电路设计》课后习题的详细解答PDF,面向正在学习模拟IC课程的高年级本科生、研究生以及需要夯实器件模型的工程师。内容从NFET与PFET的基本原理图出发,完整推导漏电流表达式,逐步演示如何绘制漏电流随栅源电压变化的曲线,并进一步求解跨导、输出阻抗与本征增益等关键参数;解答中涉及宽长比W/L、阈值电压、沟道长度调制系数等概念的代入计算,能帮助读者将公式与物理含义对应起来。整个解答采用分步骤英文呈现,每个公式都给出数值代入与中间化简过程,便于对照原书逐题复核,也适合备考或自学时反复琢磨。资源为单个PDF文件,约68.09MB,目前已有3449人学习使用,适合作为课堂学习、考研复习或模拟集成电路设计进阶的参考配套材料。

1. 模拟CMOS集成电路设计课后题答案:这份 Chapter 2 细解值得过一遍手

模拟CMOS集成电路设计这门课,许多人的入门状态是“上课听懂了,做题算不对”。课后题答案网上不少,但多数只给最终曲线图和一句“如图可见”,真正把每一步公式代入、参数查表、单位换算写清楚的版本很少。这份资源收录了教材 Chapter 2 前五道题的详细解答,从 W/L=50/0.5 的 NFET/PFET 漏电流计算,到 gm、rO、本征增益推导,再到 ID-VGS 曲线转折点和图 2.47 电路的源漏互换分析,每步都有中间代入式。它适合刚学完 MOSFET 一阶模型、做题没底的初学者,也适合想重新过一遍器件基础公式的模拟IC从业者。价值不在“答案本身”,而在“公式→查表→代入→画图”这条链被完整拆开,照着手推一遍,比抄十遍管用。

2. 把漏电流公式拆到能手算:Cox、迁移率、λ 的参数取法

2.1 从 W/L=50/0.5 和 |VDS|=3V 出发:为什么选这个偏置

正文 Problem 1 的第一步干了什么?它把 NFET 的电路图先画出来,然后把 VDS 固定为 3V,令 VGS 从 0 扫到 3V。这个偏置组合的用意是:让器件先待在 off 区,再进入饱和区,全程不碰三极管区。因为 VDS=3V 远大于过驱动电压,ID-VGS 曲线主要呈现平方律上升段,适合验证一阶模型的手算能力。

我一般拿到这种题,第一件事不是急着套公式,而是先在草稿纸上写下 VDS、VGS 与 Vth 的大小关系,把扫描过程切成 off、饱和、三极管三段,再决定哪些点值得代入。正文的 Step 2 把“VGS=0.8V 时代入”的过程展开了,但对第一次手算的人来说,最该固化的是“0.8V 这个数不是拍脑袋来的,而是先算过 Vth 才选的”。

这里有个新手常忽略的判断顺序:必须先判 off 再判饱和。VGS 小于 Vth 就是截止,ID 视为 0;VGS 大于 Vth 且 VDS 大于 VGS-Vth 才是饱和。顺序反了,容易在 VGS 刚过阈值时就把三极管区公式套进去,曲线开头就会画歪。

2.2 Cox=3.9ε0/tox 的手算口径与表 2.1 查表顺序

Cox 的表达式是 Cox=εox/tox=3.9ε0/tox。这里最容易出问题的不是公式本身,而是单位。tox 教材上常以纳米或微米给出,但代入时必须换成厘米。以 4nm 栅氧为例,4nm=4×10⁻⁷cm,ε0=8.854×10⁻¹⁴F/cm,算出来 Cox 约 8.6×10⁻⁷F/cm²;如果把纳米直接代入,结果会差三个数量级,后面 ID 完全没法看。

正文反复提“Refer to Table 2.1”,查表顺序其实有讲究。我一般先确认工艺节点,再看 μnCox 与 μpCox,最后才取 λ。顺序反掉的后果是:拿着长沟道工艺的 λ 去算短沟道器件的 rO,gm·rO 全偏。教材表 2.1 给的是特定工艺的一组典型值,不同版本印刷时数值可能有小差异,手算时以你手上的教材页为准。

放一个典型量级表,用于建立手算直觉:

参数含义常见量级
μnCoxNMOS 栅氧跨导系数约 300~400 μA/V²
μpCoxPMOS 栅氧跨导系数约为 μnCox 的 40%~60%
λ沟道长度调制系数L=0.5μm 时约 0.1~0.2 V⁻¹
Vth0零偏阈值电压约 0.5~0.7 V

注意:这张表只用于建立量级直觉,不要直接抄进作业。考试或仿真对照时,以教材表 2.1 或工艺模型参数为准。

2.3 用一段 Python 把 ID-VGS 扫描表算出来

手算表格只能取几个点,但代码可以把整条曲线扫出来。下面这段脚本用一阶平方律模型复现 Problem 1 的 NFET 扫描(VDS=3V,VGS 从 0 到 3V 按 0.1V 步进),也是可以反复使用的“公式模板”,改参数就能换工艺。

# 复现课后题 Problem 1 的 NFET ID-VGS 扫描 import math # 教材表 2.1 风格的一组参数(单位已统一为 cm 制) mu_n = 350.0 # 电子迁移率,单位 cm^2/(V*s) Cox = 8.6e-7 # 栅氧电容,单位 F/cm^2 W = 50e-4 # 沟道宽度,单位 cm L = 0.5e-4 # 沟道长度,单位 cm Vth0 = 0.7 # 零偏阈值电压,单位 V VDS = 3.0 # 固定漏源电压,单位 V lam = 0.1 # 沟道长度调制系数,单位 1/V k = mu_n * Cox * (W / L) # 增益因子 k = μn*Cox*W/L,单位 A/V^2 print(f"k = {k:.4e} A/V^2") for i in range(0, 31): VGS = round(i * 0.1, 2) if VGS <= Vth0: ID = 0.0 elif VDS > VGS - Vth0: # 饱和区:ID = 0.5*k*(VGS-Vth)^2*(1+λ*VDS) ID = 0.5 * k * (VGS - Vth0) ** 2 * (1 + lam * VDS) else: # 三极管区:本题 VDS=3V,实际扫描中很少进入 ID = k * ((VGS - Vth0) * VDS - 0.5 * VDS ** 2) if VGS in (0.0, 0.5, 0.8, 1.0, 1.5, 2.0, 3.0): print(f"VGS={VGS:.1f}V ID={ID:.6f}A")

逻辑说明:脚本先判 VGS 是否小于 Vth0,小于则 ID 直接置 0,对应 off 区;再判 VDS 与 VGS-Vth0 的关系,满足 VDS > VGS-Vth0 走饱和区平方律公式,否则走三极管区公式。题目固定 VDS=3V,所以整个扫描基本都落在饱和区,这也正是 Problem 1 期望看到的曲线形状。

参数说明:W 和 L 从微米换算成厘米,是保证 k 的单位正确;lam 给 0.1 只是示意量级,实际应查教材表 2.1;打印点选 0、0.5、0.8、1.0、1.5、2.0、3.0,是为了和手算表逐点对照。拿到脚本后,把 lam 改成手上的 λ 值,输出数值会有变化,但曲线趋势不变。

2.4 手算值对照 SPICE 时的口径差异

Problem 2 里用的是固定 ID=0.5mA 反推 gm 和 rO,这和 Problem 1 的“先算 ID 再算 gm”是两条不同路径。很多人在这一步产生困惑:为什么手算和 SPICE 仿真的 ID 总是对不齐?原因有三个。第一,平方律模型没有亚阈值电流,VGS 接近 Vth0 时仿真里已经有了尾巴电流,手算却是 0,低过驱动区必然分叉。第二,λ 不是常数,它随 L 变化,表 2.1 给的是一个典型值,工业级模型里沟道长度调制是连续计算的。第三,body effect 在 VBS≠0 时没有叠进一阶公式。

所以这份答案的正确用法是“验证对公式的理解”,而不是“精确预测硅片行为”。我对照仿真时,会先固定同一套模型参数,再比较曲线的形状和转折位置,数值差 20% 以内就算对。模拟IC 的课后题做到后面会发现,所有公式都建立在“先判断工作区”的纪律上,这段经验在后面 gm、rO 的推导里还会反复出现。

3. 跨导与输出阻抗:gm·rO 的推导不是背公式而是会消元

3.1 gm=√(2μCox(W/L)ID):平方根里每一项都在给单位“开会”

Problem 2 第一问是算 transconductance。公式是 gm=√(2μnCox(W/L)ID)。很多初学者直接当结论背,但一代入单位就懵。原因在于:μnCox 的单位是 A/V²,乘以 W/L(无量纲)再乘以 ID(A),根号里实际是 A²/V²,开根号才是 A/V,也就是西门子。单位先对,数值才有意义。

正文的推导顺序是先算 Cox,再拿 Cox 和 μn 合并成 μnCox,最后才代 ID。这套顺序的好处是每一步都能回看:如果最终 gm 的量纲不是 A/V,前面某一步一定代错了。我自己的习惯是在草稿上把 gm 写成三个因子的乘积再开根号,而不是一次性输入计算器,这样可以少踩一个“根号漏开平方”的坑。

3.2 rO=1/(λID):λ 与 L 成反比时输出阻抗随 L 的变化

输出阻抗 rO 的表达式是 1/(λID)。这里的 λ 不是常数。Problem 3 特意给出 λ∝1/L,意思是沟道越短,沟道长度调制越明显,rO 越小。L 变大,λ 变小,rO 变大;同时 W/L 变化又会拖动 gm 变化,两个效应叠加后,gm·rO 呈现出随 L 整体抬升的趋势。

正文在这道题里做了一个关键操作:把 λ∝1/L 直接带入 gmrO 表达式,消去中间变量。这一步很多答案直接跳过,只说“由图可见”,但实际推导里藏着最容易错的正负号和开根号。L 出现在两个地方:gm 的根号内和 λ 的分母上,代入后 L 会以某个幂次出现在分子上,方向感是“L 越大增益越大”。如果你推完发现 L 增大增益反而减小,多半是 λ 的倒数关系代反了。

3.3 推导 gmrO 的化简路径:约掉 ID 后剩什么

把两个表达式做乘法:

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

先看 ID:分子是 ID 的 1/2 次方,分母是 ID 的 1 次方,约掉后分母还剩 ID 的 1/2 次方,所以 gm·rO 正比于 1/√ID。这就是“电流越小本征增益越大”的来源。再看 L:若 λ=k/L,则分母里的 λ 换成 k/L,分子根号里的 W/L 也随之变化。整理后 gm·rO 正比于 √(W·L) 除以某个与工艺相关的常数和 √ID。也就是说,把沟道做长、宽度做大、电流做小,是提高本征增益的三条基本路径,其中电流的影响是平方根关系,最立竿见影。

这套消元逻辑比背结论重要得多。面试时被问“gm·rO 和电流是什么关系”,能当场写出这个约分过程的,基本就算真懂。

3.4 批量算一遍:NMOS 与 PMOS 的 gm、rO、本征增益

下面是和 2.3 同一套参数风格的小脚本,直接算出 Problem 2 需要的三个值,并输出对比。PMOS 的迁移率按典型值取 μp=0.4μn,其余工艺参数相同,正好演示“同一公式、不同 μ,结果差多少”。

# 计算 Problem 2 的 gm、rO、gm*rO import math Cox = 8.6e-7 # 栅氧电容,单位 F/cm^2 W, L = 50e-4, 0.5e-4 # 器件尺寸,单位 cm ID = 0.5e-3 # 偏置电流 0.5mA lam = 0.1 # 沟道长度调制系数,单位 1/V for name, mu in [("NMOS", 350.0), ("PMOS", 140.0)]: k = mu * Cox * (W / L) gm = math.sqrt(2 * k * ID) ro = 1.0 / (lam * ID) gain = gm * ro print(f"{name}: gm={gm:.2f} mS, ro={ro:.0f} kOhm, gm*ro={gain:.1f}")

输出大致是:NMOS 的 gm 约 5.5mS,PMOS 约 3.5mS;rO 相同,因为 λ 和 ID 相同;本征增益 NMOS 更高。这说明在同样偏置下,NMOS 更适合做增益级,PMOS 的优势在别处,比如作为电流源时更容易匹配。代码里的 mu 是迁移率,PMOS 取 140 是常见近似,实际以表 2.1 为准。把 lam 改成 0.05,会看到 rO 翻倍,本征增益也翻倍——这就是长沟道器件适合做高增益放大器的直接证据。

4. 读 ID-VGS 曲线:转折点、阈值点和夹断点要分开

4.1 VDS 参数化时的三区切换:Off、饱和、三极管

Problem 4(a) 要求以 VDS 为参数画 ID-VGS 曲线。这道题的坑在于:很多人把曲线的“拐点”直接标成 Vth。实际上,对每个固定的 VDS,转折点发生在 VGS = Vth + VDS 的位置,在此之前器件处于饱和区,之后进入三极管区。因为 VDS 本身参与了判断条件,所以 VDS 越大,进入三极管区的 VGS 越高,曲线的包络越宽。

正文给了一个简单结论:VDS 参数化时,各条曲线在 VGS 小于 Vth 时全部为 0,随后按平方律上升,到夹断点后斜率变缓。手算时我习惯先把 VDS=1V、2V、3V 三条线的 Vth+VDS 分别算出来,标注在横轴上,再画曲线。这样画出来每条线的转折点位置有依据,而不是“凭手感”。

4.2 VBS 参数化时的阈值偏移:体效应的方向判断

Problem 4(b) 改成 VBS 作参数。这里引入的是体效应公式,Vth 不再固定,而是随源衬电压变化。对 NMOS,衬底电压低于源极,VBS 为负,Vth 升高,整条 ID-VGS 曲线向右平移。VBS 越负,平移量越大。很多人会把方向搞反,原因在于公式里的 VSB 和 VBS 符号差一个负号。

我在草稿上从不直接用 VBS,而是统一写 VSB=|VBS|,套公式 Vth = Vth0 + γ(√(2φF + VSB) − √(2φF))。这样判断方向时只剩“VSB 越大,Vth 越大”一条规则,不容易乱。正文图里那条“曲线整体右移”的效果,正是 VSB 增大的结果。

4.3 源漏互换:VX 扫过电源电压时 D/S 角色反转

Problem 5 给的图 2.47 是比前几题更进阶的考法。随着 VX 从 0 扫到 VDD,某个 NFET 的源漏会互换角色。电路里节点的绝对电压不变,但“源”和“漏”的定义由 VGS 和 VDS 的符号决定。VX 较低时,电流从 X 节点流向电源;VX 超过一定值后,原来的“源”变成“漏”,电流方向反转,VGS 的极性也跟着反转。

正文里“source and drain exchange their roles”这句话,是整个 Chapter 2 最容易被略读的地方,却是面试最爱问的场景。我的处理办法是分区间重新列一遍各端电压:

VX 区间器件角色VGS 表达式工作区判断
VX 较小正常连接随 VX 变化先 off 后饱和
VX 接近 VDD源漏互换电压差反向三极管或饱和镜像区

这张表是手算的思路骨架。实际画 IX 和跨导曲线时,先定区间,再写表达式,最后才连线。顺序反了很容易画出“两条线交叉穿过”的怪图,而正确答案里 IX 是连续但斜率变化的。

5. 避坑专栏:手算课后题最容易翻车的五个细节

5.1 tox 单位没换成 cm,Cox 差三个数量级

现象:按公式算出来的 ID 比答案大了几千倍,检查公式没发现错误。

原因:把 tox 以 nm 为单位直接代入 Cox=εox/tox,而 ε0 是 F/cm 量级,单位不统一导致 Cox 虚大。

解决:代入前先把 tox 写成 10⁻⁷cm 量级。4nm 写成 4×10⁻⁷cm,算完 Cox 后再进漏电流公式。我每次动笔前都会在公式旁边标一遍单位,这个习惯救过不少次。

5.2 PFET 的绝对值符号直接套成 NFET

现象:用同一套平方律公式算 PMOS,结果电流是负的,或者正负号乱跳,和答案对不上。

原因:PMOS 的 VGS、VDS 都是负值,平方律公式里的 (VGS-Vth) 直接代负值会得到一个带符号的表达式,整理时极易乱。

解决:像正文 Problem 1 后半段那样,先写 |VGS|、|VDS| 和 |Vth|,按绝对值版本的平方律算出电流大小,最后再根据参考方向补负号。PMOS 的电流方向本身是从源到漏,最终 ID 为负是正常的,但公式里不要带着负号开平方。

5.3 λ 修正项被忽略,短沟道下 rO 偏差 20% 以上

现象:算 gm·rO 时把 (1+λVDS) 因子省了,或把 λ 直接取 0,结果和答案差 20%。

原因:Problem 2 的 rO=1/(λID) 里 λ 是分母,λ 取 0 会导致 rO 无穷大;有些人在 ID 里省掉 (1+λVDS),导致 gm 和 rO 的一致性被破坏。

解决:先看沟道长度。L=0.5μm 属于短沟道,λ 不能忽略;L 大于几微米时才能当 0 处理。公式里的 (1+λVDS) 不管在饱和区电流还是 rO 中都要保持同一个 λ,不要一个带一个不带。

5.4 把 ID-VGS 曲线的转折点当成阈值点

现象:画 VDS 参数化的 ID-VGS 曲线时,把曲线斜率变化的点标成 Vth,结果和正文图对不上。

原因:混淆了阈值点 Vth 与夹断点 Vth+VDS。Vth 是 ID 从 0 开始上升的位置,夹断点才是饱和区转入三极管区的转折位置。

解决:先画 VDS=0 的参考线确定 Vth,再对每个 VDS 分别计算 Vth+VDS,把转折点标在对应 VDS 的曲线上。这样每个转折点的横坐标都不同,看起来才合理。

5.5 体效应公式里 VBS 符号代反

现象:画 VBS 参数化的 ID-VGS 曲线时,VBS 越负曲线反而左移,正好和答案相反。

原因:公式里写的是 VSB 而不是 VBS。对 NMOS,VBS 是负的,VSB=-VBS 才是正值,开根号里的 (2φF+VSB) 才合法。

解决:统一转成 VSB=|VBS| 代公式。VSB 越大,Vth 越大,ID-VGS 曲线右移。这个口诀适用于 NMOS;PMOS 的极性相反,但同样先取绝对值再判断方向,就不会乱。

6. 用 ngspice 把课后题图“验”回来:直流扫描网表与判读

6.1 一个能直接跑的 NFET ID-VGS 扫描网表

手算之后做一次仿真验证,是检验公式理解的最快方式。ngspice 的 LEVEL=1 MOSFET 模型就是一阶平方律模型,参数正好能映射到教材表 2.1 的 Vth0、μnCox、λ 上。

* NFET ID-VGS sweep,复现课后题 Problem 1 VGS G 0 DC 1 VDS D 0 DC 3 M1 D G 0 0 nmos1 W=50u L=0.5u .model nmos1 nmos level=1 vto=0.7 kp=200u lambda=0.1 .dc VGS 0 3 0.05 .print dc i(M1) .end

逻辑说明:M1 的四个节点依次接 漏-栅-源-衬底,衬底接 0 表示 VBS=0。VGS 用 .dc 从 0 扫到 3V,步长 0.05V,VDS 固定 3V。kp 对应 μnCox,vto 对应 Vth0,lambda 对应 λ。这条网表跑完,输出的 ID-VGS 曲线应该和手算趋势一致。

参数说明:W=50u、L=0.5u 是题目原始尺寸;kp 用 200u 是 LEVEL=1 里常见的近似值,如果和教材表 2.1 差得远,改成教材数值再跑。LEVEL=1 模型没有亚阈值电流,VGS 小于 Vth0 时电流严格为 0,和手算口径完全一致,适合教学对照。

6.2 用原始数据算 gm:导出后做数值微分

ngspice 里直接 .measure 跨导的写法因版本而异,我一般不用它,而是把扫描数据导出来,在 Python 里对 ID-VGS 做数值微分。曲线饱和段的斜率就是 gm,取 VGS=1V 附近的点,和手算 gm 对比,误差通常在 10% 以内。

ngspice -b id_vgs.cir > id_vgs.log grep -v "^$" id_vgs.log | awk 'NR>2 {print $1, $2}' > sweep.csv

这段只是导出思路的示例,实际在 ngspice 里直接看 .print 输出也行。重点是:拿到 CSV 后,用相邻两点差分求斜率,别用整条曲线的平均斜率,因为亚阈值区和饱和区斜率完全不同。

6.3 和答案对不齐时的第一排查顺序

如果仿真曲线和课后答案的数值差 30% 以上,按这个顺序查:先查 kp 是不是教材表 2.1 的值,这是最大嫌疑;再查 W、L 单位有没有写 u,一阶模型里 W=50u 和 W=50 差一万倍;最后查 lambda 是否被模型接受,LEVEL=1 里 lambda 不写时默认为 0,rO 会变成无穷大,gm·rO 曲线直接异常。

从那以后,我每次拿到模拟IC的课后题答案,第一件事不是看最终图,而是先拿同一组参数在 ngspice 里重建一条曲线,对上了再继续往下读章节。这份 Chapter 2 详细版答案配合这套手算加仿真流程,能把“看懂”变成“算得动”,希望帮到你。

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进