ECE2050 Chapter 3 Logic Gates 课堂笔记
本章在讲什么
Chapter 1 给了一张全课程地图,Chapter 2 讲"数字怎么用 0/1 表示"。到了 Chapter 3,问题终于从"表示"变成"计算":0 和 1 之间能做哪些运算?执行这些运算的最小电路单元——逻辑门(logic gate)——长什么样、怎么描述它、它在物理上到底是什么东西。
整个 25 页的讲义非常干净地切成两半:
前半(p3–p13)讲门的"逻辑层"。逐个介绍八个基本门(NOT、BUF、AND、OR、NAND、NOR、XOR、XNOR),每个门都用四件套描述:真值表(truth table)、时序图(timing diagram)、逻辑表达式(logic expression)、以及独特的符号形状(distinctive shape symbol)。然后推广到多输入门,并约定真值表的行序。
后半(p14–p23)讲门的"电气层"。这一半回答的是一个前半完全回避的问题:我们一直在说 0 和 1,可电压表上读到 3.2 V 的时候,它到底算 0 还是算 1?答案是:0 和 1 各自是一段电压区间,而不是一个点,中间的空白地带叫禁止区;用区间换来了对噪声的容忍度。这半部分定义了逻辑电平、噪声容限、直流传输特性,最后落到四类真实工艺(TTL / CMOS / LVTTL / LVCMOS)的具体电压数字上。
一句话概括两半的关系:前半说"门在算什么",后半说"凭什么可以认为它算对了"。后半才是本章真正的分量所在——它是"数字抽象(digital abstraction)"从口号变成可计算指标的地方。
各小节的讲义页序对应如下,笔记正文就按这个顺序一条线写下来:
| 讲义页 | 本笔记小节 | 内容 |
|---|---|---|
| p1–p2 | —— | 封面;上一讲(Chapter 2)回顾清单 |
| p3 | 逻辑门是什么:一张门族地图 | 门的分类总览 |
| p4 | 反相器(The Inverter) | 真值表 / 时序图 / 逻辑表达式三种描述方式 |
| p5 | 单输入逻辑门:NOT 与 BUF | 两个单输入门 |
| p6–p7 | 与门 / 或门 | AND、OR |
| p8–p9 | 与非门 / 或非门 | NAND、NOR,含"如何证明"这一抛题 |
| p10 | 异或门与同或门 | XOR、XNOR |
| p11 | XOR 的一个应用:一位加法 | 用 XOR 做加法 |
| p12 | 六个二输入门总览 | 六门并排对照 |
| p13 | 多输入逻辑门 | NOR3 / AND3 / 多输入 XOR 与奇校验 |
| p14 | —— | 分节页,标题 "Logic Levels" |
| p15–p16 | 逻辑电平 | 从"离散电压"到"电压区间" |
| p17 | 什么是噪声 | 噪声的来源与例子 |
| p18 | 噪声容限 | NMH、NML 两个公式 |
| p19–p20 | 直流传输特性 | 理想缓冲器 vs 真实缓冲器 |
| p21–p22 | VDD 的演进 | 供电电压为什么一路下降 |
| p23 | 逻辑门族实例 | TTL / CMOS / LVTTL / LVCMOS 电平表 |
| p24 | —— | 本章回顾 |
| p25 | 自测:True/False Quiz | 7 道判断题(讲义已标答案) |
本笔记约定:凡属我从教材或自行推导补充、讲义上没有的内容,都在标题或段首用【补】标出;引用讲义原文的结论则不加标记。正文涉及教材的地方,指的是与讲义同一目录下的《Digital Design and Computer Architecture》(Sarah L. Harris, Elsevier 2024, RISC-V 版)。
逻辑门是什么:一张门族地图(讲义 p3)
逻辑门(logic gate) 是执行逻辑功能的电路:它接收一个或多个 0/1 输入,按某种固定规则产出一个 0/1 输出。讲义 p3 先把整个门族列成一张地图:
单输入门(single-input) 只有两个成员:
- NOT 门(非门 / 反相器),做的是求反(inversion)运算;
- 缓冲器 BUF(buffer),什么都不做,原样输出。
二输入 / 多输入门(two-input / multiple-input) 有六个:
- AND(与)、OR(或)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)。
讲义那句 "Perform logic functions: inversion (NOT), AND, OR, NAND, NOR, etc." 值得咂摸一下:它把 NOT 单独点出来当"一种运算",而不是把 NOT 当成"一个门"。这不是排版偷懒——从布尔代数的角度看,整个门族只由三种运算搭出来:与(AND)、或(OR)、非(NOT)。其余的门都是这三者的组合或取反。这一点在下面每一节里都会以"符号恒等式"的形式反复出现。
八个门排在一起会发现一个很整齐的结构:它们是四对,每对之间只差一个取反——{AND, NAND}、{OR, NOR}、{XOR, XNOR}、{BUF, NOT}。所以真正需要记的"独立门"其实只有四个(AND、OR、XOR、BUF),另外四个是在输出端加一个**小圆圈(bubble)**得到的。这个"泡泡"是整章最重要的一枚记号,后面会反复用它。
【补】逻辑上,BUF 完全等于一根导线,看起来毫无意义。但它在硬件里有真实用途:驱动大电流(比如点亮 LED、驱动马达)、驱动很多个下级门(扇出 fan-out)、把衰减的信号重新整形成干净方波、以及做隔离。这正好是 Chapter 1 "抽象"那一节讲过的道理——同一个元件在不同抽象层上价值完全不同:数字抽象掩盖了缓冲器的真正用途(教材 §1.5.2 的原话大意)。这也是讲义把它单独列出来的原因。
反相器(The Inverter)(讲义 p4)
讲义用反相器作为第一个门,重点其实不在反相器本身,而在**"怎么描述一个门"这件事**——它一次给出了三种描述方式。这三种方式后面每个门都会重复一遍,所以这里要先拆清楚。
第一种:真值表(truth table)。 讲义的定义是"真值表列出每一个可能输入对应的输出,用电平和相应的比特两种形式表示"。这句话里藏了一个容易漏掉的细节:真值表其实有两层——物理层(LOW / HIGH,即电平高低)和逻辑层(0 / 1,即比特)。讲义 p4 右侧那张表就是这样写的:行标题是 "LOW (0)" 和 "HIGH (1)",而不是直接写 0 和 1。它想提醒的是:"0"不是天上掉下来的符号,它对应着电路上一个真实的低电平。这也是本章后半(逻辑电平)要先打下的伏笔。
反相器的真值表只有两行:输入 LOW(0) → 输出 HIGH(1);输入 HIGH(1) → 输出 LOW(0)。
第二种:时序图(timing diagram)。 讲义的定义是"在时间轴上显示两个或多个波形相互关系的图"(a graph that displays the relationship of two or more waveforms with respect to each other on a time basis)。横轴是时间,纵轴是电平。
p4 右侧的反相器时序图画了两条波形:输入在 t1 时刻跳高、在 t2 时刻跳低;输出则在同一个 t1 跳低、t2 跳高——完全反相。注意这里"同一时刻"是需要留个心眼的:讲义画的是理想化波形,输入一变化输出立刻跟着变,没有延迟。真实门从输入变化到输出稳定需要一段传播延迟(propagation delay),本讲从头到尾没有涉及(教材放在 §2.9 讲时序时才处理)。看时序图时先默认它是"瞬间跳变"的理想图,否则会把后面所有关于时序的直觉都搞乱。
第三种:逻辑表达式(logic expression)。 讲义给出的定义很精确:"变量的补(complement)由一个加在字母上方的横杠表示"。这个横杠有正式名字,叫求反记号(negation indicator)——讲义 p4 的电路图里专门用一根引线把这个横杠标了出来。于是反相器的表达式是:
Y=Aˉ
读作"Y equals NOT A",中文可以读成"Y 等于 A 的非"或"Y 等于 A 取反"。
【补】同一个"非"运算在不同教材里有多种写法,遇到别慌:Y=A′、Y=¬A、Y=!A、Y=∼A 都是它。本课程统一用上划线这一种。另外逻辑学传统里还会用 ∩ 表示与、∪ 表示或,这两种记号在计算机工程里基本不用,看一眼能认就行。
单输入逻辑门:NOT 与 BUF(讲义 p5)
讲义 p5 把两个单输入门并排画出来,是个很标准的对照页:
| 门 | 名称 | 符号特征 | 表达式 | 真值表 |
|---|---|---|---|---|
| NOT | 反相器 / 非门 | 三角形 + 输出端一个泡泡 | Y=Aˉ | 0→1,1→0 |
| BUF | 缓冲器 | 纯三角形,没有泡泡 | Y=A | 0→0,1→1 |
符号的形状就是它的语义:三角形表示"这是一个驱动器"(它把输入信号推出去),输出端的泡泡表示"结果要取反"。BUF 是"三角形不加泡泡",NOT 是"三角形加泡泡"——所以 NOT 在结构上就是"BUF 后接一个反相"。
两者合起来覆盖了单输入布尔函数的全部可能:一个输入只有 0/1 两种取值,输出要由输入唯一决定,那么输出只能是"与输入相同"或"与输入相反"两种函数——分别由 BUF 和 NOT 实现。这就是为什么单输入门只有两个,不多不少。
与门(The AND Gate)(讲义 p6)
AND 门的规则:输出为 TRUE 当且仅当两个输入都为 TRUE,否则为 FALSE。讲义 p6 左上角的电路符号是一个"半圆 + 平边"的形状,平的那一边是输入端,圆的那一边接输出。可以输入的个数是 ≥2。
逻辑表达式:
Y=AB
也就是把两个变量并排写表示相乘(AND 在使用上确实像乘法)。讲义这一页的真值表把每一步都写全了,这种写法值得学:
| A | B | AB=Y |
|---|---|---|
| 0 | 0 | 0⋅0=0 |
| 0 | 1 | 0⋅1=0 |
| 1 | 0 | 1⋅0=0 |
| 1 | 1 | 1⋅1=1 |
真值表的行数——这是本页最重要的一句话:对一个 n 输入的 AND 门,可能的输入组合总数是 2n。为什么?每一位输入有两种取值(0 或 1),n 位互相独立地选,所以一共 2n 种。二输入是 4 行,三输入是 8 行,四输入是 16 行。这条结论对所有门都成立,不只 AND。
时序图:讲义 p6 下方给了 A、B、X 三条波形。读法是——只有 A 和 B 同时为高电平的那些时间段,X 才是高电平,所以 X 的脉冲明显比 A、B 稀疏。看时序图时不要一行一行数脉冲,抓住"X 变高的每一段都能在 A 和 B 上同时找到对应的高电平段"这条规则就够。
【补】AND 的表达式还有别的写法:Y=A⋅B、Y=A∩B(逻辑学传统)。课程统一用 Y=AB,教材给的理由很实在——"因为我们懒"(懒得写点号)。
或门(The OR Gate)(讲义 p7)
OR 门的规则:只要有一个或多个输入为 TRUE,输出就是 TRUE。讲义 p7 的符号是"输入端呈弧形、输出端是尖角",符号上写着 X=A+B,输入个数同样 ≥2。
逻辑表达式:
Y=A+B
真值表:
| A | B | A+B=Y |
|---|---|---|
| 0 | 0 | 0+0=0 |
| 0 | 1 | 0+1=1 |
| 1 | 0 | 1+0=1 |
| 1 | 1 | 1+1=1 |
WARNING
最后一行 1+1=1 是初学者最容易出错的地方。这个 "+" 不是算术加法,它是布尔代数里的"或"。1+1=1 在这个语境里完全正确。什么时候用加法、什么时候用或,取决于你在做算术还是在做逻辑——两者形式相似但语义无关。
讲义 p7 的时序图用的是三输入 OR(右边配的三输入门符号也印证了这点):A、B、C 三条输入波形,输出 X 在任意一条输入为高的时间段内都为高。所以 X 的高电平区基本是把 A、B、C 的高电平区并起来的结果。
【补】OR 也有 ∪ 表示法(union)。另外教材给了一个很蠢但确实有效的助记:OR 符号的输入侧是弧形的,像 Pac-Man 张开的嘴,所以这个门"很饿,愿意吃掉它找得到的所有 TRUE 输入"。记形状用这个比喻,比记口诀快。
与非门(The NAND Gate)(讲义 p8)
NAND = NOT + AND。讲义的符号画法是在 AND 符号的输出端加一个小泡泡,并且在左侧用一个大大的 ≡ 明确写出这个等式:NAND 符号 ≡ AND 符号后接一个反相器(三角形加泡泡)。
逻辑表达式:
Y=AB=Aˉ+Bˉ
这个等式里"等号右边"的那一步,就是**德摩根定律(De Morgan's law)**的一种形式:积之反 = 反之和。讲义在这一页没有证明它,只是把符号恒等式摆出来(真正的推导留给 Chapter 4 的布尔代数)。
讲义的真值表把逐行验算写得很完整,我们照抄一遍:
| A | B | AB=Y |
|---|---|---|
| 0 | 0 | 0⋅0=0ˉ=1 |
| 0 | 1 | 0⋅1=0ˉ=1 |
| 1 | 0 | 1⋅0=0ˉ=1 |
| 1 | 1 | 1⋅1=1ˉ=0 |
NAND 的输出只有一种情况是 0:两个输入全为 1 的时候。这是最好记的一句话——"NAND 就是 AND 的反面:AND 只在全 1 时输出 1,NAND 只在全 1 时输出 0"。
讲义 p8 右侧还有一个门形状的等价关系图,它把输出端的泡泡"推进"到两个输入端,于是 AND 符号变成了 OR 符号(弧形输入),并标注这等价形式叫 Negative-OR(输入取反后做 OR,即 Aˉ+Bˉ)。这个"泡泡平移"的图法是德摩根定律的图形版本:泡泡往哪边走,门的形状就往哪边翻。
时序图:讲义用三输入(A、B、C)演示,输出 X 只有在三条输入同时为高的时候才为低——对应"全 1 时输出 0"。
讲义抛出的问题:"How to verify/prove?"【补】
p8 右下角有一只黄色的思考表情,配字 "How to verify/prove?"——讲义提出了问题,但没有给答案。这里补上,因为它其实点出了布尔代数里一条与普通代数完全不同的方法论。
方法一:真值表穷举(完备的证明)。 布尔变量只取 0 和 1 两种值,所以一个 n 变量的等式只有 2n 种可能情形。把这 2n 行逐一算完,等式就被完整证明了——不存在"漏掉的情形"。二输入就是 4 行:
| A | B | AB | AB | Aˉ | Bˉ | Aˉ+Bˉ |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 0 | 0 | 0 | 0 |
逐行对比第 4 列(AB)和第 7 列(Aˉ+Bˉ),四行全部相同,所以 AB=Aˉ+Bˉ 成立。
这里有一条很重要、但很少有教材明说的对比:实数代数里的恒等式(比如 (x+y)2=x2+2xy+y2)不可能靠"代几个数试试"来证明,因为 x 有无限多种取值,代 100 个数也只说明"这 100 个点碰巧成立"。而布尔等式的穷举证明是真正完备的,因为变量的取值域只有 2 个元素。这就是为什么数字电路的设计可以被"术"化——你总能靠机械地枚举把对错判清。 代价是行数按 2n 爆炸:4 输入 16 行还好,32 输入就是 40 多亿行,这个代价在后面会变成推动整个学科前进的压力(Chapter 4 讲布尔化简、后面的章节讲多级逻辑设计,本质都是"用结构替代穷举")。
方法二:布尔代数推导。 用德摩根定律直接变形,不必列真值表。但这条路有个逻辑上的先后顺序问题:德摩根定律本身要先被证明(通常就是用方法一)。所以方法一是根,方法二是加速器。Chapter 4 会给完整的公理体系,届时这两条律会被当作定理正式给出。
或非门(The NOR Gate)(讲义 p9)
NOR = NOT + OR。符号是OR 符号的输出端加泡泡,讲义同样用 ≡ 画出"OR + 反相器"的等价关系。
逻辑表达式:
Y=A+B=AˉBˉ
等号右边是德摩根定律的另一种形式:和之反 = 反之积。
真值表:
| A | B | Y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
NOR 的输出只有一种情况是 1:两个输入全为 0 的时候。和 NAND 完全对称。
讲义 p9 右侧的等价图把泡泡推到输入端,OR 符号于是变成 AND 符号,标注这等价形式叫 Negative-AND(输入取反后做 AND,即 AˉBˉ)。
时序图同样用三输入演示:输出 X 只有在三条输入全为低的时候才为高,所以 X 的高电平段非常少。
"How to verify/prove?" 这个抛题在 p9 又出现了一次,答案与上一节完全同构——列出 A+B、Aˉ、Bˉ、AˉBˉ 四行真值表,逐行比对即可,这里不重复。
IMPORTANT
NAND 和 NOR 这两个门在数字电路里的地位比 AND / OR 更高,虽然讲义没明说。原因是:现代主流的 CMOS 工艺天然实现"反相"运算(一个反相器的晶体管数最少),所以 NAND、NOR 是"最便宜的原语",而 AND、OR 在硅片上反而是"Non-AND 后面再接一个反相器"拼出来的。讲义 p8 / p9 用 ≡ 画的"AND + 泡泡 = NAND",在逻辑上成立;但在实现上因果是反过来的。这个说法涉及晶体管层面(见下一条),本讲不展开。
【补·与 Chapter 1 笔记对账】Chapter 1 笔记在讲"逻辑门"那一节末尾预告过:"Chapter 3 会再引入更完整的门族:NAND、NOR、XOR、XNOR,以及它们如何用 CMOS 晶体管实现。" 核对结果:前半句完全兑现,后半句没有。本讲 25 页里没有任何晶体管级内容。教材把 CMOS 晶体管放在 §1.7,而且标题带一个 * 号,明确标注"可选、不属于主线"。所以这不是讲义漏讲,而是这条线本来就不在课程主线上——看 Chapter 1 笔记时留下的这个预期需要修正。
异或门与同或门(XOR / XNOR)(讲义 p10)
XOR(Exclusive-OR,异或门)的规则:输出为 TRUE 当 A 或 B 其中之一为 TRUE,但不同时为 TRUE。讲义 p10 的符号是OR 符号的输入端再加一条弧线(那条额外的弧线就是 "exclusive / 排他" 的标记)。
逻辑表达式:XOR 用带圈的加号 ⊕ 表示:
Y=A⊕B
真值表:
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XNOR(Exclusive-NOR,同或门)就是 XOR 的反面:XOR 符号的输出端加一个泡泡。
Y=A⊕B
| A | B | Y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
把两张表放在一起看,XOR 与 XNOR 的行为可以各用一句话概括,而且这两句话是理解后面内容的钥匙:
- XOR 是"差异检测器":两个输入不同时输出 1,相同则输出 0。输入相同就输出 0。
- XNOR 是"相等门"(equality gate):两个输入相同时输出 1。这个"相等门"的叫法是【补】的(讲义只给了符号和真值表,没给这个名称),但它很实用:判断两个 1 位信号是否相等,一个 XNOR 门就够了。
讲义 p10 底部给了 XOR 与 XNOR 的时序图:四条波形上下对齐,A、B 是输入,XOR 和 XNOR 两条输出波形处处相反(一个为高另一个必为低,因为 XNOR 就是 XOR 取反)。从图上还能直观看到"差异检测器"的效应:XOR 变高的那些时刻,正好是 A 与 B 处在不同电平的时刻。
XOR 的一个应用:一位加法(讲义 p11)
讲义 p11 只有一句话:"An XOR gate can be used to add two bits."(一个 XOR 门可以用来把两个比特相加。)然后给出真值表,把 XOR 的输出记为 Σ(Sum,和):
| 输入位 A | 输入位 B | 输出(和)Σ |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0(without the 1 carry bit) |
拿它和 Chapter 2 讲过的二进制加法规一一对照(0+0=0、0+1=1、1+0=1、1+1=10),会发现前三条完全吻合,第四条只对了一半:1+1 的正确结果是 102,XOR 给出的是 0。讲义在这格的输出栏里老老实实写了一句 "without the 1 carry bit"——把进位丢掉了。
【补】那么进位怎么办?看 1+1 这一个情形就够了:进位为 1 恰好发生在两个输入都为 1 的时候,而这正是 AND 门的规则:
Cout=AB
所以完整实现一位加法需要两个门:XOR 产生和位,AND 产生进位位。两者合起来叫半加器(half adder),是 Chapter 6 组合逻辑构件里的第一个例子。
这一页的价值不在"XOR 能加法",而在它演示了单个门的能力边界:XOR 确实在"加法",但它只看得到结果的低位,看不到跨位的进位信息——因为进位的本质是"两个输入同时为 1",是一个 AND 型事件,XOR 从定义上就把这种情况判成了 0。一个门只实现一个布尔函数,而一个完整运算往往需要多个布尔函数同时成立。 这个视角是后面所有"用门搭功能块"的思路起点。
六个二输入门总览(讲义 p12)
讲义 p12 把六个二输入门(AND、OR、XOR、NAND、NOR、XNOR)的符号、表达式、真值表并排放满一页。这里把它们整合成一张表,方便对照复习:
| 门 | 表达式 | 00 | 01 | 10 | 11 | 一句话规则 |
|---|---|---|---|---|---|---|
| AND | Y=AB | 0 | 0 | 0 | 1 | 全 1 才为 1 |
| OR | Y=A+B | 0 | 1 | 1 | 1 | 有 1 就为 1 |
| XOR | Y=A⊕B | 0 | 1 | 1 | 0 | 1 的个数为奇数时为 1 |
| NAND | Y=AB | 1 | 1 | 1 | 0 | 全 1 才为 0 |
| NOR | Y=A+B | 1 | 0 | 0 | 0 | 有 1 就为 0 |
| XNOR | Y=A⊕B | 1 | 0 | 0 | 1 | 1 的个数为偶数时为 1 |
注意"1 的个数为奇数 / 偶数"这两行——它是把 XOR 和 XNOR 的行为从二输入推广到任意输入的唯一顺畅表述,正好接上下一页。
多输入逻辑门(讲义 p13)
讲义 p13 给了三个多输入门的实例,并且在全页最下方放了一行黄色提示:"Truth table rows are listed in binary order."(真值表的行按二进制顺序排列。)这个小约定后面单独说。
三输入 NOR(NOR3):
Y=A+B+C
| A | B | C | Y |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 0 |
八行里只有一行输出 1,就是"全 0"那一行。推广规律很齐整:n 输入 NOR 只在所有输入全为 0 时输出 1(n 输入 OR 只在全 0 时输出 0,取反后自然如此)。
三输入 AND(AND3):Y=ABC,同样八行,只有"全 1"那一行输出 1。
多输入 XOR:奇校验(Odd parity)。 讲义在这里给的不是真值表而是定义:"Multi-input XOR: Output true if an odd number of inputs are true."(输出为真当且仅当输入中为真的个数是奇数。)
| A | B | C | Y |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
为什么可以这样定义?因为 XOR 这个运算满足结合律(associativity)——把 A⊕B 的结果再与 C 做 XOR,无论你怎么分组级联((A⊕B)⊕C 还是 A⊕(B⊕C)),结果都一样。所以"多输入 XOR"不存在歧义,而这个唯一的结果恰好就是"1 的个数为奇数"。
NOTE
这一点值得单独记住:AND、OR、NAND、NOR 的多输入推广是"显然的"(把规则里的"两个"换成"所有",逐个输入套同一句话就行),但 XOR 的推广必须靠"1 的个数奇偶性"来定义,因为它原本的表述"其中之一为真但不同时为真"在三个以上输入时根本说不通(三个输入全为 1 时,是"其中之一为真"吗?是;"不同时为真"吗?否)。讲义用"奇校验"这个定义绕开了这个坑。
【补】多输入 XOR 在教材里有个专门的名字:奇偶门(parity gate)。它在硬件里就是奇校验(odd parity)的校验位生成器——给一个字节加一个奇偶位,接收端再算一次就能检出奇数个位翻转的错误。这和 Chapter 2 讲过的**奇偶校验位(parity bit)**是同一样东西,只是那时候我们把它当编码概念看,现在它是"一个 XOR 门阵列"。
关于"真值表行按二进制顺序排列"这个约定,值得说清它的三重好处:
- 不漏行、不重行。n 输入有 2n 行,从 000 数到 111 的顺序天然是一个不重复的完整枚举;
- 行列位置可以直接读出答案。比如"AND3 的输出 1 在第几行"——数一下行号就知道是第 8 行(从 1 数起),从而知道是"全 1"那一行;
- 方便横向比较多个门。讲义 p12 把六个门的真值表并排摆放,如果不用统一行序,就必须逐个分析才能看出"AND 与 OR 输出列正好反相"这种关系。
教材对这一条的措辞是"输入的排列顺序按 00、01、10、11,就像你在用二进制数数一样"(as if you were counting in binary)。养成这个习惯,看任何真值表都不需要思考行序。
逻辑电平(讲义 p14–p16)
讲义 p14 是一张分节页,只有标题 "Logic Levels"——从这里开始,本章从"门在算什么"切换到"门凭什么算对了"。
问题的提出(p15)。 讲义先给最朴素的映射:"离散电压(discrete voltages)表示 1 和 0",例如 0=ground (GND)=0 伏,1=VDD=5 伏。紧接着抛出两个反问:
那 4.99 V 呢?它算 0 还是 1?3.2 V 呢?
这两个数字不是随手写的,它们代表了两种不同性质的麻烦:4.99 V 是"物理世界不可能精确"的问题(真实的电压总有噪声、总有误差);3.2 V 则远在两端之间,是"判决标准本身是什么"的问题。这两个反问正是整节的动机。
答案的第一层(p16):1 和 0 各自对应一段"电压区间",而不是一个点。 讲义 p16 只写了两句提纲:
- "Range of voltages for 1 and 0"——1 和 0 的电压是一个区间;
- "Different ranges for inputs and outputs to allow for noise"——输入和输出的区间不同,这是为了容忍噪声。
第二句是精髓,也是整章最关键的设计思想,它值得展开。逻辑电平图把电路里两个角色分开命名:送出信号的门叫驱动器(driver),接收信号的门叫接收器(receiver)。四个关键电压是:
- VOL:驱动器输出低电平的最大值(Output Low);
- VOH:驱动器输出高电平的最小值(Output High);
- VIL:接收器仍能判为低电平的最大输入值(Input Low);
- VIH:接收器判为高电平的最小输入值(Input High)。
于是规则是:
- 驱动器输出 LOW 一定落在 [0, VOL],输出 HIGH 一定落在 [VOH, VDD];
- 接收器把 [0, VIL] 一律判为 LOW,把 [VIH, VDD] 一律判为 HIGH;
- 中间那段 (VIL, VIH) 叫禁止区(Forbidden Zone)——落在禁止区里的输入,门的行为是不可预测的(不保证输出是什么,设计上必须避免);
- 要让两级可靠通信,必须 VOL<VIL 且 VOH>VIH。
输出区间比输入区间"更严":VOL 比 VIL 低、VOH 比 VIH 高,这两处差额就是留给噪声的预算——信号在导线上被污染一点,接收端仍然能判对。这个差额就是下一节的"噪声容限"。
IMPORTANT
这一页解释了"数字抽象(digital abstraction)"到底抽象掉了什么。模拟电路里,一个电压就是一个值,有无限多种,信息量极大但对噪声毫无抵抗力;数字电路主动把这无限多种电压压缩成两个区间,牺牲了信息量,换来了两样东西:对噪声的容忍(区间内部有冗余)和无限级联的可组合性(每一级的输出都保证落在下一级的合法输入区间内,于是可以拼任意多层)。
这就是 Chapter 1 讲的"抽象"这个方法论在硬件层面的具体落地——它不是"忽略细节"的口头禅,而是"用区间换鲁棒性"这个可以量化的工程交易。整个本章后半就是在给这笔交易定价。
【补·几个名词的由来】VDD 的 DD 指 MOS 管**漏极(Drain)**上的电压——现代芯片绝大多数是 MOS 工艺;老工艺(双极型晶体管)里同一个角色叫 VCC(CC 指集电极 Collector);地有时候写成 VSS(SS 指源极 Source)。三个名字指的都是"供电轨 / 地"这两个位置,纯属命名历史遗留,看到 VCC 别以为是别的东西。
【补·承上】Chapter 1 笔记已经讲过 0≡LOW≡FALSE、1≡HIGH≡TRUE,以及"默认使用正逻辑"这个约定,这里不重复。本章是在那个约定之上往前走了一步:讲义 p4 的真值表里把行标题写成 "LOW (0) / HIGH (1)",其实就是在提示"0 对应的是一个电平区间",到这里才把这个伏笔收掉。
什么是噪声(Noise)(讲义 p17)
噪声的定义:任何使信号劣化的东西(anything that degrades the signal)。讲义列了几种典型来源:
- 电阻(resistance)——导线本身有电阻,电压会沿路衰减;
- 电源噪声(power supply noise)——供电电压本身在抖;
- 与邻近导线的耦合(coupling to neighboring wires)——旁边那根线在快速翻转,通过电容/电感把干扰感应过来(这是高速电路里的头号麻烦)。
讲义给的例子:一个门(这里充当驱动器)输出 5 V,但因为长导线上的电阻,接收器只收到 4.5 V。讲义 p17 的示意图上画了 Driver 和 Receiver 两个三角形,中间一条导线,箭头标出 "Noise" 打在导线中段,两端标着 5 V 和 4.5 V。
这个例子最值得注意的一点是:丢失的 0.5 V 并没有让电路出错——它只是"吃掉了噪声预算"。用下一节的公式算一下(以第 23 页表格里的门族数据为例):
- 若接收器是 TTL(VIH=2.0 V):4.5 V 远远大于 2.0 V,照判 HIGH,完全没问题;
- 若接收器是 5 V CMOS(VIH=3.15 V):4.5 V > 3.15 V,仍然没问题;
- 但要继续衰减下去,就迟早会进入禁止区。从 5 V 掉到 4.5 V 意味着预算已经用掉了 0.5 V,而 CMOS 的高电平噪声容限总共只有 0.69 V(见 §逻辑门族实例 的复算表)。
所以噪声不是"数字世界的错误",它是模拟世界里的电压偏移,数字电路之所以还能正常工作,只是因为它给每一级都预留了容错预算。这与上一节"用区间换鲁棒性"是同一件事的两面:区间换来的是预算,噪声是在花掉预算。
噪声容限(Noise Margins)(讲义 p18)
讲义 p18 把上一节的四个电压、禁止区和两个"预算"画在同一张图上:左边一组是**输出特性(Output Characteristics)里驱动器能给出的区间,右边一组是输入特性(Input Characteristics)**里接收器能接受的区间,中间两个双向箭头分别标出 NMH 和 NML。图右侧的公式框给出定义:
NMH=VOH−VIH
NML=VIL−VOL
定义要读准(教材的原话大意):噪声容限(noise margin, NM)是指"可以被加在最坏情况(worst-case)输出上、而信号仍然能被接收器解读成合法输入"的噪声量。
拆开这句话,三个要点:
- "最坏情况输出":算 NMH 用的是 VOH(驱动器最低的高电平)而不是典型值;算 NML 用的是 VOL(驱动器最高的低电平)。因为噪声在这里是"不利方向"的,最坏情况才是判断依据。
- "仍能被解读成合法输入":对照的是接收器的极限(VIH、VIL),不是典型值。
- "可以被加上的量":所以是差值,不是一个绝对电压。NMH 是把高电平往下拉多少还能被认出来,NML 是把低电平往上抬多少还能被认出来。
【补·教材 Example 1.18 的完整演算】讲义给完公式就结束了,没有代入过任何数字。用第 23 页表格里 CMOS 那一行(VDD=5、VIL=1.35、VIH=3.15、VOL=0.33、VOH=3.84)算一遍:
NML=1.35−0.33=1.02 V,NMH=3.84−3.15=0.69 V
接着问一个工程问题:这个电路能容忍 1 V 的噪声吗? 答案是一半能、一半不能:
- 输出为 LOW 时能——低电平的预算是 NML=1.02 V,1 V 还没用完;
- 输出为 HIGH 时不能——高电平的预算只有 NMH=0.69 V。具体推演:驱动器输出最坏高电平 3.84 V,若被噪声拉低 1 V 变成 2.84 V,而接收器要 3.15 V 才认高电平,2.84<3.15,接收端可能判不出 HIGH。
由此得到一条很实用的工程结论:整个系统的噪声容限由 min(NML,NMH) 决定,也就是由两条预算里较小的那一条决定(本题是 0.69 V)。噪声容限经常是不对称的,评估时不能只看大的那一边,也不能只看平均值。这个"取最小值"的规则在不同门族上会给出很不一样的结果,见 §逻辑门族实例 的复算表。
直流传输特性(DC Transfer Characteristics)(讲义 p19–p20)
上一节用四个数字(VIL/VIH/VOL/VOH)就讲完了噪声容限,但这四个数字是从哪来的? 讲义 p19–p20 回答这个问题,方式是往下钻一层,看看门的模拟行为。
定义:直流传输特性(DC transfer characteristic)描述的是**"输入电压变化得足够慢、输出跟得上"的时候,输出电压作为输入电压的函数**,即 V(Y) 对 V(A) 的曲线。"DC" 指的是输入保持恒定或变化缓慢(相对的,"瞬态响应 transient response"指输入快速变化时的行为,那是后面章节的事)。
理想缓冲器(p19 左图):曲线是一个阶梯——V(A) 在 0 到 VDD/2 之间时输出恒为低,一旦越过 VDD/2 就垂直跳到 VDD。也就是说切换点是无限陡的(无限增益)。这时四个电平分别是:
VIL=VIH=2VDD,VOL=0,VOH=VDD
代进噪声容限公式:
NMH=VOH−VIH=VDD−2VDD=2VDD,NML=VIL−VOL=2VDD−0=2VDD
所以讲义 p19 左下角的公式框写着 NMH=NML=VDD/2。理想情况下,噪声容限用满了供电电压的一半,一分不少。
真实缓冲器(p19 右图):过渡不是垂直的,而是一段平滑的曲线,而且未必正好以 VDD/2 为中心。这就带来一个新问题:既然曲线是一个连续过渡,VIL 和 VIH 该选在曲线的哪两个点上?
讲义给出的答案标在图上:单位增益点(Unity Gain Points),符号是曲线陡峭段上下各一个黑色三角箭头,标注 "Slope = 1"。选这两个点的效果就是讲义右下角的公式框:NMH, NML<VDD/2——真实门的噪声容限必然小于 VDD/2,因为过渡再陡也不是垂直的,总得让出一段。
为什么选斜率等于 1 的点?【补·教材 §1.6.4 的论证】斜率 dV(Y)/dV(A) 就是这条曲线在小信号意义下的增益:
- 在斜率绝对值小于 1 的区域(曲线的两头平坦段),输入的变化传到输出会被衰减——输入的 0.1 V 抖动只造成输出很小的变化。这一段是"数字区",输入值是什么并不敏感。
- 在斜率绝对值大于 1 的区域(曲线的中间陡峭段),输入的变化会被放大成输出的大摆动。这一段是"模拟区"——输入电压的确切大小完全决定了输出,是最脆弱的地带。
允许落在陡峭区里的输入范围就是禁止区。 于是把电平判决点选在"增益恰好等于 1"的位置(陡峭区的两个边界),等于把禁止区压到最小、把可以容忍噪声的两段留到最大。这就是"单位增益点最大化噪声容限"的意思。
教材还给了个边际论证:如果把 VIL 往下调,VOH 只会增加一丁点(因为曲线在平坦段,横着挪一点点,纵坐标几乎不动);但如果往上调,VOH 就会急剧下降(已经进陡峭段了)——所以再往里推只会亏,不会赚。
WARNING
单位增益点的斜率符号是 +1 还是 −1? 讲义 p19 画的是缓冲器(非反相),标 "Slope = 1";教材 Figure 1.25(b) 画的是反相器(inverting),标 "Slope = −1"。两者都对,符号取决于这个器件是反相还是非反相——反相器的曲线是下降的,斜率为负。抄笔记时不要死记 "+1" 或 "−1",正确的记忆是"斜率的绝对值等于 1"(增益大小为 1)。
p20:把两种视角叠起来。 讲义 p20 左边是真实缓冲器的 V(Y)–V(A) 曲线(带 Unity Gain Points 标注),右边是那组"输出特性 / 输入特性 / 禁止区"的区间图,两图并排放置。这一页是整章的收束:
- 左图是模拟视角:一条连续的电压—电压曲线,VOH、VOL 是它的两个平台,VIL、VIH 是它两个单位增益点;
- 右图是数字视角:同一件事被重画成"四个区间 + 一个禁止区"。
同一份物理事实,两种读法。 数字工程师平时只看右图(用四个数字说话),但右图里每一个数字的取值依据都在左图里。这一页就是"数字抽象"这个缩略图的全貌——抽象不是凭空的规定,它是从模拟曲线里读出来的四个点。
VDD 的演进(VDD Scaling)(讲义 p21–p22)
讲义 p21 和 p22 内容基本相同(p22 多了一张图和一个玩笑),要点是:
- 1970 年代和 1980 年代,VDD=5 V 是行业标准;
- 之后 VDD 一路下降:3.3 V、2.5 V、1.8 V、1.5 V、1.2 V、1.0 V……
- 两个原因:① 避免烧坏越做越小的晶体管(avoid frying tiny transistors);② 省电(save power);
- 最后一句是警告:连接不同供电电压的芯片时要格外小心。
【补】第二条"省电"有一个精确的数字支撑:CMOS 电路的动态功耗近似满足 P∝CVDD2f(C 是负载电容,f 是翻转频率),功耗与 VDD 的平方成正比——电压降到 0.6 倍,功耗降到 0.36 倍。这是降压最直接的收益,也是过去几十年芯片能一直提速的原因。不过这条公式属于后续章节的内容,本讲不要它也能读懂"省电"两个字。
【补】VDD 不能无限降下去。主要限制来自晶体管的阈值电压(threshold voltage)与漏电:开关动作依赖栅极电压超过阈值电压,当 VDD 逼近阈值时,门的增益(传输曲线的陡峭程度)变差,噪声容限被吃掉;同时关断状态的漏电流占比越来越大。具体机理属于晶体管层面(教材 §1.7,带 * 的可选节),本讲不展开。
讲义 p22 在同样的条目下多加了一张"芯片冒烟"的插图和一句话,这是数字电路圈流传已久的经典玩笑:
"Chips operate because they contain magic smoke. Proof: if the magic smoke is let out, the chip stops working." (芯片能工作是因为里面装着魔法烟雾。证明:一旦烟雾被放出来,芯片就不工作了。)
笑话的真实背景是:晶体管被过压/过热击穿烧毁时会冒烟,而芯片一旦冒烟就彻底报废。讲义把它放在"VDD 降压"和"注意供电电压"旁边,是拿幽默给那句警告加分量——供电电压不匹配是会真的把芯片烧掉的。
逻辑门族实例(Logic Family Examples)(讲义 p23)
讲义 p23 是一张实实在在的工程数据表,四种主流工艺的逻辑电平:
| Logic Family | VDD | VIL | VIH | VOL | VOH |
|---|---|---|---|---|---|
| TTL | 5 (4.75–5.25) | 0.8 | 2.0 | 0.4 | 2.4 |
| CMOS | 5 (4.5–6) | 1.35 | 3.15 | 0.33 | 3.84 |
| LVTTL | 3.3 (3–3.6) | 0.8 | 2.0 | 0.4 | 2.4 |
| LVCMOS | 3.3 (3–3.6) | 0.9 | 1.8 | 0.36 | 2.7 |
四个门族的名字:TTL = Transistor-Transistor Logic(晶体管-晶体管逻辑);CMOS = Complementary Metal-Oxide-Semiconductor Logic(互补金属氧化物半导体逻辑);LVTTL / LVCMOS 是它们在低电压(Low Voltage)时代的对应版本。按教材的说法,这四族是 1970s–1990s 的主流,之后门族就"碎片化"了,出现了大量更低的供电电压。
这张表里的每个项目都要能自己算出来。下面是我用讲义给出的这四行数据独立复算的结果(不是从教材抄的):
| 门族 | VDD | NML=VIL−VOL | NMH=VOH−VIH | 系统容限 min(NML,NMH) |
|---|---|---|---|---|
| TTL | 5 | 0.40 | 0.40 | 0.40 |
| CMOS | 5 | 1.02 | 0.69 | 0.69 |
| LVTTL | 3.3 | 0.40 | 0.40 | 0.40 |
| LVCMOS | 3.3 | 0.54 | 0.90 | 0.54 |
从这张复算表能读出三件事:
- TTL 和 LVTTL 的四个电平完全一样(0.8 / 2.0 / 0.4 / 2.4),差别只在 VDD。所以它们的噪声容限也完全一样(0.40 / 0.40)。这说明 LVTTL 基本就是"把 TTL 的电平规范原样搬到 3.3 V 供电上"。
- CMOS 与 LVCMOS 的容限明显不对称:CMOS 是 NML 大、NMH 小(1.02 vs 0.69);LVCMOS 反过来(0.54 vs 0.90)。不对称是常态,不是特例——这也解释了为什么上一节要强调"系统容限取 min"。
- 复核讲义 p19 的结论:讲义说真实门的 NMH,NML<VDD/2。用这四族数据验证——TTL/LVTTL 的 VDD/2=2.5 和 1.65,而它们的容限只有 0.40;CMOS 的 VDD/2=2.5,容限 1.02 / 0.69;LVCMOS 的 VDD/2=1.65,容限 0.54 / 0.90。四族全部满足 NM<VDD/2,且远小于 VDD/2。 讲义那句话在真实器件上不仅成立,而且差距很大——理想缓冲器那一半电压的容限是完全达不到的。
【补】不同门族之间能不能互连:讲义那句警告的完整答案
讲义 p21 / p22 反复说"连接不同供电电压的芯片时要小心",但没有说小心什么、怎么判断。同目录教材 §1.6.5 把这句警告做成了一张完整的兼容性表(Table 1.5),这里整理过来——这是本笔记相对课件最大的增量:
| Driver ↓ / Receiver → | TTL | CMOS | LVTTL | LVCMOS |
|---|---|---|---|---|
| TTL | OK | NO: VOH<VIH | MAYBE | MAYBE |
| CMOS | OK | OK | MAYBE | MAYBE |
| LVTTL | OK | NO: VOH<VIH | OK | OK |
| LVCMOS | OK | NO: VOH<VIH | OK | OK |
("MAYBE" 的原注:以 5 V 高电平不会损坏接收端输入为前提。)
我拿讲义 p23 表格里的数字逐格复算过这张表,结论与教材完全一致。两条规律分别是:
规律一:往 5 V CMOS 送高电平基本不行(表中所有 "NO" 都在这一列)。 判据是 VOH>VIH。CMOS 要求 VIH=3.15 V,而三个 3.3 V 族和 TTL 能保证的最坏高电平分别只有:
- TTL VOH=2.4 V,
- LVTTL VOH=2.4 V,
- LVCMOS VOH=2.7 V,
三个都小于 3.15 V,所以接收端可能判不出 HIGH。反过来,CMOS 作为驱动端时 VOH=3.84 V,比 TTL 的 2.0 V、LVTTL 的 2.0 V、LVCMOS 的 1.8 V 都高,所以"CMOS 驱动别人"这一行全是 OK。这是单向兼容——能驱动别人,不能被别人驱动。
规律二:往 3.3 V 族送 5 V 信号要打问号。 从电平判读的角度,5 V 族的高电平当然够高(VOH 分别 2.4 V 和 3.84 V,都超过 3.3 V 族的 VIH),低电平也够低。问题出在另一个维度:5 V 逻辑族的输出最高可能达到 5 V,而 3.3 V 族器件的输入电压上限通常是 3.6 V 左右——过压可能直接把接收端的输入级烧掉,除非该器件明确标称"5 V 兼容(5-volt compatible)"。所以这两格是 MAYBE 而不是 OK。
TIP
上面两条规律可以合成一个两问判别流程,这是本章后半最有工程价值的一个决策。这张图是我整理的,讲义和教材都没有画成流程图:
两问的顺序不能颠倒,因为它们对应两种完全不同性质的失败:第一问是逻辑失败(信号还在,但被误判成另一个值——这是"算错了"),第二问是物理失败(电压超过器件的耐压极限——这是"烧掉了")。电平兼容和耐压兼容是两件独立的事,两个都要查。 讲义那句 "be careful" 如果只理解为"电压不一样电平会读错",就漏掉了后一半——而漏掉的那一半才是真的会损坏器件的那一半。
自测:True/False Quiz(讲义第 25 页,附答案与解析)
讲义 p25 把答案直接标在题目前面(绿勾 ✓ 表示 True,红叉 × 表示 False)——所以下面的"答案"是课件原文,"解析"是我加的。
- An inverter performs a NOT operation.✓ True. 反相器就是 NOT 门,两个名字指同一个东西(教材里也叫 inverter)。
- A NOT gate cannot have more than one input.✓ True. NOT 是单输入门。要多输入就必须先"把多个输入合并成一个"(例如用 AND / OR),那已经不是一个 NOT 门了。
- If any input to an OR gate is zero, the output is zero.× False. 这是把 OR 和 AND 搞混了。OR 的规则是"只要有一个输入是 1 就输出 1";某个输入为 0 完全不构成输出为 0 的理由——只要另一个输入是 1,输出就是 1。(若改成 AND,这句话就对了。)
- If all inputs to an AND gate are 1, the output is 0.× False. 正好相反:AND 门全 1 时输出 1。("全 1 输出 0"是 NAND 的行为。)
- A NAND gate can be considered as an AND gate followed by a NOT gate.✓ True. 这正是讲义 p8 用 ≡ 画出的等价关系,也是名字的来源:NAND = Not AND。
- A NOR gate can be considered as an OR gate followed by an inverter.✓ True. 对应讲义 p9 的 ≡ 图。NOR = Not OR。
- The output of an exclusive-OR is 0 if the inputs are opposite.× False. 反了。输入的取值相反(一个 0、一个 1)时,XOR 输出 1——这正是"差异检测器"的定义。XOR 输出 0 的情形是输入相同(同 0 或同 1)。
本章核心公式与结论速查
| 内容 | 结论 |
|---|---|
| 单输入门 | NOT:Y=Aˉ;BUF:Y=A |
| 二输入门表达式 | AND Y=AB;OR Y=A+B;XOR Y=A⊕B |
| 取反门表达式 | NAND Y=AB=Aˉ+Bˉ;NOR Y=A+B=AˉBˉ;XNOR Y=A⊕B |
| 一句话规则 | AND 全 1 才 1;OR 有 1 就 1;XOR 1 的个数为奇数;取反门把 0/1 对调 |
| n 输入真值表行数 | 2n,行按二进制计数顺序排列 |
| 多输入 NOR / AND | NOR 只在全 0 时输出 1;AND 只在全 1 时输出 1 |
| 多输入 XOR | 奇校验:输入中 1 的个数为奇数时输出 1(因 XOR 满足结合律);别名奇偶门 |
| 布尔等式的证明 | 真值表穷举 2n 行即完备证明;不必也不该靠"代几个数试试" |
| 可靠通信条件 | VOL<VIL 且 VOH>VIH |
| 禁止区 | (VIL, VIH) 之间,落在其中的输入行为不可预测 |
| 噪声容限 | NML=VIL−VOL;NMH=VOH−VIH |
| 系统噪声容限 | 由 min(NML, NMH) 决定(不对称是常态) |
| 理想门 | VIL=VIH=VDD/2⇒NML=NMH=VDD/2 |
| 真实门 | NML, NMH<VDD/2;电平定义在单位增益点(斜率绝对值为 1) |
| 直流传输特性 | V(Y) 对 V(A) 的曲线;曲线的斜率就是增益,斜率绝对值为 1 处即单位增益点 |
| 四族噪声容限 | TTL 0.40;CMOS 1.02 / 0.69;LVTTL 0.40;LVCMOS 0.54 / 0.90 |
| 互连判据 | 两问:接收端能否判出最坏高电平(电平兼容);接收端耐压是否够(耐压兼容) |
| VDD 趋势 | 5 V → 3.3 / 2.5 / 1.8 / 1.5 / 1.2 / 1.0 V,为省功耗(∝VDD2)与保护小尺寸晶体管 |
附录:本笔记相对课件的补充与诚实备注
材料来源与制作方式
本讲内容完全来自课件 ECE2050-Chap3 - Logic Gates.pdf(共 25 页),笔记中没有任何"老师口述了什么"的虚构。
这份课件的正文几乎全是图片:逻辑符号、真值表、时序图、电路图、DC 传输曲线、逻辑门族表格全部以图形方式嵌入。用 pymupdf 抽取纯文本只能得到 6.3 KB,而且电路符号与公式被抽成乱码(逻辑门符号变成 !"#$、公式变成 G(HI-.L0N#NO-D#%3-%O3 之类——这是 macOS Quartz 导出 PDF 时自定义字体缺 ToUnicode 映射的典型症状)。因此本笔记是把 25 页逐页渲染成图片后读图写成,其中含公式的真值表与四族电平表再用 260–400 dpi 放大复核(NAND、NOR 两张真值表的每一格,以及讲义 p23 表格的每一个数字都逐格确认过)。
教材对照使用与讲义同一目录下的《Digital Design and Computer Architecture》(Sarah L. Harris, Elsevier 2024, RISC-V 版)。本讲对应教材 §1.5 Logic Gates(书 pp.17–20)+ §1.6 Beneath the Digital Abstraction(书 pp.20–23);讲义 p23 的门族表即教材 Table 1.4,笔记补的互连兼容性表即 Table 1.5(书 p.24)。
日期说明
frontmatter 中的 date: 2026-09-24 取的是生成笔记的日期,不是授课日。若实际授课日期不同,请自行修改。
课件的记号不一致(不是笔误)
讲义里门的输出变量时而写 X、时而写 Y:p4(反相器)、p6(AND)、p7(OR)、p8(NAND)、p9(NOR)的电路图与表达式用 X;p5(NOT/BUF)、p12(六门总览)、p13(多输入)用 Y。教材的约定是"输入用字母表前段的字母、输出一律用 Y",所以 X 应该是从别的图源继承来的。本笔记正文统一用 Y,只有在引用讲义原句时保留 X。
另外,讲义几张时序图的输入个数与真值表不一致:AND 的时序图是二输入,而 OR、NAND、NOR 的时序图都是三输入,但它们的真值表却都是二输入。这不是错误——三输入时序图更能展示"输入多一条之后输出怎么变"——但对照着看时容易愣一下,先说清楚。
关于"单位增益点"的斜率符号(重要)
讲义 p19 画的是缓冲器,标注 "Slope = 1";教材 Figure 1.25(b) 画的是反相器,标注 "Slope = −1"。两者不矛盾,符号取决于器件是否反相(反相器曲线下降,斜率为负)。抄笔记时不要只写 "+1" 或只写 "−1",建议记"斜率的绝对值等于 1",或者写"∣dV(Y)/dV(A)∣=1"。
讲义抛出但未回答的三个问题(答案属【补】)
- p8 / p9 的 "How to verify/prove?" —— 讲义只提问不给答案。我在正文用 4 行真值表穷举证明了 AB=Aˉ+Bˉ。这里的方法论要点是:布尔等式的穷举证明是完备的(变量取值域只有 2 个元素,2n 行覆盖全部可能),这与实数恒等式必须靠推理证明完全不同。
- p11 的 "An XOR gate can be used to add two bits" —— 讲义只给了 XOR 的"和位"真值表,并在输出栏注明 "without the 1 carry bit",但没有说进位怎么办。我补上了:进位是 Cout=AB(一个 AND 门),两个门合起来即半加器(half adder)。
- p21 / p22 的 "Be careful connecting chips with different supply voltages" —— 只有警告,没有展开。教材 §1.6.5 与 Table 1.5 给了完整答案,我已整理进正文,并归纳出"电平兼容 + 耐压兼容"两问判别流程。
数值复算结果
见 §逻辑门族实例 的两张表。四族的 NML、NMH 与系统容限是用讲义 p23 表格里的原始数字独立计算的(用脚本算,不是手抄教材结论),并做了两项核对:
- 四族的 NML 与 NMH 全部小于 VDD/2——与讲义 p19 "真实缓冲器 NMH,NML<VDD/2"的结论一致,且差距很大(0.40 vs 2.5 之类);
- 由这四行数据推出的互连兼容性逐格与教材 Table 1.5 相同(所有 "NO" 都落在"驱动 5 V CMOS"那一列,因为 TTL/LVTTL 的 VOH=2.4、LVCMOS 的 VOH=2.7,都小于 CMOS 的 VIH=3.15)。
未发现讲义 p23 表格有数值错误。 一处需要留意的口径是:VDD 列给的是标称值 + 容差范围(如 TTL "5 (4.75–5.25)"),而 VIL/VIH/VOL/VOH 是保证的极限值。手册上的噪声容限通常就是按这一组极限值算的;但如果供电电压真的漂到容差范围的端点,实际的电平与容限都会变。别把标称值当精确值用。
未在讲义中出现、由我补充的内容
正文里每处补充都用【补】就地标注了,这里只做一份索引,方便你回查哪些是课件原文、哪些不是:缓冲器的真实用途;NOT 的其他记号写法(A′、¬A、!A、∼A)与 ∩ / ∪ 写法;XNOR 的别名"相等门"与多输入 XOR 的别名"奇偶门";静态纪律(static discipline);VDD / VCC / VSS 命名的由来;P∝CVDD2f 与 VDD 下降受阈值电压、漏电限制;教材 Example 1.18 的噪声容限演算;教材 Table 1.5 互连兼容性表;以及 p17 那个 5 V → 4.5 V 的例子在四族数据下还剩多少预算。
与上一章笔记预告的对账
Chapter 1 笔记 §五末尾写过:"Chapter 3 会再引入更完整的门族:NAND、NOR、XOR、XNOR,以及它们如何用 CMOS 晶体管实现。"
- 前半句完全兑现——八个基本门的符号、真值表、时序图、表达式都给了。
- 后半句没有兑现——本讲 25 页里没有任何晶体管级内容。CMOS 晶体管在教材里是 §1.7,标题带
*,明确标注"可选、不属于主线"。所以这不是讲义漏讲,而是这条线本来就不在课程主线上——看 Chapter 1 笔记时留下的这个预期需要修正,别拿它去准备考试。
另外 Chapter 1 笔记 §三已讲过的"0≡ LOW、1≡ HIGH、默认正逻辑"本讲没有重复,而是直接推进到"电平是一个区间";两讲在这条线上是接续关系,不是重复关系。
本讲的"够 / 不够"判断
够的部分: 八个基本门的四件套(符号、真值表、时序图、布尔表达式)一个不落;多输入推广与真值表行序约定讲清了;后半段"逻辑电平 → 噪声 → 噪声容限 → 直流传输特性 → 四族真实数据"这条主线完整,最后落回到同一份物理事实的两种读法上。这是本章最有分量的部分,也是讲义组织得最好的部分。
不够的部分:
- 讲义全程没有任何一道例题。 唯一的互动是 p8 / p9 的 "How to verify/prove?"(不给过程)和 p25 的真值表判断题(只标对错)。结果是两个噪声容限公式在课件里一次都没有被代入过数字——我用教材 Example 1.18 和四族数据的复算补上了;同样,讲义 p11 说了"XOR 能加两个比特",却一笔加法都没算。
- 时序图只有理想化波形,传播延迟(propagation delay)、时序约束、X 与 Z(不确定态)全部没提(属后续章节)。
- 静态纪律(static discipline)没提。 它的表述是"给定了逻辑合法的输入,每一个电路元件都会产生逻辑合法的输出"——八个基本门之所以能"像乐高一样拼起来",靠的就是所有同族门都遵守这条纪律。这是"可组合性"的正式保证,讲义只在图里隐含了它,没有说破。
- 成本 / 实现维度完全缺席:哪个门便宜、为什么 NAND / NOR 在 CMOS 里是原语,本讲一字未提。
给备考的一句提醒: 本章可考的核心是两类题——给一张电平表,算 NML、NMH、系统容限,并判断两个器件能否互连;以及给一个门的描述写全真值表,或从真值表反推门的类型。这两类题讲义都没有给例题,建议直接拿 p23 的四族表格自己练手:把两张复算表默写一遍,再把互连兼容性的 16 格判一遍。