学习 › 第 1 讲
逻辑门:NOT、AND、OR、NAND、NOR、XOR 和 XNOR
阅读约 7 分钟 · bitGateLab 团队
所有的数字电路,从红绿灯到处理器,都是由少数几种用 0 和 1 做判断的基本单元搭建起来的,这些单元就是逻辑门。本文将带你认识七种基本逻辑门:它们怎么画、在布尔代数中怎么写,以及各自的真值表是什么样的。最后你会看到,为什么只用一种门(NAND 或 NOR)就能搭出其余所有的门。
逻辑电平:0 和 1 代表什么
在数字电路中,每个信号只能处于两种状态之一。低电压(接近 0 V)称为逻辑 0,即“假”;高电压(接近电源电压,例如 5 V 或 3.3 V)称为逻辑 1,即“真”。逻辑门接收一个或多个输入,给出一个输出,而这个输出只取决于各输入当前的取值:它什么也不记忆。因此我们说,逻辑门构成的是组合逻辑。
描述一个逻辑门最完整的方式是它的真值表:把输入的所有可能组合一一列出,并给出每种组合对应的输出。n 个输入共有 2n 种组合,所以两输入的门有 4 行,三输入的门有 8 行。
三种基本逻辑门
NOT(非门,即反相器)
它只有一个输入,输出与输入相反:输入 0 则输出 1,输入 1 则输出 0。写作 Y = A(你也会见到 A' 或 ¬A 的写法)。它的符号是一个尖端带小圆圈的三角形;这个小圆圈是通用的标记,表示“此处取反”。
| A | Y = A |
|---|---|
| 0 | 1 |
| 1 | 0 |
AND(与门)
只有当所有输入都为 1 时,输出才为 1。它写成乘积的形式:Y = A·B,或者简写为 Y = AB。可以把它想象成两个串联的开关:只有两个开关都闭合,灯才会亮。
OR(或门)
只要至少有一个输入为 1,输出就为 1。它写成加法的形式:Y = A + B,相当于两个并联的开关。注意:在布尔代数中 1 + 1 = 1,而不是 2。
派生逻辑门:NAND、NOR、XOR 和 XNOR
NAND(与非门)是 AND 后面接一个反相器:Y = AB。只有当所有输入都为 1 时,它的输出才为 0。NOR(或非门)是取反的 OR:Y = A + B,只有当所有输入都为 0 时才输出 1。在符号上,两者的输出端都带有小圆圈。
XOR(异或门)在两个输入不同时输出 1:Y = A ⊕ B = AB + AB。输入多于两个时,XOR 在 1 的个数为奇数时输出 1,因此常用来计算奇偶校验位。XNOR(同或门)是它的反,Y = A ⊕ B = AB + A B,在两个输入相同时输出 1:它就是一个一位的相等比较器。
下面是六种两输入逻辑门合在一起的真值表:
| A | B | AND | OR | NAND | NOR | XOR | XNOR |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
例:计算一个小电路的输出。求 Y = (A + B) · C 在 A = 0,B = 1,C = 1 时的值。
- OR:A + B = 0 + 1 = 1。
- 取反:1 = 0。
- 与 C 做 AND:0 · 1 = 0。
结果:Y = 0。当 A = 0,B = 0,C = 1 时,OR 得 0,反相器得 1,AND 得 1,所以 Y = 1。
NAND 和 NOR:通用逻辑门
如果只用某一种门的若干个副本就能搭出 NOT、AND 和 OR,进而实现任意逻辑函数,这种门就称为通用逻辑门。NAND 和 NOR 都具有这一性质。这带来一个很实际的好处:芯片制造商可以只生产一种单元,用它搭出整个设计;而你也可以只用一片 74HC 系列的芯片完成整个电路(例如 74HC00 内含四个两输入 NAND 门)。
全部用 NAND 实现
- NOT:把一个 NAND 门的两个输入接在一起。若 A 同时接到两个输入,则 A·A = A。
- AND:一个 NAND 门后面再接一个当作反相器用的 NAND 门:AB = AB。
- OR:先用 NAND 门把每个输入各自取反,再把它们送入第三个 NAND 门:A·B = A + B(根据德摩根定理)。
全部用 NOR 实现
- NOT:把一个 NOR 门的输入接在一起:A + A = A。
- OR:一个 NOR 门后面再接一个当作反相器用的 NOR 门。
- AND:先用 NOR 门把每个输入各自取反,再把它们送入另一个 NOR 门:A + B = AB。
例:用四个 NAND 门实现 XOR。设 N1 = AB,N2 = A·N1,N3 = B·N1,Y = N2·N3。逐一检查四种情况:
| A | B | N1 | N2 | N3 | Y |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 |
Y 这一列与 XOR 的那一列完全一致。四个门,只需一片芯片。
常见错误
- 以为在 OR 门里 1 + 1 = 2。在布尔逻辑中,加法是“饱和”的:1 + 1 = 1。
- 把 AB(NAND,一条横线盖住整体)和 A B(两条分开的横线,相当于 NOR)混为一谈。横线的长短会改变结果。
- 以为三输入 XOR 是“只有一个输入为 1 时”才输出 1。实际上,只要 1 的个数为奇数它就输出 1,这也包括 1、1、1 的情况。
- 在实际的 CMOS 芯片上让输入悬空。悬空的输入可能被随机读成 0 或 1;应把它接地或接到电源。
在模拟器中试一试
记住这些真值表的最好办法,就是亲手把它们生成出来。在电路编辑器中,你可以放一个逻辑门,改变它的输入,立刻看到输出;然后再与工具算出的真值表对照。
- 放置两个输入、一个 NAND 门和一个输出,并把它们连接起来。
- 把输入依次切换成四种组合,记下每种情况下的输出。
- 生成该电路的真值表,并与本文中的真值表比较。
- 按例子搭出用四个 NAND 门实现的 XOR,验证它的真值表与单个 XOR 门的一致。
- 如果想把它搬到虚拟面包板上,就放一片 74HC 系列的 NAND 芯片,给它接上电源,然后观察输出端的 LED。
练习
- 写出 Y = A + B 的真值表。
答案
当 AB = 00、01、10、11 时,输出依次为 1、0、1、1。只有当 A = 0 且 B = 1 时输出为 0。
- 4 输入 AND 门的真值表有多少行?其中有几行输出为 1?
答案
24 = 16 行;只有一行(1111)输出为 1。
- 求三输入 XOR 门在 A = 1,B = 1,C = 1 时的输出。
答案
1 ⊕ 1 = 0,0 ⊕ 1 = 1。输出为 1,因为有三个 1(奇数个)。
- 按照这种方法,至少需要几个 NOR 门才能构成一个两输入 AND 门?
答案
三个:两个 NOR 门用作反相器(一个给 A,一个给 B),第三个 NOR 门接收 A 和 B,其输出为 A + B = AB。
要对由这些门组成的表达式进行变换和化简,请继续学习布尔代数。