本章目录 25 节

← 返回课程首页

第 4 章 CMOS 反相器的动态特性与功耗

本章把输出节点先看成一个小电容:充电时输出升高,放电时输出降低。延迟、能量和功耗都从这幅简单图景开始。

1. 本章要解决的问题

第 3 章回答了反相器的输出最终会到达高电平还是低电平。真实输出却不能瞬间跳到电源轨:晶体管提供的电流有限,输出节点还要给晶体管、连线和后级输入的电容充放电。

本章围绕两个工程问题展开:一次逻辑翻转要等多久,以及连续翻转要消耗多少功率。我们将从输出节点的电荷变化出发,建立一阶 RC 模型,再把延迟、能量和功耗连接到负载、电源、频率、活动率和器件尺寸。

2. 与第 3 章的联系

第 3 章的 VTC 是静态曲线:在每个 \(V_{in}\) 下等待 \(V_{out}\) 稳定。现在把时间加入分析。输入跨过转换区后,上拉网络或下拉网络开始占优势,但输出节点仍需经过一个连续的充电或放电过程,才能到达新的稳定电平。

本章继续使用第 2 章的“导通晶体管具有有限电阻”近似,并使用第 3 章的 CMOS 反相器拓扑。新加入的核心状态量是输出节点储存的电荷。

3. 前置知识快速检查

  1. 输入为逻辑 0 和逻辑 1 时,反相器分别由哪只晶体管控制输出?
  2. 电容的电荷、电容值和两端电压满足什么关系?
  3. 为什么导通 MOSFET 不能在任意短的时间内提供无限大的电流?
  4. 第 3 章中的 VTC 横轴为什么不是时间?

若第 1 题不确定,先回看第 3 章图 3-1。第 2 题只需记住 \(Q=CV\):改变节点电压,就是改变节点上的电荷。后续推导会在使用时解释每个量。

4. 学习目标

完成本章后,你应能够:

5. 输出节点为什么像一个电容

从版图和器件结构看,反相器输出不是一个没有体积的理想点。连接到输出的导体和器件会共同形成一个等效负载电容 \(C_L\)。主要来源包括:

  1. 后级门输入电容:输出通常驱动后级 MOSFET 的栅极;栅电容和相关重叠电容要被充放电。
  2. 本级漏结与重叠电容:PMOS、NMOS 漏区连接到输出,漏—体结和栅漏重叠带来寄生电容。
  3. 互连电容:金属线与衬底、相邻金属线以及不同互连层之间存在电容。
  4. 外部负载:焊盘、封装、测试探头或芯片外连线可能带来远大于单个标准单元的负载。

一阶分析把这些贡献集中成一个连接在 \(V_{out}\)GND 之间的电容:

\[ C_L=C_{wire}+C_{diff}+\sum C_{in,next}+C_{external} \]

所有电容量的单位都是法拉(F)。片上数字电路中常用飞法(fF,\(10^{-15}\) F)表示单元级电容。这个集中电容模型保留了“需要多少电荷才能改变输出电压”,暂时忽略电容分布在连线不同位置的细节。

观察图 4-1 时,沿输出节点向外寻找每一项电容来源。图中的电容是等效表示,不是版图上真的放置了四个独立电容器。

反相器负载电容的来源

图 4-1 反相器输出负载电容来自本级寄生、互连、后级栅输入和外部负载

当输出从 0 升到 \(V_{DD}\) 时,负载电荷变化量为

\[ \Delta Q=C_LV_{DD} \]

\(\Delta Q\) 的单位是库仑(C)。晶体管电流满足 \(I=dQ/dt\),所以电流越大、负载电容越小,完成相同电压变化所需时间越短。

立即检查:同一个反相器从驱动 1 个同尺寸门改为驱动 8 个门,输出为何通常变慢?后级输入电容之和增大,输出必须搬运更多电荷。

6. 输出下降:NMOS 给电容放电

输入从低电平升到高电平后,PMOS 逐渐关断,NMOS 导通。原来充到接近 \(V_{DD}\)\(C_L\) 通过 NMOS 向 GND 放电,输出由高变低。

真实 NMOS 电流随 \(V_{out}\)\(V_{in}\) 变化。为了获得可手算的第一版模型,把导通 NMOS 替换为一个等效电阻 \(R_n\)。电路变成最基本的 RC 放电:

