☰
模拟CMOS第2章课后题详解:MOS管工作区判定、gm与gmro计算
2026/11/6 2:47:59 网站建设 项目流程

简介:《模拟CMOS集成电路设计》课后题答案详细版面向学习模拟IC、准备课程作业与考研复试的读者,针对拉扎维教材习题推导繁琐、缺乏对照过程的问题,提供逐题解答与图表分析,尤其适合配合教材第二、三章器件模型与单级放大器内容使用。整包为1个PDF文件,大小约68.09MB,页面含原理图、参数代入、表格与曲线绘制,便于按章节检索和打印批注,目前已有3460人学习下载。内容围绕MOS器件基础展开,覆盖NFET与PFET工作区判断、漏电流表达式推导、|VGS|扫描曲线,以及跨导、输出阻抗和本征增益计算,并保留详细中间步骤。读者可据此核对答案、理解公式来源、复盘手工计算与绘图过程,适合作为课堂同步练习和考前查漏补缺的参考。

1. 开场:一张 ID-VGS 曲线,把整章的考点密度压出来了

模拟CMOS集成电路设计的课后题里,第 2 章这几道(1P 到 5P)最能看出一个人的基本功。表面是画曲线、代公式,实际上每道题都在问同一串问题:这个管子现在在哪个区、该选哪条公式、单位带对没有、画图的时候断点在哪。W/L=50/0.5、|VDS|=3 V、|ID|=0.5 mA 这些数字不是随手给的,是命题人埋好的判断条件——先判区再算数的人两分钟出结果,抱着答案抄的人换个偏置就翻车。这份详细版答案真正的价值在于把每一步「为什么这么选」摊开,而不是给你一串最终数字。适合已经过了一遍器件物理、正在刷题对答案的人,也适合面试前想把手算能力重新捡起来的人。下面按考点拆,每章都配着题走。

2. 大信号考点:三个工作区、两条公式、一个断点

大信号这一块,考的不是记忆力,是判断链的稳定性。同样的平方律公式,区判错了后面全废,而且答案看上去还挺像样,检查的时候根本发现不了。第 2 章前几道题反复在练这个链条。

2.1 判据先于公式:截止、线性、饱和的顺序不能反

拿到任何一个管子,第一件事是算过驱动电压 VOV = VGS − VTH,而不是急着往平方律里代。VOV < 0,器件截止,ID ≈ 0,写到这里就可以停笔;VOV > 0 再看 VDS 和 VOV 的大小关系:VDS ≥ VOV 是饱和区,VDS < VOV 是线性区(也叫三极管区)。这个顺序反了,最常见的后果是把一个已经进入线性区的工作点当成饱和来算,电流偏大一截,后面的 gm 也跟着虚高。

课后题里出现的三组表达式要背成条件反射,但每条都带着适用前提:

工作区判据电流表达式常见误用
截止VGS < VTHID ≈ 0忽略亚阈值,题目一般也不考
饱和VGS > VTH 且 VDS ≥ VGS − VTHID = ½ μCox(W/L)VOV²(1+λVDS)忘了乘 (1+λVDS)
线性VGS > VTH 且 VDS < VGS − VTHID = μCox(W/L)[VOV·VDS − ½VDS²]把 VDS² 项写成了 VOV²

表里最后一列是血泪经验:线性区那个 ½VDS² 项,考试时写错的人比写对的人多。记法很简单——VDS 很小时,线性区的 ID 应该正比于 VDS,把 VDS² 换成 VOV² 之后这个正比关系就没了,自己一代入小 VDS 就能验出来。

还有一点容易被跳过:λ 什么时候乘。严格说线性区也受沟道长度调制影响,但教材第 2 章的题目基本只在大信号曲线题里对饱和区乘 (1+λVDS),线性区默认忽略。这不是物理上正确,是这一章的约定,答题时跟着约定走,别自作聪明加一项。

2.2 断点、斜率与阈值电压是同一件事的三种读法

P4 那道「画 ID 对 VGS 的曲线,以 VDS 为参数,标出断点」的题,很多人的做法是把公式算一遍然后描点,结果曲线形状对了,断点位置标偏了。断点不是画出来的,是算出来的。

