💻 章节学习笔记:逻辑门
你好,未来的计算机架构师!欢迎来到驱动你身边每一台电子设备的微观世界。本章“逻辑门”是“计算机组成与架构”部分的绝对核心。
你可能觉得计算机的工作原理像魔法一样,但它们实际上是建立在层层极其简单且可靠的决策逻辑之上的。逻辑门就是这些电子构建模块——它们是执行基本布尔代数运算的微型电路。掌握了它们,就等于理解了 CPU 如何执行每一次计算、指令以及内存存储操作。让我们开始吧!
1. 数字基础:二进制与布尔逻辑
计算机利用电来运行,电信号只有两种状态:通(ON)或断(OFF)。我们使用二进制系统来表示这些状态:
- ON 或高电压 = 1 (真/True)
- OFF 或低电压 = 0 (假/False)
逻辑门接收一个或多个二进制输入,并根据特定的逻辑规则产生单个二进制输出。
关键概念:布尔代数
布尔代数是逻辑的数学基础。它只处理真 (1) 和假 (0)。每一个逻辑门都直接对应一个布尔运算符。
什么是真值表?
真值表至关重要。它是一种数学表格,用于计算并展示逻辑电路在所有可能的输入组合(A, B 等)下的输出结果 (Q)。
如果你有 N 个输入,真值表中就会有 \(2^N\) 种可能的组合。例如,2 个输入(A 和 B)意味着有 \(2^2 = 4\) 行。
2. 三种核心逻辑门
这三种门构成了所有数字电子技术的基础。
2.1. AND 门(与门)
AND 门仅在所有输入均为 1 时产生输出 1(真)。
- 布尔表达式: \(Q = A \cdot B\)(读作“A 与 B”)
- 符号: “D”形符号。(参考大纲图 3.7.6)
- 类比: 银行金库需要同时转动两把钥匙(A 和 B)。只有当钥匙 A 和钥匙 B 同时使用时,金库才会打开(Q=1)。
AND 门真值表(2 个输入)
输入 A | 输入 B | 输出 Q
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
2.2. OR 门(或门)
OR 门只要至少有一个输入为 1,就会产生输出 1(真)。
- 布尔表达式: \(Q = A + B\)(读作“A 或 B”)
- 符号: 弧形符号。(参考大纲图 3.7.6)
- 类比: 房间的灯有两个开关(A 和 B)。如果按下开关 A 或者开关 B,灯就会亮起(Q=1)。
OR 门真值表(2 个输入)
输入 A | 输入 B | 输出 Q
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
2.3. NOT 门(非门 / 反相器)
NOT 门只接受一个输入,并简单地将其反转(将 0 变为 1,或将 1 变为 0)。
- 布尔表达式: \(Q = \bar{A}\)(读作“非 A”或“A 的反”)
- 符号: 一个三角形,输出端带有一个小圆圈(“气泡”)。(参考大纲图 3.7.6)
- 类比: 这是一个“反向”开关。如果输入为激活状态 (1),输出则为非激活状态 (0)。
NOT 门真值表(1 个输入)
输入 A | 输出 Q
0 | 1
1 | 0
3. 衍生逻辑门
这些门是通过组合核心逻辑门创建的,但由于它们非常常用,因此拥有自己独立的符号和规则。
3.1. XOR 门(异或门)
XOR 门在输入不同时产生输出 1(真),如果输入相同(全为 0 或全为 1),则输出 0。
- 布尔表达式: \(Q = A \oplus B\)(读作“A 异或 B”)
- 符号: 类似于 OR 门,但在输入端多了一条弧线。(参考大纲图 3.7.6)
- 类比: 解释 XOR 最好的例子是双向走廊的灯控系统。如果只按了 A 或者只按了 B,灯的状态就会改变(Q=1)。如果两个都按了,状态不变(Q=0)。
XOR 门真值表(2 个输入)
输入 A | 输入 B | 输出 Q
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
3.2. NAND 门(与非门)
NAND 门就是一个 AND 门后面跟着一个 NOT 门。它的输出是 AND 输出的反转。
- 布尔表达式: \(Q = \overline{A \cdot B}\)
- 符号: AND 符号加一个输出气泡。(参考大纲图 3.7.6)
NAND 门真值表(2 个输入)
输入 A | 输入 B | 输出 Q
0 | 0 | 1
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
3.3. NOR 门(或非门)
NOR 门就是一个 OR 门后面跟着一个 NOT 门。它的输出是 OR 输出的反转。
- 布尔表达式: \(Q = \overline{A + B}\)
- 符号: OR 符号加一个输出气泡。(参考大纲图 3.7.6)
NOR 门真值表(2 个输入)
输入 A | 输入 B | 输出 Q
0 | 0 | 1
0 | 1 | 0
1 | 0 | 0
1 | 1 | 0
4. 理解并绘制逻辑电路
本主题的核心技能是在三种表现形式之间进行转换:布尔表达式、逻辑图和真值表。
4.1. 从电路图写出布尔表达式
从左侧的输入端开始,一步步向右推进,直到到达最终输出 Q。
电路示例(A 和 B 是 AND 门的输入,C 是 NOT 门的输入。两个门的输出共同进入一个 OR 门)。
第 1 步: 确定第一个门(AND)的输出: \(X = A \cdot B\)
第 2 步: 确定第二个门(NOT)的输出: \(Y = \bar{C}\)
第 3 步: 最终门(OR)接收 X 和 Y 作为输入: \(Q = X + Y\)
最终布尔表达式: \(Q = (A \cdot B) + \bar{C}\)
4.2. 为复杂电路补全真值表
对于复杂电路,在真值表中创建中间列,分别对应每个内部门的输出。这可以将问题分解为易于处理的步骤!
对于电路 \(Q = (A \cdot B) + \bar{C}\)(有 3 个输入,所以共有 \(2^3=8\) 行):
- 第 1, 2, 3 列:输入 A, B, C(所有 8 种组合)。
- 第 4 列:中间值 X (A AND B 的输出)。
- 第 5 列:中间值 Y (NOT C 的输出)。
- 第 6 列:最终值 Q (X OR Y 的输出)。
步骤详解: 对于输入行 A=1, B=0, C=1:
- X = A AND B = 1 AND 0 = 0
- Y = NOT C = NOT 1 = 0
- Q = X OR Y = 0 OR 0 = 0
记忆助手: 始终在真值表中绘制对应布尔表达式中括号内部的中间列。
5. 逻辑的应用:算术与存储
逻辑门不仅仅是理论;它们是处理器内部算术逻辑单元 (ALU) 的基本组件。
5.1. 半加器 (Half-Adder)
半加器是一个将两个单二进制位(A 和 B)相加的电路。由于 \(1+1 = 10_2\),我们需要两个输出:和 (Sum, S) 和 进位 (Carry, C)。
- 输入: A 和 B(两个相加的位)。
- 输出: 和 (S) 和 进位 (C)。
逻辑与构建:
1. 当且仅当 A 和 B 不同时,和 (S) 为 1。这正是 XOR 门的定义!
S = \(A \oplus B\)
2. 当且仅当 A 和 B 都为 1 时,进位 (C) 为 1(因为 $1+1$ 会产生进位)。这正是 AND 门的定义!
C = \(A \cdot B\)
要构建半加器电路,你需要画一个 XOR 门和一个 AND 门,两者都以 A 和 B 为输入,其中 XOR 的输出为 S,AND 的输出为 C。
5.2. 全加器 (Full-Adder)
进行多位二进制加法时,需要包含来自前一位的进位。全加器执行三个输入的加法:
- 输入 A、输入 B(两个被加的位)
- 进位输入 ($C_{in}$)(来自前一位加法的进位)
输出依然是和 (S) 和进位输出 ($C_{out}$)。
(你必须能够识别和推导全加器的逻辑,但不需要手动构建它。)
5.3. 边沿触发 D 型触发器 (D-Type Flip-Flop)(存储单元)
逻辑门不仅用于计算,还用于构建存储器。D 型触发器是我们必须理解的最简单的时序逻辑(存储)电路。
它被称为 1 位存储单元,因为它正好可以存储一位(0 或 1)。
关键组件与操作:
- 数据输入 (D): 你想要存储的位(0 或 1)。
- 时钟输入 (CLK): 该输入决定了何时存储数据。
- 输出 (Q): 存储的值。
边沿触发机制:
D 型触发器是边沿触发 (Edge-triggered) 的,这意味着它仅在时钟信号改变状态的瞬间(例如从 0 变为 1,称为上升沿)才会处理数据输入 (D)。
- 时钟信号变高(例如上升沿)。
- 读取数据输入 (D) 的当前状态并立即在内部存储。
- 这个存储的值会在输出 Q 上显示。
- 无论数据输入 (D) 发生什么变化,输出 Q 始终保持不变,直到下一次时钟信号变高。
把它想象成一台相机:数据输入就是场景,时钟信号就是快门按钮。相机只在按下按钮的那一瞬间捕捉场景;在再次按下按钮之前,存储的照片内容不会改变。
✔ 章节总结:逻辑门
你已经看到了简单的二进制决策是如何转化为 CPU 和内存核心组件的。请记住:
- 六种逻辑门(AND、OR、NOT、XOR、NAND、NOR)定义了所有基础数字逻辑。
- 使用真值表来系统地推导任何电路的输出。
- 半加器使用 XOR 计算和 (Sum),使用 AND 计算进位 (Carry)。
- D 型触发器是由时钟信号控制的存储单元,它在时钟边沿瞬间捕获数据输入,并保持该值不变直到下一个时钟边沿。
不断练习布尔表达式、电路图和真值表之间的转换——这是考试成功的关键!