\[ V_{out}(t)=V_{DD}e^{-t/(R_nC_L)} \]

定义下降过程的时间常数

\[ \tau_f=R_nC_L \]

\(R_n\) 的单位是欧姆(Ω),\(C_L\) 的单位是法拉(F),因此 \(\tau_f\) 的单位是秒(s)。一个时间常数后,输出降到初值的 \(e^{-1}\approx36.8\%\);时间常数不是“完全放完”的时间,因为指数曲线只会逐渐接近 0。

7. 输出上升:PMOS 给电容充电

输入从高电平降到低电平后,NMOS 逐渐关断,PMOS 导通。电源通过 PMOS 给 \(C_L\) 充电,输出由低变高。把 PMOS 替换为等效电阻 \(R_p\),得到

\[ V_{out}(t)=V_{DD}\left(1-e^{-t/(R_pC_L)}\right) \]

上升过程的时间常数为

\[ \tau_r=R_pC_L \]

如果 \(R_p>R_n\),同一负载下上升通常比下降慢。增加 PMOS 宽度可以降低其等效电阻,但也会增大本级输入电容和部分输出寄生电容。

图 4-2 把放电、充电的等效通路和对应指数波形并列放置。读图时先找有效晶体管,再沿电流方向判断 \(C_L\) 的电荷增加还是减少。

反相器输出的充电与放电

图 4-2 输入翻转后,NMOS 通过等效电阻给负载放电,PMOS 通过等效电阻给负载充电(示意)

8. 上升时间和下降时间

波形不会在有限时间内数学上严格达到电源轨,因此工程上用两个百分比点定义转换时间:

对一阶 RC 波形,上升过程到达比例 \(x=V_{out}/V_{DD}\) 的时间为

\[ t=-R_pC_L\ln(1-x) \]

因此

\[ t_r=t_{90\%}-t_{10\%} =R_pC_L\ln 9 \approx2.2R_pC_L \]

同理,下降时间为

\[ t_f\approx2.2R_nC_L \]

这里的 \(t_r\)\(t_f\) 描述输出边沿本身有多陡,不是输入变化到输出响应之间等待了多久。

9. 传播延迟怎样定义

传播延迟(propagation delay)衡量输入变化传到输出的时间。通常以输入和输出各自跨过 50% 电源电压的时刻作为参考:

下标 HLLH 描述的是输出方向。反相器中,输入上升对应输出下降,因此测得 \(t_{pHL}\);输入下降对应输出上升,因此测得 \(t_{pLH}\)

若把输入视为瞬时阶跃,一阶 RC 响应到达 50% 的时间为

\[ t_{pHL}\approx\ln2\,R_nC_L\approx0.69R_nC_L \]

\[ t_{pLH}\approx\ln2\,R_pC_L\approx0.69R_pC_L \]

平均传播延迟常定义为

\[ t_p=\frac{t_{pHL}+t_{pLH}}{2} \]

所有时间量使用相同单位。图 4-3 同时标出了输入/输出 50% 参考点以及输出的 10%~90% 边沿,帮助区分“传播等待”和“输出变化持续时间”。

传播延迟与上升下降时间

图 4-3 \(t_{pHL}\)\(t_{pLH}\) 由输入和输出的 50% 点定义,\(t_r\)\(t_f\) 由输出的 10% 与 90% 点定义(示意)

真实输入也具有有限上升/下降时间。输入缓慢穿过反相器转换区时,驱动电流逐渐建立,而且 NMOS 与 PMOS 同时导通更久。标准单元的延迟因此同时依赖输入转换时间输出负载,不能只用一个固定 \(R_{eq}C_L\) 数字描述所有情况。

10. 一阶 RC 模型保留了什么

一阶模型把复杂晶体管电流压缩为一个等效电阻,准确保留三条最重要的趋势:

它忽略了 MOSFET 在转换过程中跨越饱和区和线性区、电流随端电压改变、输入边沿有限、米勒电容以及互连分布效应。工程库通过晶体管级仿真,在不同输入转换时间、输出负载和 PVT 条件下给出二维或多维延迟表。RC 公式用于建立直觉、手算数量级和检查工具结果趋势。

11. 扇出为何会影响速度