以 VDS 为参数时,曲线有两个特征位置。第一个在 VGS = VTH,这是器件从截止切到导通的点,也是曲线从零开始抬起来的地方。第二个在 VGS = VTH + VDS,这是器件从饱和切到线性的点——VGS 继续增大、VDS 不变,VOV 迟早会超过 VDS,此时管子进入线性区,曲线斜率明显变缓,出现一个拐折。所以一条 ID-VGS 曲线上如果有两个断点,别怀疑,那正是两个区边界。

断点处画切线求斜率,得到的就是这个偏置点的 gm。切线的斜率越大,说明同样的 VGS 增量能换来更多电流,跨导越高。这个过程反过来用也成立:如果题目只给了曲线让你读 VTH,就是找曲线从零抬起来的那个 VGS 值,不用管别的。

以 VBS 为参数时,情形不一样。VBS 变化不改变曲线的形状逻辑,只平移阈值——VBS 越负(反偏越深),耗尽层越宽,阈值电压越高,整条曲线往右挪。注意这里的符号方向:PMOS 的体端接法不同,平移方向看起来是反的,答题时按题目给的坐标轴符号一步步推,别凭印象写「左移」「右移」,写错方向扣的分和算错数一样多。

2.3 逐题演算:W/L=50/0.5 的 NFET/PFET 曲线怎么落地

回到 P1:W/L = 50/0.5,|VDS| = 3 V,画 NFET 和 PFET 的 ID 随 |VGS| 从 0 到 3 V 的变化。这道题的第一个动作不是算,是判区。

NFET 这边,VTH ≈ 0.7 V,饱和判据是 VDS ≥ VGS − VTH。把 VDS = 3 V 代进去,条件是 VGS ≤ 3.7 V。而题目限定 VGS 最大 3 V,所以整个扫描范围内 NFET 始终饱和。PFET 同理:|VTH| ≈ 0.8 V,饱和条件是 |VDS| ≥ |VGS| − |VTH|,即 |VGS| ≤ 3.8 V,也全程满足。两管都只有一个断点,就是各自的阈值电压。

这一步判断省掉了一半工作量。要是不判区直接分三段写,公式没错但时间全耗在无用分支上。面试里被问到「你怎么开始算这道题」,先答「先验证是不是全程饱和」,比直接背公式的印象分高得多。

判完区再算 Cox。Cox = εox/tox,εox 取 3.9 × 8.854 × 10⁻¹⁴ F/cm,tox 按工艺给的值代,单位最后统一到 F/cm² 或 fF/μm²。剩下 μnCox、μpCox、λ 全部查教材表 2.1 的模型卡,题目没给就说明必须查表,这一步是考察你会不会用模型参数,不是考察你记不记得住数值。

下面用一组示例参数把表算出来,实际数值以你手上教材表 2.1 为准:

import numpy as np # 示例模型参数:请替换为教材表 2.1 中的实际数值 mu_n_cox = 200e-6 # A/V^2,电子迁移率与氧化层电容之积 mu_p_cox = 80e-6 # A/V^2,空穴侧 vth_n = 0.7 # V,NMOS 阈值 vth_p = 0.8 # V,PMOS 阈值(取绝对值参与运算) lam = 0.1 # 1/V,沟道长度调制系数 w_over_l = 50 / 0.5 # 100,宽长比 vds = 3.0 # V,题目给的 |VDS| def id_saturation(vov, mu_cox, wl, lam, vds): """饱和区平方律,带沟道长度调制因子""" if vov <= 0: return 0.0 # 截止区直接返回 0 return 0.5 * mu_cox * wl * vov**2 * (1 + lam * vds) vgs_list = np.arange(0, 3.01, 0.25) # 扫描 0~3 V print(f"{'|VGS|':>6} {'ID_N(mA)':>10} {'ID_P(mA)':>10}") for vgs in vgs_list: idn = id_saturation(vgs - vth_n, mu_n_cox, w_over_l, lam, vds) idp = id_saturation(vgs - vth_p, mu_p_cox, w_over_l, lam, vds) print(f"{vgs:6.2f} {idn*1e3:10.3f} {idp*1e3:10.3f}")

