简介:面向模拟IC初学者、考研复试与课程补修人群的拉扎维《模拟CMOS集成电路设计》课后习题详解,重点对应教材第二章器件物理与单级放大器基础。答案按题号逐题展开,包含NFET与PFET原理图说明、漏电流随|VGS|变化的表达式推导与曲线绘制、跨导和输出阻抗计算,以及本征增益gm·ro的完整求解,公式代入、单位换算与数值表格均保留,便于读者对照教材复盘手工推导、定位符号与参数取值上的易错点。资源包为1个PDF文件,约68.09MB,页面按章节和题号组织,适合课程作业核对、复试笔试演算训练与建立模拟IC入门知识框架。已有3460人学习下载,可作为器件分析与基础电路计算的配套答案册使用。
1. 一条曲线里藏着的四个参数
一道看起来只需要代入数字的课后题:给定 W/L = 50/0.5、|VDS| = 3 V,把 NFET 和 PFET 的漏电流画成 |VGS| 从 0 扫到 3 V 的函数。很多人做完就翻页了,这条曲线其实同时包含了模拟IC设计里最核心的四个量:曲线起翘的横坐标是阈值电压,抛物线段的曲率由 μCox(W/L) 决定,饱和段切线的斜率就是跨导 gm,而曲线右端那点微微上翘的“尾巴”斜率,反过来就是输出电阻 ro。换句话说,这道题在问的是同一件事的两面——你能否把大信号方程里的每个系数量纲,翻译成小信号参数。搞懂这条曲线怎么长出来的,比背十个公式有用得多。
2. 平方律模型:三个区间与转折点的由来
2.1 判据从来是电压差,不是某个电压的绝对值
刚接触 MOS 的人容易把 VGS 和 VDS 当成独立的两把尺子,分别去比对 VTH 和某个“饱和电压”。真实判据是两个差值:VGS − VTH 决定沟道里有没有反型层,这叫过驱动电压 Vov;VDS 与 Vov 的比值决定沟道在漏端还剩不剩得下来。于是三个区间的划分非常干脆——Vov ≤ 0 时器件截止,电流只剩亚阈值那一点点指数尾巴,工程手算直接记 0;VDS < Vov 时整条沟道都存在,电流随 VDS 近似线性增长,叫线性区或三极管区;VDS ≥ Vov 时漏端沟道被夹断,电流不再随 VDS 明显变化,叫饱和区。
提示:这里的“饱和”和双极型晶体管里的“饱和”含义几乎是反的。BJT 的饱和是管子被压到极限、两个结都正偏;MOS 的饱和恰恰是它作为放大器的正常工作区。这个词是历史遗留,初学时最容易在脑内串线。
课程里反复强调的 break point(转折点),就是 VDS = Vov 这条边界在 Id–VGS 平面上的投影。绕过它,Id 与 VGS 的关系从平方关系切换到含 VDS 的抛物线,斜率突变,所以图形上能看到明显的弯折。第 2 章第 4 题让以 VDS 为参数画一族曲线并标出转折点,本质是在考你:能不能一眼看出每一条曲线是在哪一点离开线性区的。
2.2 平方律不是假设出来的,是沿沟道积分出来的
把沟道看成一段电阻可变的导体,位置 x 处的反型层电荷面密度可以写成 Q(x) = −Cox[VGS − VTH − V(x)],其中 V(x) 是沟道电位从源端 0 爬到漏端 VDS 的那条曲线。漏电流是电荷以漂移速度通过沟道截面的通量,于是 Id = −W·μ·Q(x)·dV/dx。这条微分方程两边对 x 从 0 积到 L,右边对 V 从 0 积到 VDS,得到的就是那个经典表达式:
Id = μCox(W/L)[(VGS − VTH)·VDS − VDS²/2]
这是一个关于 VDS 的开口向下的抛物线,极大值出现在 VDS = VGS − VTH,代回去恰好等于 (1/2)μCox(W/L)·Vov²。器件不会真的沿着这条抛物线往下走——到达极大值之后沟道在漏端夹断,多出来的电压降落在夹断点到漏极之间的耗尽区上,电流被“钉”在极大值附近,这就是饱和区公式 Δ 的来历。
从这段推导能读出一个关键事实:饱和电流并不真的与 VDS 无关,只是“无关”得比较好。夹断点会随着 VDS 往源端方向缩,有效沟道长度从 L 变成 L − ΔL,而 ΔL 随 VDS 增大而增大,于是电流按 1/(L − ΔL) 缓慢上升。这个尾巴在第 3 章会被线性化成 λ,但它的物理出身就在这里,不是拟合出来的玄学系数。
2.3 把 W/L = 50/0.5 代进去:一份可复现的扫描
题面给的 |VDS| = 3 V 不是随便挑的。VGS 扫到 3 V 时 Vov 最大也就 2.3 V,永远小于 3 V,意味整段扫描除截止区外全部落在饱和区。曲线是一条干净的抛物线,中间不会有斜率突变——这一点如果没意识到,画图时把线性区分支也塞进去,图形就会莫名多出一段。
import numpy as np # 一组示意工艺参数,量纲统一到 SI,实际数值请以所用模型卡为准 mu_n_cox = 200e-6 # A/V^2,电子迁移率 x 单位面积栅氧电容 mu_p_cox = 80e-6 # A/V^2,空穴版本,约为电子的 0.4 倍 VTH_N = 0.7 # V,NFET 阈值 VTH_P = 0.8 # V,PFET 阈值,用正数表示 |VTH| LAM = 0.1 # 1/V,沟道长度调制系数 W_L = 50 / 0.5 # 无量纲,W 与 L 用同一单位即可,比值不受影响 def id_nmos(vgs, vds): vov = vgs - VTH_N if vov <= 0: # 截止区:没有沟道,电流为 0 return 0.0 if vds >= vov: # 饱和区:漏端夹断,含 λ 修正 return 0.5 * mu_n_cox * W_L * vov**2 * (1 + LAM * vds) return mu_n_cox * W_L * (vov * vds - 0.5 * vds**2) # 线性区:整条沟道存在 def id_pmos(vgs_abs, vds_abs): # PMOS 全用绝对值处理,符号问题留到画图时再统一 vov = vgs_abs - VTH_P if vov <= 0: return 0.0 if vds_abs >= vov: return 0.5 * mu_p_cox * W_L * vov**2 * (1 + LAM * vds_abs) return mu_p_cox * W_L * (vov * vds_abs - 0.5 * vds_abs**2) vgs = np.linspace(0, 3, 301) id_n = np.array([id_nmos(v, 3.0) for v in vgs]) id_p = np.array([id_pmos(v, 3.0) for v in vgs]) # 自检点:在 VGS = 3 V 处,两种器件的电流数量级应和 μCox 之比同阶(约 2.5 倍) print("Id_n(VGS=3) =", id_n[-1] * 1e3, "mA") print("Id_p(|VGS|=3) =", id_p[-1] * 1e3, "mA")代码里那三个参数需要单独说清楚。μnCox 是把迁移率和单位面积栅氧电容乘在一起的合并参数,所以它的量纲是 A/V²;W/L 严格来说要用同一单位约掉,只要不把 W 用 μm、L 用 nm 混着填,比值都不会错。λ 的单位是 1/V,乘上 VDS 之后无量纲,这一点在检查公式量纲时非常管用。至于函数里为什么要按 vov 和 vds 的大小关系分支,是因为平方律在两个区的解析式不同,写成一个式子会让线性区电流被高估。
想验证自己算得对不对,有个很省事的办法:在同一个工作点上用三种方式各算一次 gm,结果必须吻合。取上例 Vov = 0.8 V、W/L = 100、μnCox = 200 μA/V²,则 Id = 0.5 × 200e-6 × 100 × 0.64 = 6.4 mA,此时 gm 按 μnCox(W/L)Vov 算是 16 mS,按 sqrt(2μnCox(W/L)Id) 算也是 sqrt(2×200e-6×100×6.4e-3) = 16 mS,按 2Id/Vov 算仍是 16 mS。三个答案对得上,才说明代入的参数之间是自洽的。
3. 沟道长度调制与体效应:两个修正项各自修的是什么
3.1 λ 不是拟合参数,它来自夹断点的位移
上一章末尾提到,饱和后电流仍随 VDS 缓慢上升,因为有效沟道长度缩短了。严格写出来,Id ∝ 1/(L − ΔL),而 ΔL 与 (VDS − Vov) 的平方根近似成正比。这个平方根关系在手算时很难用,于是工程上做了一次线性化:把 1/(L − ΔL) 展开成 (1/L)(1 + ΔL/L),再把 ΔL/L 整体打包成一个与 VDS 成正比的量 λVDS。这样电流表达式就变成熟悉的 (1/2)μCox(W/L)Vov²(1 + λVDS)。
这个线性化的代价必须心里有数:λ 只在 VDS 不是特别大的时候才近似常数,而且它的数值天然与 1/L 成正比——因为 ΔL/L 的分母里就有 L。这就是“λ ∝ 1/L”这个结论的真正来源,它成立的前提是 ΔL 本身与 L 关系不大。很多题目直接甩一句“注意 λ ∝ 1/L”就让你推本征增益随 L 的变化,如果没搞清这个前提,后面的推导方向很容易做反。
输出电阻由定义直接对 VDS 求偏导取倒数:ro = [∂Id/∂VDS]⁻¹ = 1/(λId) 是忽略 VDS 项之后的简化版,严格版是 ro = (1/λ + VDS)/Id。两者差多少?λ = 0.1 /V、VDS = 3 V 时 λVDS = 0.3,简化版会低估 ro 约 23%。这个误差在答案里表现为“两个数字并存”,抄错一个就全盘皆输,第 5 章会专门再说。
3.2 体效应:VSB 抬高阈值,把曲线整体往右推
源极不接地时,源与衬底之间存在反偏电压 VSB,耗尽层变宽,栅极要先把更多电荷扫掉才能形成沟道,阈值电压因此升高。标准模型写成:
VTH = VTH0 + γ(√(2ΦF + VSB) − √(2ΦF))
γ 叫体效应系数,量纲是 V^0.5,物理上是耗尽层电荷随表面势变化的敏感度;2ΦF 是强反型所需的表面势,通常取 0.8 到 0.9 V 附近。以 γ = 0.45 V^0.5、2ΦF = 0.9 V、VTH0 = 0.7 V 为例,VSB 从 0 拉到 3 V 时,VTH 会从 0.7 V 抬到大约 1.16 V——多了将近半伏,在低电源电压下足以让一个本该导通的管子彻底关死。
在 Id–VGS 平面上,体效应的表现不是简单的水平平移。因为平方根关系,VSB 越大,同样的增量带来的 VTH 增量越小,曲线族在高 VGS 端会略微收拢。这个细节正是判断图画得对不对的关键检查点:如果你画出来的几条曲线是严格等间距平移的,那多半是偷懒按线性关系估的。
3.3 以 VDS 为参数和以 VBS 为参数,图形差别在哪
第 2 章第 4 题要求分别以 VDS 和 VBS 为参数画 Id–VGS 曲线族,这两张图的形状逻辑完全不同,混在一起就会画错。
以 VDS 为参数时,转折点之前的区域受 VDS 影响极大:VDS 很小时管子停在线性区,电流被压得很低,曲线在 Vov 附近才猛地追上来;VDS 一旦超过 Vov,饱和区的电流几乎重合,只在 λ 的量级上有细微分离。所以图的典型长相是“低 VGS 段散开、高 VGS 段挤成一束”。
以 VBS 为参数时,每条曲线的 VTH 不同,转折点横坐标各不相同,而斜率 μCox(W/L)Vov 在相同 VGS 下也会因为 Vov 被压缩而下降。图的典型长相是“整族曲线向右侧扇形展开”,并且在原点附近有个共同区域——VGS 低于所有 VTH 时全都是截止,电流为零。
4. 跨导的三种写法与本征增益:同一个器件,三种提问方式
4.1 gm 为什么有三种表达式,又为什么都对
跨导的定义只有一个:gm = ∂Id/∂VGS。在饱和区对平方律求偏导,立刻得到 gm = μCox(W/L)Vov。把 Vov 用 Id 反解出来代进去,得到 gm = √(2μCox(W/L)Id)。再把 Vov = 2Id/gm 代回第一种写法,得到 gm = 2Id/Vov。
三个式子数学上完全等价,工程含义却泾渭分明。第一种把 gm 与过驱动电压挂钩,适合分析“给定偏置电压”的电路,比如电流镜、差分对的输入摆幅估算。第二种把 gm 与电流挂钩,是设计时最常用的形式,因为它告诉你:想要更大 gm,要么加电流,要么加 W/L,两条路各有代价。第三种是 gm/ID 设计方法的地基——它说明同样的电流下,Vov 越小 gm 越大。这就是为什么低功耗设计会刻意把管子压在弱反型边缘,用几十毫伏的过驱动去换高 gm 效率,代价是速度、匹配和带宽全面恶化。
回到第 2 章第 2 题:给定 W/L = 50/0.5、|ID| = 0.5 mA,要求算 gm 和 ro。第一步必须是算 Cox,因为参数表给的是 μn 和 tox,而不是直接给 μnCox。Cox = εox/tox,εox ≈ 3.45×10⁻¹¹ F/m,tox 用纳米给的话记得转成米。算完 Cox 才能得到 μnCox,再代入 gm 的第二种表达式。这一步顺序错了,后面的数字全部作废。
4.2 ro 的近似边界,比想象中更容易翻车
前面提过严格式 ro = (1/λ + VDS)/Id 和简化式 ro = 1/(λId)。判断能不能用简化式的标准是 λVDS 是否远小于 1。用 λ = 0.1 /V 代入,VDS = 1 V 时误差 10%,VDS = 3 V 时误差 30%。教材答案常常把两个值都列出来,正是提醒读者这不是笔误,而是精度取舍。
对 PMOS 做同样的计算时,λ 通常比 NMOS 略大(空穴迁移率低、夹断区形貌不同),所以 PMOS 的 ro 一般略小,本征增益也更低。这个差别在单个管子分析里不起眼,但在两级放大器里会直接反映成增益的几十个百分点。
4.3 本征增益 gmro:把 ID 和 W/L 塞进去,看它长什么样
把 gm 的第二种写法和 ro = 1/(λId) 相乘,Id 神奇地对消掉一次:
gmro = √(2μCox(W/L)Id) / (λ·Id) = √(2μCox(W/L)) / (λ·√Id)
这条式子读起来信息量很大。它与 √Id 成反比:电流越大,本征增益越低,因为 gm 只按 √Id 涨,ro 却按 1/Id 掉。它与 √(W/L) 成正比:加大宽长比能提增益,但要占面积。它与 1/λ 成正比,而 λ ∝ 1/L,所以在保持 W/L 不变、把 L 和 W 同比例放大的前提下,本征增益与 L 成正比。
import numpy as np mu_n_cox, W_L, LAM0 = 200e-6, 100.0, 0.1 # LAM0 对应参考长度 L0 的 λ L0 = 0.5e-6 # 参考沟道长度,单位 m id_arr = np.logspace(-6, -3, 61) # 1 uA 到 1 mA # 情况一:W/L 固定,L 取 L0、2L0、3L0,λ 随 1/L 缩小 for k in (1, 2, 3): lam = LAM0 / k a = np.sqrt(2 * mu_n_cox * W_L) / (lam * np.sqrt(id_arr)) print(f"L = {k}*L0, 本征增益 @1mA = {a[-1]:.1f}") # 情况二:只固定 W,L 拉长时 W/L 同步缩小,结果趋势完全不同 for k in (1, 2, 3): lam, wl = LAM0 / k, W_L / k a = np.sqrt(2 * mu_n_cox * wl) / (lam * np.sqrt(id_arr)) print(f"仅固定 W, L = {k}*L0, 本征增益 @1mA = {a[-1]:.1f}")两段循环只差一个条件,结论却反向。第一种情况里本征增益随 L 线性增长,第二种情况里几乎不变甚至略降。第 2 章第 3 题“以 L 为参数画 gmro 对 Id 的曲线”之所以能得到 1:2:3 的三条曲线,前提正是 W/L 保持不变、W 与 L 同比例放大。这一点如果不写清,光看到题面那句 λ ∝ 1/L,很容易得出错误的增长规律。
画出来的曲线在双对数坐标下是三条斜率 −1/2 的平行直线,这一族直线就是工艺给出的增益天花板。想在电流不变的前提下把增益翻倍,只能把 L 拉长 2 倍;代价是 fT 按 1/L² 掉,面积翻倍,匹配变差。模拟设计里那些“增益不够就加长沟道”的老办法,代价全写在这张图上。
5. 避坑:五条容易踩在同一个坑里的经验
5.1 单位与符号
坑一:量纲不统一,结果差三个数量级。现象是算出来的 Id 明明是毫安级,结果写成 6.4 μA 或者 6.4 A。原因几乎总是 μnCox 用了 μA/V² 而电流公式要求 A/V²,或者 W/L 里 W 用 μm、L 用 nm 但没约掉。解决办法是全程用 SI 单位算完,最后一步再乘 10³ 转毫安;W/L 则一定保证分子分母同一单位,因为比值本身无量纲,混用只会把自己坑进去。
坑二:PMOS 的符号处理。现象是画出来的 PMOS 曲线跑到第四象限,或者电流出现负值。原因是习惯性地把 VGS 写成负电压往下代。稳妥做法是全程用绝对值 |VGS|、|VDS|、|VTH|,公式结构与 NMOS 完全一样,只在画图和写节点电压时统一加负号。上文的 id_pmos 函数就是这么写的,符号问题被隔离在一个地方,不会污染中间推导。
坑三:Cox 的单位换算。现象是 gm 算出来偏大或偏小整整一个数量级。Cox 常以 fF/μm² 给出,而公式里要的是 F/m²,1 fF/μm² 等于 10⁻³ F/m²。这个换算如果不熟,建议先在纸上写一遍 1 fF = 10⁻¹⁵ F、1 μm² = 10⁻¹² m²,比记结论可靠。
5.2 模型假设与边界
坑四:随手把 (1 + λVDS) 丢掉。现象是同一道题里 ro 出现两个不同的答案,或者本征增益和后面的增益预算对不上。原因是简化式 1/(λId) 只在 λVDS ≪ 1 时成立,而典型题目给的 VDS 就是 3 V,λ 取 0.1 时已经差 30%。解决办法是养成习惯:凡是碰 ro,先把严格式写出来,再判断能不能近似;只要 λVDS 超过 0.1,就老老实实用严格式,别为了省一行推导丢掉精度。
坑五:源漏互换时还在套原公式。现象是扫描 VX 从 0 到 VDD 时,电流曲线在某个点突然反向或者出现莫名其妙的平台。MOS 是结构对称的器件,谁当源取决于电位高低,而不是版图上标的那一端。当外部电压把原本的漏端压到比源端更低时,源漏角色对调,VGS 和 VDS 都要重新按新源极来算,W/L 不变但电流方向翻转。排查方法是先画出电位高低关系,写清楚“谁是源”,再代公式;一旦发现电流符号和预期反了,八成就是这个原因。
注意:体效应在源漏互换时会跟着一起变。源极换了位置,VSB 也跟着变,阈值电压会跳一下,曲线在互换点附近往往有个小折角,这不是算错了。
6. 手算到仿真之间:平方律能信到什么程度
平方律是一套长沟道、强反型、载流子速度未饱和假设下的模型,它的价值不在于精确复现硅片上的电流,而在于把设计变量之间的关系暴露出来。真正上机之后,偏差主要来自四个方向:迁移率随 VGS 增大而退化,导致实际电流比平方律预测的低;短沟道下速度饱和,Id 与 Vov 的关系从平方退化成近似线性;亚阈值区电流按指数变化,平方律直接归零,而低功耗电路常常就工作在那条尾巴上;漏致势垒降低(DIBL)让 VTH 随 VDS 漂移,等效于给 λ 又叠了一层。
以第一个偏差为例,可以做个粗略对照:
| 偏差来源 | 手算预测 | 仿真趋势 | 影响的设计指标 |
|---|---|---|---|
| 迁移率退化 | Id ∝ Vov² | 大 Vov 时指数降到 1.3 左右 | gm 被高估,增益预算偏乐观 |
| 速度饱和 | gm ∝ Vov | 大 Vov 时 gm 趋于常数 | 高过驱动下提 gm 效率骤降 |
| 亚阈值导通 | Vov < 0 时 Id = 0 | 指数尾,约 80 mV/dec | 关断漏电、低功耗偏置点 |
| DIBL | λ 为常数 | λ 随 VDS 增大 | ro 被高估,本征增益偏大 |
这张表最实际的用法,是判断手算结果该往哪个方向修。如果手算给出 gmro = 90,仿真出来只有 40,别急着怀疑自己算错了,先看看是不是 Vov 取太大、L 取太短——两个偏差源叠加,差两倍非常正常。
那份把第二章第 1 到第 5 题一步步拆开的解答,真正的用法不是对答案,而是对中间量。每道题的解答都把 Cox、μCox、Vov、gm、ro 逐个列出来,你只要拿自己的中间值和它比,就能在第一步就发现是单位错了还是公式用错,而不是等到最后结果差了三个数量级再回头找。血泪经验是:结果错的时候,九成的问题出在中间某一步的单位换算,而不是物理理解。
从那以后我每次碰到这类手算题,都强制走一遍固定流程:先写清三个区的判据,再确认源在哪一端,然后统一量纲算 Cox,最后用 gm 的三种写法互验一次。这套流程慢是慢,但从来没让我在同一个坑里栽第二次。希望帮到你。
本文还有配套的精品资源,点击获取