扇出(fan-out)描述一个输出所驱动的等效输入负载数量。若后级门相同且互连变化不大,增加扇出主要增加 \(\sum C_{in,next}\),因此增大 \(C_L\) 并延长延迟。

扇出不是纯粹的“能不能驱动”二元判断。同一个输出驱动更多门时,逻辑功能仍可能正确,但边沿变缓、传播延迟增加,甚至无法满足系统时序要求。

长连线或大负载通常不能简单依靠一个最小尺寸反相器直接驱动。工程上会插入缓冲器链,让驱动能力逐级增大。每增加一级也会带来自身延迟和功耗,因此需要在级数、尺寸、面积和负载之间折中。

12. 一次充放电需要多少能量

先考虑输出从 0 充到 \(V_{DD}\)。电源提供的总电荷为 \(C_LV_{DD}\),在固定电源电压下,电源输出的能量为

\[ E_{supply,0\rightarrow1}=V_{DD}\Delta Q=C_LV_{DD}^2 \]

充电完成后,电容中储存的能量为

\[ E_C=\frac{1}{2}C_LV_{DD}^2 \]

剩余的 \(\frac{1}{2}C_LV_{DD}^2\) 在充电通路中转化为热。输出随后从 1 放到 0 时,电容储存的 \(\frac{1}{2}C_LV_{DD}^2\) 通过 NMOS 消耗,理想情况下没有返回普通恒压电源。

因此,一个完整的 \(0\rightarrow1\rightarrow0\) 循环从电源取得并最终耗散的能量为

\[ E_{cycle}=C_LV_{DD}^2 \]

图 4-4 用能量流而不是只画电压波形:充电时电源送出 \(C_LV_{DD}^2\),一半暂存在电容;放电后这部分也转化为热。

CMOS负载一次充放电的能量流

图 4-4 负载电容完成一次 \(0\rightarrow1\rightarrow0\) 循环时的能量来源、暂存与耗散

13. 从单次能量得到动态功耗

功率是单位时间内消耗的能量。设时钟频率或统计参考频率为 \(f\),定义活动率 \(\alpha\) 为一个参考周期内平均发生的 \(0\rightarrow1\) 充电次数,则电容开关动态功耗为

\[ P_{sw}=\alpha C_LV_{DD}^2f \]

\(P_{sw}\) 的单位是瓦特(W);\(\alpha\) 无量纲;\(C_L\) 用 F,\(V_{DD}\) 用 V,\(f\) 用 Hz。

活动率的定义必须和公式配套。本章把 \(\alpha\) 定义为每周期的 \(0\rightarrow1\) 次数:

有些资料把活动率定义为每周期的所有边沿数,或使用不同统计窗口;此时公式中的系数也会改变。计算前先确认定义,不能把两个定义混用。

动态功耗公式给出四条直接趋势:

电源电压的平方关系使降压成为强有力的动态功耗手段,但降低电源也会削弱晶体管驱动能力并增加延迟。

14. 短路功耗来自哪里

输入在两个电源轨之间转换时,NMOS 和 PMOS 会有一段时间同时导通,形成从 V_DDGND 的直接电流通路。这部分平均功耗称为短路功耗(short-circuit power)。

短路功耗通常随以下因素增大:

输出负载也会间接影响短路能量,因为输出电压的变化会改变两只管的端电压。基础分析不使用一个跨工艺通用的短路功耗闭式公式,而是保留其物理路径,并在目标工艺模型下仿真或查库。

15. 静态功耗来自漏电

输入和输出稳定后,理想 CMOS 没有从 V_DDGND 的直流通路。真实器件存在亚阈值漏电、栅漏电、反偏结漏电等电流。若一个电路块的总平均漏电流为 \(I_{leak}\),静态功耗可写为

\[ P_{static}=I_{leak}V_{DD} \]

\(I_{leak}\) 的单位是安培(A)。漏电强烈依赖工艺、阈值选择、电源和温度;大型芯片即使没有逻辑翻转,也可能因为数量巨大的晶体管而具有可观静态功耗。

一个实用的功耗分解是

\[ P_{total}=P_{sw}+P_{sc}+P_{static} \]

其中 \(P_{sc}\) 是短路功耗。实际标准单元功耗模型还会记录单元内部节点的充放电能量;系统估算时需要遵循所用库和工具的功耗定义,避免把同一部分重复计入。