这段代码只有三个动作:算过驱动、套平方律、乘沟道长度调制。id_saturation 里的判据 if vov <= 0 就是截止区的兜底,避免负数平方之后冒出一个虚假的正电流——这是手算最容易漏、代码最容易犯的错。参数方面,w_over_l 必须写成 50/0.5 而不是 50,单位是安培每伏方,最后乘 1e3 转毫安只是为了看表方便,中间过程不要提前四舍五入。

跑出来的表就是画图的数据源。两条曲线的拐点分别在 0.7 V 和 0.8 V,之后是抛物线上升;由于 μnCox 通常大于 μpCox,NFET 曲线在同样过驱动下更陡。PMOS 那条如果画出来和 NMOS 完全重合,八成是把 μpCox 当成 μnCox 用了。

提示:题目里 |VDS| 取 3 V 不是随便写的,它等于电源电压,意味着管子的漏源电压顶到头,几乎不可能进线性区。凡是大信号曲线题,先看 VDS 是不是等于电源电压,是的话直接判全程饱和。

3. 小信号考点:gm、ro 和本征增益的三条计算路径

P2 和 P3 是同一条线上的两道题:P2 给你 ID 让你算具体数,P3 让你把数变成表达式再看趋势。前者考代入,后者考量纲和比例关系。很多人 P2 算得漂亮,P3 一推导就露馅,因为没搞清楚哪个参数跟 L 走、哪个不跟。

3.1 gm 的三个面孔与代入时机的选择

跨导有三个等价写法,考场上选错形式会多算十分钟:

  • gm = μCox(W/L)VOV,知道过驱动电压时最快;
  • gm = √(2μCox(W/L)ID),只知道电流时用;
  • gm = 2ID/VOV,做比值和推导时最好用。

三者互通,来源都是平方律求导。P2 给的是 ID = 0.5 mA,属于第二种情形,所以走根号那条。但注意,走根号之前要先把 μCox(W/L) 算出来,而 μCox 里的 Cox 又得从 εox/tox 算起——这条链子跟 P1 完全一样,说明教材在第 2 章反复用同一个参数提取流程,考的就是这个流程熟不熟。

第三个式子 gm = 2ID/VOV 在 P3 里是关键。推导本征增益时用它,λ 和 L 的关系才能干净地分离出来。考试时如果只会前两个式子,推导会绕一大圈还容易丢项。

3.2 ro 只看 λ 和 ID,别去翻 μCox

输出电阻 ro = 1/(λID),两个参数,没有第三个。这条式子简单到很多人不敢相信,反复回去找 μCox 在哪,结果把时间浪费了。λ 是沟道长度调制系数,从模型卡查;ID 是直流工作点电流,题目直接给。算完 gm 和 ro,本征增益 gmro 就是两者相乘。

这里有个隐含的坑:ro 和 ID 成反比,意味着电流越大输出电阻越小。有人凭直觉认为「电流大说明驱动能力强,输出电阻也该大」,正好反了。物理上讲得通——ID 大对应更短的沟道调制效应等效,ro 自然小。记不住就记这句:电流越大,管子越像理想电流源之外的东西,ro 越小。

3.3 逐题演算:ID=0.5 mA 时的 gm、ro、gmro

P2 要求对 NMOS 和 PMOS 各算一遍,W/L 还是 50/0.5。流程固定:先算 Cox,再算 μCox(W/L),再代 gm 的根号式,再代 ro,最后相乘。

import math # 示例参数,同样以教材表 2.1 为准 mu_n_cox = 200e-6 mu_p_cox = 80e-6 lam_n = 0.1 # 1/V lam_p = 0.12 # 1/V wl = 50 / 0.5 id_target = 0.5e-3 # A,题目给定 def small_signal(mu_cox, lam, wl, id_): """返回 (gm, ro, 本征增益)""" gm = math.sqrt(2 * mu_cox * wl * id_) # 根号式,已知 ID 时用 ro = 1.0 / (lam * id_) # 只依赖 λ 与 ID return gm, ro, gm * ro for name, mu_cox, lam in (("NMOS", mu_n_cox, lam_n), ("PMOS", mu_p_cox, lam_p)): gm, ro, gain = small_signal(mu_cox, lam, wl, id_target) print(f"{name}: gm={gm*1e3:.2f} mS, ro={ro/1e3:.2f} kΩ, gmro={gain:.1f}")

