3.1 逻辑值、逻辑门与真值表
第 2 章说明了比特模式怎样表示数值或字符。现在要回答另一个问题:硬件怎样把一组比特变成另一组比特?
数字电路使用逻辑来回答。逻辑值(logic value)是抽象的 0 或 1。在真实电路中,设计者会把一段电压范围规定为 0,把另一段范围规定为 1;具体电压由所用技术决定。本节先使用稳定的抽象:
| 逻辑值 | 常见含义 | 示例 |
|---|---|---|
| 0 | 假、低电平、未启用 | 按键未按下 |
| 1 | 真、高电平、已启用 | 按键已按下 |
“低电平”和“高电平”表示信号范围,不一定恰好等于 0 伏和 5 伏。
一个逻辑门执行一条小规则
逻辑门(logic gate)是一种按照规则,根据输入决定输出的电路。非门(NOT)有一个输入。下表其余逻辑门有两个输入,分别叫 A 和 B。
| 逻辑门 | 输出规则 | 何时输出 1 |
|---|---|---|
| 非门 NOT | 反转一个输入 | 输入为 0 |
| 与门 AND | A、B 都为 1 | |
| 或门 OR | 布尔记号中的 | 至少一个输入为 1 |
| 异或门 XOR | A、B 不同 | |
| 与非门 NAND | AND 后取反 | A、B 不同时为 1 |
| 或非门 NOR | OR 后取反 | A、B 都为 0 |
这里布尔代数中的 表示 OR,不是普通算术加法。因此在 OR 规则下,。符号 表示异或。
真值表检查全部可能输入
真值表(truth table)列出每一种输入组合及其输出。两个二进制输入共有 种组合:
| A | B | AND | OR | XOR | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
只看一个例子无法识别逻辑门。AND 和 XOR 在输入 00 时都输出 0,但其他行并不相同。完整真值表相当于一次规模很小的穷举测试。
实验 1——根据行为识别逻辑门
切换 A、B,比较真值表中高亮的当前行,再用完整的四位输出签名识别每条规则。
检查理解
逻辑门可以连接成更大的规则
一个逻辑门的输出可以成为另一个逻辑门的输入。考虑下面的关系:
电路先判断 A、B 是否不同,然后只有在 C 为 1 时才让这个结果通过。
三个输入共有 种组合。验证完整电路时:
1. 先选择一行,例如 A=1、B=0、C=1。
2. 计算中间信号:。
3. 计算最终输出:。
4. 对其余七行重复检查。
这是一种组合逻辑电路(combinational circuit):输入信号稳定后,输出只取决于当前输入,不会记住以前的输入。
实验 2——拼出通过全部测试的电路
为两级电路选择逻辑门并检查每一行差异。目标不是让某一组输入碰巧点亮灯,而是让全部八种输入都符合目标函数。
检查理解
实用的推理习惯
- 给中间信号命名。 写成 ,就能把大问题拆成两个小步骤。
- 检查边界行。 全 0 和全 1 输入经常能快速暴露错误逻辑门。
- 不要混淆 XOR 与 OR。 二者在输入 11 时不同:OR 输出 1,XOR 输出 0。
- 不要根据一次观察推断整个电路。 不同电路可能在若干行上结果相同,却仍然实现不同函数。
下一节会把这些小规则封装成可复用的组合逻辑部件:译码器选择一个目标,多路选择器选择一个来源,算术逻辑单元选择一种运算。