图 4-5 把三条物理路径分开,并列出各自最直接的控制因素。

CMOS功耗的三部分

图 4-5 电容开关、短路和漏电构成 CMOS 功耗的三条主要物理路径

16. 尺寸、延迟和功耗为何互相牵制

增大晶体管宽度通常提高驱动电流、降低等效导通电阻,因此在外部负载占主导时可以减小延迟。与此同时,尺寸增大会增加本级栅电容、扩散电容和漏电:

若把一条路径上的所有门同时任意放大,每一级看到的后级栅电容也随之增加,速度收益会逐渐减弱。尺寸设计的核心是把驱动能力放在真正需要的位置,并让各级负载比例合理。

电源电压也形成明显权衡:提高 \(V_{DD}\) 通常增强驱动、减小延迟,却按平方提高电容开关功耗,并可能加重可靠性压力;降低 \(V_{DD}\) 节省动态能量,却使延迟增大。数字 IC 设计很少只优化一个数字。

17. PVT、输入转换时间与实际表征

第 3 章介绍的 PVT 同样作用于动态指标:

标准单元库不会只给一个“反相器延迟”。常见表征以输入转换时间和输出负载为两个自变量,在多个 PVT 条件下记录 \(t_{pLH}\)\(t_{pHL}\)、输出转换时间以及功耗。使用时需要查对应输入边沿、负载和工作角,而不是把典型条件下的单点数字套到所有路径。

18. 完整例题

例题 1:用 RC 模型估算反相器延迟

某反相器的一阶等效参数为 \(R_n=4.0\ \text{k}\Omega\)\(R_p=6.0\ \text{k}\Omega\),负载 \(C_L=20\ \text{fF}\)。输入近似为阶跃,估算 \(t_{pHL}\)\(t_{pLH}\)、平均传播延迟、\(t_f\)\(t_r\)

步骤 1:统一单位。

\[ R_nC_L=(4.0\times10^3)(20\times10^{-15})=80\ \text{ps} \]

\[ R_pC_L=(6.0\times10^3)(20\times10^{-15})=120\ \text{ps} \]

步骤 2:计算 50% 传播延迟。

\[ t_{pHL}\approx0.69R_nC_L=55.2\ \text{ps} \]

\[ t_{pLH}\approx0.69R_pC_L=82.8\ \text{ps} \]

\[ t_p=\frac{55.2+82.8}{2}=69.0\ \text{ps} \]

步骤 3:计算 10%~90% 边沿时间。

\[ t_f\approx2.2R_nC_L=176\ \text{ps} \]

\[ t_r\approx2.2R_pC_L=264\ \text{ps} \]

结果检查\(R_p>R_n\),因此输出上升比下降慢;10%~90% 时间也应大于到达 50% 的时间。

变式:若负载增至 40 fF,在等效电阻不变的一阶模型中,以上五个时间全部加倍。

例题 2:计算电容开关动态功耗

某节点 \(C_L=25\ \text{fF}\)\(V_{DD}=1.0\ \text{V}\),参考频率 \(f=500\ \text{MHz}\)。平均每 5 个周期发生一次 \(0\rightarrow1\) 充电,因此 \(\alpha=0.2\)。求电容开关功耗。

\[ P_{sw}=\alpha C_LV_{DD}^2f \]

\[ =0.2\times25\times10^{-15}\times1.0^2\times500\times10^6 =2.5\times10^{-6}\ \text{W} \]

所以

\[ P_{sw}=2.5\ \mu\text{W} \]

结果检查:若每周期都充电,功耗应为 12.5 μW;活动率 0.2 把它降为五分之一。

变式:若电源降至 0.8 V,其他条件不变,功耗变为 \(2.5\times0.8^2=1.6\ \mu\text{W}\),是原来的 64%。

例题 3:合并三类功耗

某电路块的电容开关功耗为 0.30 mW,短路功耗为 0.04 mW;在 \(V_{DD}=1.0\) V 时测得平均漏电流 \(I_{leak}=20\ \mu\text{A}\)。求总功耗及三部分占比。

先计算静态功耗:

\[ P_{static}=I_{leak}V_{DD}=20\ \mu\text{A}\times1.0\ \text{V}=0.020\ \text{mW} \]

总功耗为

\[ P_{total}=0.30+0.04+0.020=0.36\ \text{mW} \]