函数里两个式子的顺序不能换:gm 用的是 ID 的平方根,ro 用的是 ID 的一次方,量纲上一个是 A/V、一个是 V/A,相乘之后无量纲,正好是本征增益。这就是为什么 gmro 与 ID 无关的部分能保留下来——根号和一次方相除,剩一个 1/√ID。参数上,lam_p 一般比 lam_n 大一点,因为空穴迁移率低、同样沟长下调制效应更明显,这个差异直接体现在 PMOS 的 ro 更小、本征增益更低上。

跑完对照量级:gm 在几毫西门子、ro 在几十千欧、gmro 在几十倍,这三个数量级记住了,考场上一眼就能看出自己算错没算错。要是 gmro 算出来是 0.05 或者 5000,不用检查过程,直接回去看单位。

3.4 逐题演算:gmro 对 ID 与 L 的依赖怎么推、怎么画

P3 把数变成了符号,要求推出 gmro 关于 ID 和 W/L 的表达式,再以 L 为参数画出 gmro 随 ID 变化的曲线,题目还专门提示 λ ∝ 1/L。这个提示是整个推导的钥匙。

推导路线是:gm = √(2μCox(W/L)ID),ro = 1/(λID),两者相乘得

gmro = √(2μCox(W/L)ID) / (λID) = √(2μCox(W/L)/ID) / λ

再把 λ = λ′/L 代进去,L 从分母翻到分子:

gmro = (L/λ′) · √(2μCox(W/L)/ID) = (1/λ′) · √(2μCox·W·L/ID)

结论两条:固定 L 时,gmro 随 ID 按 1/√ID 下降;固定 ID 时,gmro 随 √L 上升。这两条结论比表达式本身更重要,面试里问「想提高本征增益怎么办」,标准答法就是加长沟道或者降低偏置电流,代价分别是面积和速度。

画图时横轴取 ID、纵轴取 gmro,L 取三个值(比如 L、2L、3L),得到三条互不相交的曲线,L 越大整条曲线越高。下面把三条曲线算出来:

import numpy as np mu_cox = 200e-6 wl_ratio = 50 / 0.5 # W 固定,L 变化时 W/L 跟着变 lam_prime = 0.1e-6 # λ = lam_prime / L,单位 m w = 50e-6 # 固定宽度 50 μm id_sweep = np.logspace(-5, -2, 200) # 10 μA ~ 10 mA,对数扫描 for k in (1, 2, 3): l = 0.5e-6 * k # 沟长取 0.5/1.0/1.5 μm wl = w / l lam = lam_prime / l gm = np.sqrt(2 * mu_cox * wl * id_sweep) ro = 1.0 / (lam * id_sweep) gain = gm * ro print(f"L={l*1e6:.1f}μm 1mA处增益={np.interp(1e-3, id_sweep, gain):.1f}")

对数扫描是为了让 1/√ID 这条双曲线在图上展开得均匀,线性坐标会把大部分点挤在低电流端。w 固定、L 变化,所以每一轮的 wl 都要重算,不能沿用上一轮的比值——这是写这段代码最容易错的地方,也是手算时最常见的错。打印出来的一毫安处增益应该随 L 递增,比例大致是 √k。

注意:λ ∝ 1/L 是这一章的简化假设,真实工艺里短沟道器件的 λ 对 L 的依赖没那么规整。答题时按题目给的假设推,别拿工艺手册去纠正题目。

4. 体效应考点:把 VBS 和 VDS 当参数扫一遍

第 5 题那类电路题是第 2 章的分水岭。前面的题给一个固定的偏置,算完就完;这类题让输入电压扫过整个电源范围,管子会在不同区之间来回穿,还要考虑体效应把阈值拖着走。做不出来的人通常不是公式不会,是不知道什么时候该换公式。

4.1 体效应改的是阈值,不是迁移率

体效应的表达式是 VTH = VTH0 + γ(√(2φF + VSB) − √(2φF)),γ 是体效应系数,2φF 是表面势,VSB 是源到体的电压。VSB 越大(源电位越高于体电位,对 NMOS 来说是反偏),根号项越大,阈值越高。

关键在于:体效应只动阈值,不动 μCox,也不动 W/L。所以每换一个 VSB,需要重算的只有 VTH 和随之而来的 VOV,gm 和 ID 跟着变,但系数部分原封不动。抓住这一点,扫描题的工作量能砍掉一大半。

