逻辑电路就是把布尔表达式画成用导线连接的逻辑门。解读电路时,从输入读向输出,一次一个门,并写下每个门输出的结果。
这一课接在真值表之后,属于布尔逻辑模块。这里的电路用文字描述,所以即使手边没有图,你也能练习。
各个逻辑门做什么?
| 逻辑门 | 输出为 1 的条件 |
|---|---|
| NOT | 输入是 0 |
| AND | 两个输入都是 1 |
| OR | 至少有一个输入是 1 |
| NAND | 不是两个输入都是 1(先 AND,再 NOT) |
| NOR | 两个输入都是 0(先 OR,再 NOT) |
| XOR | 两个输入不同 |
怎样读电路
- 找出输入(左边的 A、B、C)和右边的输出 Q。
- 给每个门的输出标上新字母,如 X、Y。
- 用前面的值写出每个标签的表达式。
- 组合标签,把 Q 写成输入的表达式。
- 用几行输入测试,或者做出完整的表格。
例题
一个电路由以下部分组成。输入 A 和 B 进入 XOR 门,输出 X。X 和 C 进入 AND 门,输出 Y。Y 进入 NOT 门,输出 Q。
**表达式:**X = A XOR B,Y = X AND C,Q = NOT Y。所以 Q = NOT ((A XOR B) AND C)。
**测试 A = 1、B = 0、C = 1:**X = 1 XOR 0 = 1。Y = 1 AND 1 = 1。Q = NOT 1 = 0。
**测试 A = 1、B = 1、C = 1:**X = 1 XOR 1 = 0。Y = 0 AND 1 = 0。Q = NOT 0 = 1。
完整表格,按 ABC 的顺序:
| A | B | C | X | Y | Q |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 | 0 | 1 |
只有当 C = 1 且 A 与 B 不同时,Q 才是 0。这句话就是对这个电路功能的简明描述。
常见错误
同学常把 XOR 当成 OR。
**A = 1、B = 1、C = 1 时的错误做法:**X = 1 OR 1 = 1,Y = 1,Q = 0。
两个相同输入的 XOR 是 0,所以 X = 0,Y = 0,Q = 1。错误做法得到的输出正好相反。要养成习惯,检查两个输入都是 1 的情况,因为那是 OR 和 XOR 唯一不一致的一行。
自测
1. 当两个输入都是 1 时,NAND 门的输出是多少?
查看答案
AND 得 1,再经 NOT 变成 0。
2. 当两个输入都是 0 时,NOR 门的输出是多少?
查看答案
OR 得 0,再经 NOT 变成 1。
3. A 和 B 进入 NOR 门,输出 X。X 进入 NOT 门,输出 Q。把 Q 写成 A、B 的表达式,并说明它的功能。
查看答案
X = A NOR B = NOT (A OR B)。于是 Q = NOT X = NOT (NOT (A OR B)) = A OR B。检验:A = 0、B = 0 时 X = 1,Q = 0。A = 1、B = 0 时 X = 0,Q = 1。两个门合起来,作用就像一个 OR 门。
接下来学什么?
下一步,学习如何证明两个表达式相同:用情形比较等价的表达式。受限伪代码追踪训练器适合逐步追踪算法,布尔与数字表示实验室适合做电路式检查。
如果课堂上教过的电路你能读,遇到新电路就卡住,老师可以在一对一线上计算机科学补习中和你一起建立阅读流程。