三部分占比分别为

\[ \frac{0.30}{0.36}=83.3\%,\qquad \frac{0.04}{0.36}=11.1\%,\qquad \frac{0.020}{0.36}=5.6\% \]

解释:该工作条件下电容开关功耗占主导。改变温度、频率或活动率后,占比可能发生明显变化。

变式:若电路停止翻转而漏电条件不变,\(P_{sw}\) 和与切换相关的 \(P_{sc}\) 接近零,仍保留约 0.020 mW 静态功耗。

19. 常见误区与反例

误区 1:传播延迟就是上升时间

传播延迟比较输入与输出的参考时刻;上升/下降时间只描述一个边沿从 10% 到 90% 或从 90% 到 10% 的持续时间。它们相关,但定义不同。

误区 2:输出达到 50% 时,电容已经充入一半能量

电容能量与电压平方成正比。\(V=0.5V_{DD}\) 时,储能为最终值的 \((0.5)^2=25\%\),不是 50%。

误区 3:只有输出从 1 变 0 时才消耗能量

普通 CMOS 电容开关能量来自 0→1 充电时的电源。随后 1→0 时,电容中储存的能量在下拉通路中耗散。完整循环从电源取得 \(C_LV_{DD}^2\)

误区 4:静态 CMOS 功耗等于零

理想开关模型在稳定状态没有直流通路,真实 MOSFET 仍有多种漏电。晶体管数量大、温度高或阈值较低时,静态功耗可能不可忽略。

误区 5:频率翻倍,所有功耗都严格翻倍

电容开关功耗在活动率和其他条件不变时与频率成正比。静态功耗不由频率直接决定,温升还可能通过漏电产生间接变化。

误区 6:把门做得越大,整条路径一定越快

更大的门通常降低自身输出电阻,却增加前级负载和寄生电容。尺寸必须结合前后级共同优化。

误区 7:扇出只表示逻辑连接数量

扇出对应实际输入电容。连接数量相同但后级尺寸、互连长度不同,负载和延迟也可能不同。

20. 工程中的实际意义

时序分析把每一级门的输入转换时间和输出负载映射为延迟,再沿组合路径累加,判断数据能否在要求的时间内到达。功耗分析则统计各节点活动率、等效电容、内部能量和漏电。第 14 章会把路径延迟放入时钟周期约束,第 21 章会介绍静态时序分析如何系统处理这些路径。

版图改变互连电阻和电容,所以同一逻辑网表在布局布线前后的延迟并不相同。标准单元尺寸、缓冲器插入、扇出控制和连线长度管理,都是把本章规律用于芯片实现的具体方式。

21. 本章知识链

输出节点连接器件、互连和后级输入
                 ↓ 汇总
              负载电容 CL
                 ↓ 有限驱动电流
      PMOS 充电 ← 输出节点 → NMOS 放电
                 ↓ 一阶近似
          Req × CL 决定时间尺度
                 ↓ 波形定义
       tr、tf、tpLH、tpHL、tp
                 ↓ 每次搬运电荷
           Ecycle = CL·VDD²
                 ↓ 统计切换次数
        Psw = α·CL·VDD²·f
                 ↓ 加入真实器件
          短路功耗 + 静态功耗

22. 本章小结

23. 练习

23.1 基础题

  1. 列出反相器输出负载电容的四类主要来源。
  2. 输入由低变高时,哪只管给负载充电或放电?输出向哪个电源轨变化?
  3. 分别说明 \(t_r\)\(t_f\)\(t_{pLH}\)\(t_{pHL}\) 的定义。
  4. 为什么时间常数 \(R_{eq}C_L\) 不是输出“完全到达”电源轨的时间?
  5. 写出本章活动率 \(\alpha\) 的定义。