答题时容易被忽略的是判断 VSB 的正负。源端电位不是固定在地,可能在电路中间,此时 VSB 就是源端节点电压减体端电压,符号错了阈值就往反方向走,整条曲线上下颠倒。稳妥的做法是在草稿上先标出每个管子的源、漏、体三个节点的电位,再写 VSB。

4.2 源漏交换:P5 里最容易读错的那一步

第 5 题的电路里,输入电压 VX 从 0 扫到 1.5 V,某些区段源和漏的角色会互换。原文里那句「for VX < 0,源和漏交换角色」说的就是这件事:MOS 管是双向器件,电流可以从漏流向源,也可以反过来,哪一端电位高哪一端就当漏。

交换之后要跟着改三样东西:VGS 变成 VG − VX(因为源现在是输入端)、VDS 变成 VX − VD(符号翻转)、VSB 也变成 VX 减体电位。三样里漏一样,判区就错。这道题的难点全在这里,公式本身还是那三条。

处理步骤可以固化:先假设一种电流方向,算出 VGS、VDS,按判据试一遍,如果得到的结论和假设矛盾(比如算出饱和区但 VDS 是负的),就换方向重来。两次之内一定能定下来,别靠直觉猜。

4.3 参数扫描代码:一张表看清 IX 与 gm 的分段

下面把这类扫描题的骨架搭出来,用阈值随 VSB 变化、逐点判区的方式,避免手算时漏掉中间那一段:

import numpy as np vth0 = 0.7 # V,无体效应时的阈值 gamma = 0.45 # V^0.5,体效应系数 phi2 = 0.9 # V,2φF k = 200e-6 * (50 / 0.5) # μCox(W/L) def vth_with_body(vsb): """体效应修正后的阈值电压""" if vsb <= 0: return vth0 # 正偏不修正,题目范围内也到不了 return vth0 + gamma * (np.sqrt(phi2 + vsb) - np.sqrt(phi2)) def drain_current(vgs, vds, vth): """按区判据返回 (ID, 区名)""" vov = vgs - vth if vov <= 0: return 0.0, "cutoff" if vds >= vov: return 0.5 * k * vov**2, "sat" return k * (vov * vds - 0.5 * vds**2), "tri" vx = np.linspace(0, 1.5, 16) for v in vx: vsb = v # 假设源端跟随输入 vth = vth_with_body(vsb) idx, region = drain_current(1.5, 1.5 - v, vth) # 示例偏置 print(f"VX={v:4.2f} VTH={vth:5.3f} ID={idx*1e3:7.3f} mA {region}")

drain_current 里的判据顺序(先截止、再饱和、最后线性)是必须的,反过来写会让 VDS 很小的点误判成饱和。vth_with_body 里加了个 vsb <= 0 的短路分支,因为正偏时体效应公式在这个简化模型里不再成立,直接返回原始阈值可以避免根号里出现负数。k 把 μCox 和 W/L 合成一个常数,是因为扫描过程中这两个量不变,提前合并省掉重复乘法。

打印出来的 region 一列就是分段结果。凡是在 cutoff 和 sat 之间反复横跳的那几个点,就是曲线上斜率的突变处,画图时要在那里标断点。

5. 易错点:这五处丢分最常见

批改和答疑里,错得最有规律的就这五类。每一条都按「错在哪、为什么错、怎么答对」写,对着自己的错题本核一遍。

5.1 单位和量纲:μA/V²、fF/μm²、V⁻¹ 混着用

错在哪:μCox 用 μA/V² 代入,λ 用 V⁻¹,算出来的 gm 单位不知道是什么,ro 有时候是欧姆有时候是兆欧。

为什么错:这些式子的中间量都是国际单位制,一旦有一项用了微单位,结果就差 10⁶。漏乘或者多乘一次 1e-6,最终数字看着「合理」,实际错了六个数量级,检查时反而不会怀疑。

怎么答对:全程用安培、伏特、法拉,只在最后一步换成毫安、千欧、毫西门子,而且换算写在公式外面。表格里的数一旦和估算量级对不上(gm 在毫西这个量级、ro 在千欧这个量级),先查单位再查公式。

5.2 饱和判据用反:把 VDS ≥ VOV 写成 VDS ≤ VOV

