逻辑门与晶体管直觉:从真值表到 CMOS 开关
更新时间:2026-09-10。本文是「集成电路大类 · 芯片设计」**入门层(beginner)**数字逻辑基础第二篇。上承 数制与编码,下接 布尔代数与逻辑化简。
本文要回答的问题
- 七种基本逻辑门各自的真值表与符号是什么?与非/或非为什么叫"通用门"?
- 正逻辑和负逻辑是什么约定,为什么硬件里"低有效"信号那么常见?
- CMOS 反相器为什么只用两个晶体管就能反相?上拉 PMOS、下拉 NMOS 怎么像开关一样工作?
- 为什么静态 CMOS 稳态几乎不耗电,只在翻转瞬间耗电(动态功耗的根源)?
- 综合后网表里的 NAND2/AOI 这些 cell 名字代表什么?
一、七种基本逻辑门
门(gate)是输入若干比特、输出一个布尔函数的最小电路。单输入的非门(NOT,反相器)Y = Ā,0 进 1 出。两输入常用门:
| 名称 | 表达式 | A B=00 | 01 | 10 | 11 | 一句话 |
|---|---|---|---|---|---|---|
| 与 AND | Y=A·B | 0 | 0 | 0 | 1 | 全 1 才 1 |
| 或 OR | Y=A+B | 0 | 1 | 1 | 1 | 有 1 就 1 |
| 与非 NAND | Y=¬(A·B) | 1 | 1 | 1 | 0 | 与后取反 |
| 或非 NOR | Y=¬(A+B) | 1 | 0 | 0 | 0 | 或后取反 |
| 异或 XOR | Y=A⊕B | 0 | 1 | 1 | 0 | 不同才 1 |
| 同或 XNOR | Y=¬(A⊕B) | 1 | 0 | 0 | 1 | 相同才 1(异或非) |
异或尤其重要:它是"不等比较器",A⊕B=1 当且仅当 A、B 不同——加法器的和位、奇偶校验、比较器都靠它(见 加法器与算术电路)。任意 n 输入门都是两输入情形的自然推广。
通用门(universal gate):仅用 NAND(或仅用 NOR)就能搭出 NOT/AND/OR,进而搭出任意布尔函数。例如把 NAND 两输入短接当 NOT(¬(A·A)=Ā),NAND 后再跟一个 NAND 当 NOT 就得到 AND,AND 和 NOT 组合又可得 OR(由德摩根律 A+B=¬(Ā·B̄))。这就是为什么早期工艺和很多标准单元库以 NAND/NOR 为基底——用一类晶体管结构就能覆盖全部逻辑。
二、正逻辑、负逻辑与"低有效"
约定高电平=1、低电平=0 叫正逻辑,反之叫负逻辑。同一组物理电平,换个约定,AND 门就可能当 OR 用(这正是德摩根律的物理体现)。
工程里大量信号是低有效(active-low):名字加 _n/_L/上划线(如 rst_n、cs_n、oe_n),表示"为 0 时才有效"。复位、片选、输出使能偏爱低有效有历史和电路原因(如开漏/线与、上电默认态)。读图和写 RTL 时第一件事就是确认极性:if (!rst_n) 表示"复位有效"。混淆有效电平是硬件新手最常见的低级 bug 之一(见 时钟与复位)。
三、晶体管即开关:CMOS 反相器
把门再剖开一层,是 MOS 晶体管。先把它当成受栅极电压控制的开关:
- NMOS:栅极为高(1)时导通,把源漏两端接通;栅极低时断开。NMOS 擅长传 0(强下拉)。
- PMOS:栅极为低(0)时导通(输入上常画小圆圈表示反相);PMOS 擅长传 1(强上拉)。
CMOS 反相器由一个 PMOS(上拉,接电源 VDD)和一个 NMOS(下拉,接地 GND)串联组成,两栅极连一起当输入 A,中间节点当输出 Y:
- A=0:PMOS 导通、NMOS 截止 → Y 被上拉到 VDD = 1。
- A=1:PMOS 截止、NMOS 导通 → Y 被下拉到 GND = 0。
关键在于:任何稳态下,上下两个网络恰好一个导通、一个截止,输出要么实接 VDD 要么实接 GND,绝不会同时接两者(那会造成电源到地直通短路),也不会都悬空。这一对"互补开关"就是 CMOS(Complementary MOS,互补 MOS)名字的由来。
四、从反相器到与非/或非:串联是与、并联是或
记住一条构造规律——下拉网络(NMOS)里:串联 = 与,并联 = 或;上拉网络(PMOS)与之对偶(并/串互换):
- NAND2:两个 NMOS 串联(只有 A、B 都为 1,通路才接通把 Y 拉低 ⇔
Y=¬(A·B)),两个 PMOS 并联(A 或 B 有一个 0 就把 Y 拉高)。 - NOR2:两个 NMOS 并联(A 或 B 有一个 1 就拉低 ⇔
Y=¬(A+B)),两个 PMOS 串联。
因为 NMOS 串联天然实现"与",NAND 往往比 AND 更省晶体管(AND = NAND + 反相器),这也是工艺库以 NAND/NOR 为基础的物理原因。
更复杂的逻辑直接做成复合门(compound gate),一个 CMOS 单元实现一串表达式:
- AOI(And-Or-Invert,与或非):如
Y = ¬(A·B + C·D),下拉是两组串联再并联。 - OAI(Or-And-Invert,或与非):如
Y = ¬((A+B)·(C+D))。
复合门比"先 AND 再 OR 再 NOT"门数更少、延迟更短,是综合器优化面积/时序的常用积木。
五、功耗与延迟的物理直觉
为什么静态 CMOS 稳态几乎不耗电? 稳态时上拉、下拉网络一个导通一个截止,VDD 到 GND 之间没有直流通路,理论电流为零,只有极小的漏电流(先进工艺漏电变大,另见 低功耗设计入门)。
那电耗在哪?耗在翻转瞬间。 输出节点和连线上有寄生电容 C,输出从 0→1 时 PMOS 导通给 C 充电、1→0 时 NMOS 导通让 C 放电,每次充电从电源取走约 ½CV² 的能量。翻转越频繁(活动率 α 越高)、电容越大、电压越高、频率越快,动态功耗越大,即经典公式:
P_dynamic = α · C · V² · f这一条公式串起了降频、降压、降低翻转率(时钟门控)、减小电容(先进工艺/小单元)等全部低功耗手段,是 低功耗域 的总纲。
延迟来自晶体管导通电阻对电容充放电需要的时间。门不是瞬时的——输入变了,输出要经过传播延迟(propagation delay, t_pd)才稳定。多级门串联,延迟逐级累加;最长的那条链就是决定时钟频率的关键路径,这在 加法器进位链 和 STA 中会反复出现。
六、只用一种门:NAND 通用性的完整构造
"与非门是通用门"不是一句口号,可以动手验证:只要有足够多的二输入 NAND,就能拼出任意布尔函数。三个基本变换如下(用 ↑ 表示 NAND,A↑B = ¬(A·B)):
| 想要 | 只用 NAND 的接法 | 推导 |
|---|---|---|
| 非门 NOT | A↑A | ¬(A·A)=¬A |
| 与门 AND | (A↑B)↑(A↑B) | 先 NAND 再整体取反 |
| 或门 OR | (A↑A)↑(B↑B) | 德摩根 A+B=¬(¬A·¬B) |
有了 NOT/AND/OR,任何真值表都能先写成"积之和"(见 布尔代数与卡诺图),再逐级替换成 NAND,因此 NAND 单独构成完备集。NOR 同理(A↓A=¬A,¬A↓¬B=A·B)。
这个事实有真实工程后果:① 早期掩膜工艺只需要把一种结构做精做快;② 标准单元库里 NAND/NOR 的晶体管数天然比 AND/OR 少(AND 还要再加一级反相器),综合器倾向把逻辑往 NAND 上映射;③ 面试里"用 2 输入 NAND 实现异或"考的就是这套替换(XOR 需 4 个 NAND)。顺带记住几个多输入门:NAND3/NOR3 直接在下拉网络再串/并一个管子即可,但输入数(扇入)不能无限加——串联 NMOS 越多、导通电阻越大、门越慢,所以工艺库一般只做到 4 输入,更宽的逻辑靠多级门搭。
七、电压传输曲线与噪声容限:0 和 1 不是一个点,而是一片区间
前面把电平简化成"接近 VDD 是 1、接近 GND 是 0"。更准确的描述是反相器的电压传输特性曲线(VTC):画输入电压从 0 扫到 VDD 时输出电压的变化,它是一条从 VDD 附近陡降到 0 附近的反 S 形曲线,中间那段很陡的过渡区对应"逻辑不确定"。
工程上定义两个阈值,把连续电压切成三段:
- VIL / VIH:能被可靠当成 0 / 1 的输入电平边界;
- VOL / VOH:输出低 / 高电平时实际能达到的电平(理想是 0 和 VDD,实际因为导通电阻略有偏差);
- 低电平噪声容限 NM_L = VIL − VOL,高电平噪声容限 NM_H = VOH − VIH。
含义是:前一级输出 0(最高到 VOL),在线路上被噪声抬高只要不超过 VIL,后一级仍判 0,能容忍的噪声幅度就是 NM_L;高电平对称。两级门之间只要噪声/压降落在容限内,0/1 就不会被误读。数字信号之所以能长链传递、逐级"再生"回干净的 0/1(每过一级反相器,劣化的电平又被拉回轨电压),靠的正是这个容限——这是数字相对模拟最本质的可靠性来源,呼应 数字、模拟与混合信号 里"离散换来可靠"的论断。
八、传输门、传输管与三态门:不只是上拉下拉
标准 CMOS 门靠"上拉网络接 VDD、下拉网络接 GND"驱动输出,但还有两类经常在网表里出现的开关结构:
传输门(transmission gate,TG):把一个 NMOS 和一个 PMOS 并联、栅极接互补使能,构成一个受控的"理想开关"。单独 NMOS 传 1 会有阈值损失(传不到满 VDD)、单独 PMOS 传 0 不到底,两者并联正好互补,导通时 0 和 1 都能满幅通过。MUX、锁存器内部、模拟开关都大量用传输门。
传输管逻辑(pass-transistor):直接用串联/并联的 NMOS 当开关网络传信号,省晶体管,XOR 用传输管只要很少几个管就能实现(这是 XOR 在电路上比 AND 贵但没贵太多的原因)。代价是输出高电平有阈值损失,通常要在输出端加一个"保持反相器/恢复管"把电平补满。
三态门(tristate / 高阻态):在普通缓冲/反相器上加一个使能 EN,EN 无效时上拉 PMOS 和下拉 NMOS 同时关断,输出既不接 VDD 也不接 GND,呈高阻(Z),相当于"这个门从总线上断开"。
// 三态缓冲的 RTL 模型:en=0 时输出高阻 z
assign data_bus = en ? drv_data : 8'bz;三态是**总线(bus)**的基础:多个驱动源挂同一根线,靠"同一时刻只允许一个使能"分时复用,片选/仲裁就是保证不出现两个驱动同时使能(否则一个拉 1 一个拉 0 会形成"打架"的大电流,叫 contention)。现代片内标准单元设计更常用 MUX 而不是片内三态总线(避免打架和布线问题),但芯片引脚、老式数据总线、I/O pad 上三态无处不在(见 芯片引脚与 IO、FIFO 与仲裁)。
九、扇入、扇出与驱动强度:为什么门多了会变慢
- 扇入(fan-in):一个门的输入个数。扇入越大,所需串/并管子越多,串联路径电阻增大、输入电容也增大,所以工艺库里很少见到超过 4 输入的门,宽 AND/OR 会被综合器拆成多级。
- 扇出(fan-out):一个门的输出要驱动多少个下级输入。每个下级栅极都对前级呈现一个输入电容,扇出越大,负载电容 C 越大,前级对这个电容充放电越慢,延迟越大(回想
t ≈ R·C)。
工程上用逻辑努力(logical effort)这类方法估算"一级门推多少负载最合适、该插几级反相器缓冲"。实践中你最常做的决定是选驱动强度:同一个逻辑功能有 X1/X2/X4/X8 多个版本,大驱动(更宽的管子、更小的导通电阻、更大的输入电容)能推动重负载但自己更占面积、前级更累。典型场景是时钟树末端、长互连线、I/O、以及大位宽数据通路的使能信号——它们要驱动成百上千个负载,必须逐级用缓冲器(buffer,两个反相器)放大,这就是 时钟树与复位网络 里 CTS 要解决的物理问题。
开漏/线与(open-drain / wired-AND):一类特殊输出只保留下拉 NMOS、不接上拉(上拉由外部电阻或别的器件提供)。多个开漏输出接同一根线,任何一个拉低,线就为低——天然实现"线与",I²C、中断聚合、多主仲裁都靠它,配合低有效信号尤其自然。这也解释了第二节里"低有效为何常见"的物理根源。
十、工艺角、温度与电压:同一个门为何有快有慢
同一个反相器,在不同制造批次、温度、电源电压下延迟差别可观。数字实现时用**工艺角(process corner)**框住这种离散,给 MOS 管的速度取极端组合,常见四角/五角:
- FF(Fast-Fast):NMOS、PMOS 都快,延迟最小,但漏电最大、最容易出现保持时间违例;
- SS(Slow-Slow):都慢,延迟最大,是建立时间收敛最难的角;
- TT:典型-典型,标称工况;
- FS / SF:一快一慢,检查两类管严重不对称时的问题。
再叠加温度(通常升温使载流子迁移率下降、门变慢,但低压下又有反常的温度反转)和电压(降压显著增大延迟,约与电压成强非线性关系),STA 就要在多个 PVT(Process/Voltage/Temperature)角下分别验证:SS + 低压 + 高温保证"最慢也能跑在目标频率"(setup),FF + 高压 + 低温保证"最快时数据也不会冲过头"(hold)。这些 .lib 库里每个 cell 在每个角都有一套时序弧数据,这就是 SDC 约束 与多角多模(MCMM)时序收敛面对的原料。
亚阈值与阈值:MOS 不是理想开关,栅压超过阈值电压 Vth才充分导通。HVT(高 Vth)管漏电小但慢,LVT(低 Vth)管快但漏电大——库名后缀 HVT/LVT/RVT 就是这个权衡,低功耗设计在非关键路径塞 HVT、关键路径换 LVT(见 低功耗设计与 UPF)。
十一、一张图把门、开关、电气特性串起来
十二、漏电流与动态功耗再深入:先进工艺为什么"发烫"
第五节给了动态功耗公式 P=αCV²f,这里补上它在现代芯片上的另一半——静态漏电。理论上稳态 CMOS 没有直流通路,但纳米工艺下 MOS 关不彻底:栅氧薄到电子可隧穿、沟道在阈值以下仍有亚阈值电流,于是"关断"的晶体管也在持续漏电。结果是在先进节点,漏电功耗可占到总功耗的 30%~50%,芯片不干活(没时钟翻转)也在发热耗电。这带来几个工程后果:
- 电源门控(power gating):彻底不用的模块,不是停时钟(停时钟只消动态功耗),而是用电源开关管切掉供电,连漏电一起省,代价是要保存/恢复状态(见 低功耗设计与 UPF)。
- 多阈值库 HVT/LVT:第十节讲过,非关键路径用高阈值管压漏电、关键路径用低阈值管换速度,综合器按 slack 在每一级上做选择。
- 电压/频率调节(DVFS):动态功耗对电压是平方关系,降压收益极大,但降压会让门变慢,所以必须和降频配套——负载轻时跑低频低压,既满足性能又省电。
- 时钟门控(clock gating):时序逻辑即使输入不变,时钟沿仍让触发器内部充放电,用 ICG 单元在模块空闲时关掉时钟翻转,直接降低 α,是性价比最高的低功耗手段。
毛刺也耗电:组合逻辑在输入跳变、输出稳定前可能翻转好几次(冒险,见 竞争与冒险),每次翻转都在对电容充放电,所以消除毛刺不仅为逻辑正确、也省功耗。输入排序还能降活动率:让变化频繁的信号进逻辑门的"晚到/靠近输出"端,可减少内部节点无谓翻转,综合器有低功耗优化选项做这件事。至此 α(门控/降翻转)、C(小单元/先进工艺)、V(降压/电源门控)、f(降频)四个旋钮都有了物理对应。
十三、工程落点:网表、cell 与时序弧
综合后 RTL 变成一张门级网表(netlist),里面实例化的就是工艺库里命名规整的标准单元(standard cell)。常见命名约定:
| 名字 | 含义 |
|---|---|
INV / NOT | 反相器 |
NAND2/NAND3、NOR2 | 2/3 输入与非、2 输入或非 |
AND2、OR2、XOR2 | 基本门 |
AOI21/OAI22 | 复合门(数字编码输入结构) |
DFF/DFFR/DLH | D 触发器(带复位)、D 锁存器 |
MUX2、BUF、TIE | 二选一、缓冲器、常 0/常 1 |
名字后缀常标驱动强度(X1/X2/X4,越大可驱动越重负载、延迟越小但面积越大)和阈值类型(HVT 慢而省电 / LVT 快而漏电,多阈值库用于 PPA 权衡)。工艺库(.lib/liberty)为每个 cell 记录时序弧(timing arc)——从某输入到输出的传播延迟与功耗,STA 工具正是沿这些弧累加路径延迟(见 静态时序分析入门、逻辑综合入门)。
十四、学会读标准单元数据手册:一个 NAND2 的全部参数
前面讲的延迟、功耗、扇入扇出,在真实工程里都不是用文字描述,而是写在标准单元库(工艺厂给的 .lib 文件)的一张张表里。会读这张"菜单",就打通了从原理到综合/STA 的最后一公里。以最普通的两输入与非门(NAND2_X1)为例,数据手册里通常有这些信息:
- 面积(area):以库的归一化单位给出,NAND2 往往是面积最小的二输入门之一,所以它和 NOR2 常被当作面积"计价单位"(等价门数 gate count)。
- 漏电流(leakage_power):分别给出输入取 00、01、10、11 四种状态下的漏电——差异可能很大,因为不同输入把内部堆栈管切成不同的导通组合;低功耗分析要按信号处于各状态的概率加权,而不是取一个固定值。
- 引脚电容(pin capacitance):每个输入脚看到的栅电容,它就是前级的负载。负载越重,前级输出沿越慢、延迟越大,这就是扇出限制的定量来源。
- 时序弧(timing arc):从每个输入到输出的传播延迟,且上升沿、下降沿分别给值(NAND 的输出与输入反相,输入上升对应输出下降)。延迟不是一个数,而是以「输入转换时间 × 输出负载电容」为两个坐标轴的二维查找表,再附带输出转换时间表——这就是 NLDM 模型;更精细的 CCS/ECSM 模型还会给出电流波形,用于先进工艺的精确分析。
- 驱动强度后缀 X1/X2/X4:同一个逻辑功能有不同尺寸版本,X2 内部管子宽一倍、能推动更大负载、本身也更快但更费面积和电。综合器像"换挡"一样选择强度:关键路径上换 X4 提速,无关路径用 X1 省面积。
把这几样合起来,就理解了工具在干什么:综合是在面积/速度约束下从菜单里选单元并连线;STA 是沿时序弧查表、再用实际转换时间和负载迭代算出每个门的真实延迟;功耗分析是翻转率乘以动态项、状态概率乘以漏电项。工程上常见的几个动作都能对上号:扇出太大就在中间插 buffer 树(把给一个大电容充电拆成多级充小电容);输入沿太慢(slow slew)会让一对互补管同时导通的时间变长、短通电流增大,所以要避免长导线直连门输入;不同电压域之间要插电平转换器(level shifter),芯片对外要经过驱动能力强、做了 ESD 保护的 I/O pad。看到网表里成片的 BUF、INV、IVPLL…不要奇怪,现代芯片里缓冲/反相器这类"非逻辑"单元往往占总单元数的两三成,它们存在的唯一理由就是本篇反复出现的四个字:物理现实。
与现有篇目的衔接
总结
一句话总结:逻辑门是数字电路的最小积木,与/或/非/与非/或非/异或/同或可用一张真值表概括,而与非、或非是"通用门",单靠一种就能搭出任意逻辑;把门剖开,CMOS 就是"PMOS 上拉网络 + NMOS 下拉网络"一对互补开关——反相器两管即可,且下拉网络中串联为与、并联为或,由此自然造出 NAND/NOR 和更省晶体管的 AOI/OAI 复合门;稳态下上下网络一通一断、无直流通路所以静态功耗极低,电主要耗在翻转时对寄生电容充放电(P=αCV²f),门延迟则沿工艺库 cell 的时序弧逐级累加成关键路径——看懂这些,综合后的网表、NAND2/AOI/DFFX 命名、功耗分析和 STA 就都不再是黑盒。