23.2 计算与分析题

  1. 某下降通路 \(R_n=5\ \text{k}\Omega\)\(C_L=30\ \text{fF}\)。估算 \(t_{pHL}\)\(t_f\)
  2. 某上升通路 \(R_p=8\ \text{k}\Omega\)\(C_L=15\ \text{fF}\)。估算 \(t_{pLH}\)\(t_r\)
  3. 某节点 \(C_L=40\ \text{fF}\)\(V_{DD}=0.9\ \text{V}\)\(f=250\ \text{MHz}\)\(\alpha=0.25\)。估算 \(P_{sw}\)
  4. 保持第 8 题其他条件不变,将 \(V_{DD}\) 从 0.9 V 降到 0.7 V。新的动态功耗是原来的多少?
  5. 一个节点从 0 充到 1.2 V,\(C_L=10\ \text{fF}\)。求电源提供的能量、电容最终储能和充电通路耗散能量。
  6. 某电路块在 1.0 V 下的漏电流为 80 μA,开关功耗为 1.5 mW,短路功耗为 0.1 mW。求静态功耗和总功耗。
  7. 两个反相器具有相同 \(R_n\)。A 驱动 10 fF,B 驱动 50 fF。用一阶模型比较二者的 \(t_{pHL}\),并解释这不代表真实延迟一定严格为五倍的原因。

23.3 综合题

  1. 某设计者为缩短关键节点延迟,把驱动反相器宽度扩大 4 倍。沿“本级输出电阻—本级寄生—前级负载—动态功耗—漏电”五个方面分析收益与代价,并说明还需要哪些信息才能判断整体是否更优。
展开查看练习答案
  1. 后级门输入电容、本级漏结与重叠寄生、互连电容、外部负载。
  2. 输入由低变高时 PMOS 关断、NMOS 导通,\(C_L\) 经 NMOS 向 GND 放电,输出由高变低。
  3. \(t_r\) 是输出从 10% 上升到 90% 的时间;\(t_f\) 是输出从 90% 下降到 10% 的时间;\(t_{pLH}\) 是输入 50% 点到输出低→高跨越 50% 点的时间;\(t_{pHL}\) 是输入 50% 点到输出高→低跨越 50% 点的时间。
  4. 一阶 RC 波形按指数逐渐接近终值,在有限时间内不会数学上严格等于终值。\(R_{eq}C_L\) 表示指数变化的基本时间尺度。
  5. \(\alpha\) 是一个参考周期内平均发生的 \(0\rightarrow1\) 充电次数,无量纲。
  6. \(R_nC_L=(5\times10^3)(30\times10^{-15})=150\) ps。\(t_{pHL}\approx0.69\times150=103.5\) ps;\(t_f\approx2.2\times150=330\) ps。
  7. \(R_pC_L=(8\times10^3)(15\times10^{-15})=120\) ps。\(t_{pLH}\approx82.8\) ps;\(t_r\approx264\) ps。
  8. \(P_{sw}=0.25\times40\times10^{-15}\times0.9^2\times250\times10^6=2.025\times10^{-6}\) W,即 2.025 μW。
  9. 比值只由电压平方决定:\((0.7/0.9)^2=0.6049\),约为原来的 60.5%。新的功耗约为 \(2.025\times0.6049=1.225\) μW。
  10. \(E_{supply}=C_LV_{DD}^2=10\times10^{-15}\times1.2^2=14.4\) fJ。电容最终储能与充电通路耗散能量各为 7.2 fJ。
  11. \(P_{static}=80\ \mu\text{A}\times1.0\ \text{V}=80\ \mu\text{W}=0.08\) mW。\(P_{total}=1.5+0.1+0.08=1.68\) mW。
  12. 一阶模型中 \(t_{pHL}\propto C_L\),所以 B 约为 A 的 5 倍。真实电路的等效电阻随电压变化,输入边沿可能不同,负载包含本级寄生和分布互连,因此比例未必严格等于 5。
  13. 宽度扩大通常降低本级输出电阻,使其驱动外部负载更快;同时本级扩散电容增加,会抵消部分收益。本级栅电容约随宽度增加,使前一级更慢并增加前级切换能量。本级及其驱动网络的动态功耗上升,晶体管数量等效宽度增加也通常提高漏电。判断整体收益还需要外部负载、前级驱动能力、输入转换时间、各级寄生、PVT、时序目标、活动率以及功耗/面积约束。

24. 自测清单

25. 下一章衔接

反相器只有一只 PMOS 和一只 NMOS。要实现 NAND、NOR 以及更复杂的逻辑函数,需要把多只晶体管组成互补的上拉网络和下拉网络。串联晶体管会增大等效电阻,并联和器件尺寸会改变输入与输出电容,因此第 5 章在构造静态 CMOS 逻辑门时,也会继续使用本章的延迟与负载直觉。