错在哪:判据方向写反,或者判据写对了但代入时拿 VGS 去和 VDS 比,漏了减 VTH。

为什么错:判据的本质是漏端的电势够不够把沟道夹断,比的必须是过驱动。很多人记成了「VDS 大于 VGS 就饱和」,忽略了阈值那一项,VTH = 0.7 V 时误差相当可观。

怎么答对:永远先算 VOV,再拿 VDS 比 VOV。或者换个等价说法:VGD < VTH 时饱和。两种说法都行,选一个固定的用,别临场换来换去。

5.3 PMOS 的符号:|VGS| 和 VGS 混着代

错在哪:公式里写 VGS,代入时给了负值,平方之后结果是正数,看上去没错,但和 NMOS 的曲线画在一张图上时,位置全乱。

为什么错:PMOS 的 VGS、VDS、VTH 都是负的,而教材的题目用绝对值 |VGS|、|VDS|、|VTH| 出题,两套符号混用就会出现「公式用的绝对值、判据用的代数值」。

怎么答对:一题之内只选一套。用绝对值就全程绝对值,包括判据;用代数值就全程代数值,包括阈值。题目里出现 |VGS| 这样的竖线,说明出题人已经替你选好了绝对值那套,跟着走,别自己再翻回去。

5.4 λ 与 L 的关系:把 λ ∝ 1/L 当成 λ = 1/L

错在哪:推导 gmro 时把 λ 直接写成 1/L,量纲对不上,最后得出个位数或者几十万的荒谬结果。

为什么错:λ 的量纲是 V⁻¹,L 的量纲是米,中间差一个比例常数 λ′,单位是伏·米。丢掉这个常数,数字当然不对。

怎么答对:写 λ = λ′/L,把 λ′ 当成常数保留到最后,只在画图时按比例取三个 L 值算相对大小。若题目没给 λ′,就只写比例关系,不要硬凑具体数值。

5.5 画图跳过过渡区:从饱和直接连到截止

错在哪:ID-VGS 曲线画成一条直线从阈值点拉到零,中间没有弯曲,或者线性区那段直接省略。

为什么错:平方律画的是一条抛物线,接近阈值时斜率趋近于零,所以曲线在断点处的切线与横轴相切,不是一条硬折线。画成直线,断点处的 gm 就等于算错了。

怎么答对:至少取五个点,包括阈值点、阈值加 0.1 V、饱和区中间、接近线性边界的点和线性区内一点。用代码跑一遍表,比手描准得多,也快得多。

6. 答题模板:读题、判区、算数、查量纲四步走

这套流程从第 2 章一直能用到后面几章的电路题,四步做完再动笔写答案,比想到哪写到哪省时间。

步骤动作停下来看什么常见返工点
第一步 读题圈出 W/L、ID 或 VGS、VDS、模型参数
第二步 判区算 VOV,比 VDS 与 VOV是不是全程单区判据方向写反
第三步 算数先算 Cox,再算 μCox(W/L),最后代目标式中间量量级对不对单位混用、平方漏项
第四步 查量纲gm 看 mS、ro 看 kΩ、gmro 无量纲结果是否落在合理区间漏乘 λ、λ′ 丢失

这套模板真正起作用的是第二步。多数人的顺序是「读题—算数—发现不对—回头判区—重算」,把判区提到前面,返工次数能降到接近零。第三步里「先算 Cox」也别省,Cox 是后面所有量的公共因子,先把它单独算出来写在一行,后面每次代公式直接引用,不会出现两处 μCox 取值不一致的低级错误。

至于押题方向,第 2 章的考查重心很稳定:给一组参数让你算三个工作点的电流、由电流反推 gm 和 ro、把 gmro 写成关于 ID 和 L 的表达式看趋势。这三类几乎必出,只要题干里出现『plot』和『as a function of』,脑子里就该自动切到「判区、分段、标断点」的模式。

我自己的习惯是每次动笔前先在草稿纸左上角写三个框:VOV、区、单位。第一次因为单位混用把一个 gmro 算成了六位数,交卷前五分钟才发现,从那以后我每次算完 gm 和 ro 都强制回看一遍这两个量级对不对,对了才往下走。这个动作花不到十秒,救回来的分数远不止十秒。希望帮到你。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询