mirror of
https://github.com/handsomezhuzhu/handsomezhuzhu.github.io.git
synced 2026-02-20 20:00:14 +00:00
15 KiB
15 KiB
一、逻辑代数定律和计算规则
| 定律/规则名称 | 表达式 | 解释 |
|---|---|---|
| 恒等律 | $A + 0 = A$A \cdot 1 = A |
任何变量与0相加或与1相乘等于自身 |
| 零律 | $A + 1 = 1$A \cdot 0 = 0 |
任何变量与1相加或与0相乘等于1或0 |
| 幂等律 | $A + A = A$A \cdot A = A |
任何变量与自身相加或相乘等于自身 |
| 互补律 | $A + \overline{A} = 1$A \cdot \overline{A} = 0 |
任何变量与其补码相加等于1,相乘等于0 |
| 交换律 | ||
| 加法交换律 | A + B = B + A |
加法运算的交换律 |
| 乘法交换律 | A \cdot B = B \cdot A |
乘法运算的交换律 |
| 结合律 | ||
| 加法结合律 | (A + B) + C = A + (B + C) |
加法运算的结合律 |
| 乘法结合律 | (A \cdot B) \cdot C = A \cdot (B \cdot C) |
乘法运算的结合律 |
| 分配律 | ||
| 乘法分配律 | A \cdot (B + C) = A \cdot B + A \cdot C |
乘法对加法的分配律 |
| 加法分配律 | A + (B \cdot C) = (A + B) \cdot (A + C) |
加法对乘法的分配律 |
| 吸收律 | ||
| 吸收律1 | A + A \cdot B = A |
吸收律的第一种形式 |
| 吸收律2 | A \cdot (A + B) = A |
吸收律的第二种形式 |
| 德摩根定律 | ||
| 德摩根定律1 | \overline{A + B} = \overline{A} \cdot \overline{B} |
逻辑加法的德摩根定律 |
| 德摩根定律2 | \overline{A \cdot B} = \overline{A} + \overline{B} |
逻辑乘法的德摩根定律 |
| 简化定律 | ||
| 简化定律1 | A + \overline{A} \cdot B = A + B |
简化逻辑表达式 |
| 简化定律2 | A \cdot (\overline{A} + B) = A \cdot B |
简化逻辑表达式 |
| 共识定律 | ||
| 共识定律 (积之和形式) | AB + \overline{A}C + BC = AB + \overline{A}C |
较难,常用于逻辑化简。项 BC 是 AB 和 AC 的共识项,是冗余的。 |
| 共识定律 (和之积形式) | (A+B)(\overline{A}+C)(B+C) = (A+B)(\overline{A}+C) |
较难,常用于逻辑化简。项 (B+C) 是 (A+B) 和 (A+C) 的共识项,是冗余的。 |
| 反演定律 | ||
| 反演定律 | A = \overline{\overline{A}} |
变量的双重否定等于自身 |
推导过程
-
基本定律
- 恒等律:
A + 0 = A和A \cdot 1 = A是逻辑代数的基本定义。 - 零律:
A + 1 = 1和A \cdot 0 = 0也是逻辑代数的基本定义。 - 幂等律:
A + A = A和A \cdot A = A是因为逻辑加法和乘法运算的特性。 - 互补律:
A + \overline{A} = 1和A \cdot \overline{A} = 0是逻辑变量和其补码的定义。
- 恒等律:
-
交换律
- 加法交换律:
A + B = B + A是逻辑加法的交换特性。 - 乘法交换律:
A \cdot B = B \cdot A是逻辑乘法的交换特性。
- 加法交换律:
-
结合律
- 加法结合律:
(A + B) + C = A + (B + C)是逻辑加法的结合特性。 - 乘法结合律:
(A \cdot B) \cdot C = A \cdot (B \cdot C)是逻辑乘法的结合特性。
- 加法结合律:
-
分配律
- 乘法分配律:
A \cdot (B + C) = A \cdot B + A \cdot C是逻辑乘法对加法的分配特性。 - 加法分配律:
A + (B \cdot C) = (A + B) \cdot (A + C)是逻辑加法对乘法的分配特性。
- 乘法分配律:
-
吸收律
- 吸收律1:
A + A \cdot B = A可以从A + A \cdot B = A \cdot (1 + B) = A \cdot 1 = A推导得出。 - 吸收律2:
A \cdot (A + B) = A可以从A \cdot (A + B) = A \cdot A + A \cdot B = A + A \cdot B = A推导得出。
- 吸收律1:
-
德摩根定律
- 德摩根定律1:
\overline{A + B} = \overline{A} \cdot \overline{B}是逻辑加法的德摩根定律。 - 德摩根定律2:
\overline{A \cdot B} = \overline{A} + \overline{B}是逻辑乘法的德摩根定律。
- 德摩根定律1:
-
简化定律
- 简化定律1:
A + \overline{A} \cdot B = A + B可以从A + \overline{A} \cdot B = (A + \overline{A}) \cdot (A + B) = 1 \cdot (A + B) = A + B推导得出。 - 简化定律2:
A \cdot (\overline{A} + B) = A \cdot B可以从A \cdot (\overline{A} + B) = A \cdot \overline{A} + A \cdot B = 0 + A \cdot B = A \cdot B推导得出。
- 简化定律1:
-
共识定律
- 共识定律:
(A + B) \cdot (\overline{A} + C) = (A + B) \cdot (\overline{A} + C) \cdot (B + C)可以从(A + B) \cdot (\overline{A} + C) = (A + B) \cdot (\overline{A} + C) \cdot (B + C)推导得出,因为 $(A + B) \cdot (\overline{A} + C) \leq (B + C)$。
- 共识定律:
-
反演定律
- 反演定律:
A = \overline{\overline{A}}是逻辑变量的双重否定特性。
- 反演定律:
二、基本门电路
1. 非门
Y = \overline{A}
2. 与门
Y = A \cdot B
真值表:
| 输入 A | 输入 B | 输出 Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
3. 或门
Y = A + B
真值表:
| 输入 A | 输入 B | 输出 Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
4. 与非门
与非门是“与门”和“非门”的结合。
Y = \overline{A \cdot B}
真值表:
| 输入 A | 输入 B | 输出 Y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
5. 或非门
或非门是“或门”和“非门”的结合。
Y = \overline{A + B}
真值表:
| 输入 A | 输入 B | 输出 Y |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
6. 异或门
当两个输入不相同时,输出为高电平(1);当两个输入相同时,输出为低电平(0)。这也被称为“半加器”的求和逻辑。
逻辑表达式:
Y = A \oplus B
真值表:
| 输入 A | 输入 B | 输出 Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
三、编码
1. 原码、反码和补码
为了在二进制系统中表示正负数,我们通常会使用最高位作为符号位。
- 符号位为 0 代表正数。
- 符号位为 1 代表负数。
原码
- 规则: 符号位 + 数值的绝对值的二进制表示。
- 正数: 符号位为0,其余位表示数值。
- 例如,
+12的原码是 00001100。
- 例如,
- 负数: 符号位为1,其余位表示数值。
- 例如,
-12的原码是 10001100。
- 例如,
- 缺点:
- 零的表示不唯一:
+0是 00000000,-0是 10000000。 - 进行加减法运算时,需要单独处理符号位,硬件实现复杂。
- 零的表示不唯一:
反码
反码的出现是为了简化减法运算。
- 规则:
- 正数的反码与其原码相同。
- 负数的反码是在其原码的基础上,符号位不变,其余各位按位取反。
- 示例:
+12的原码是00001100,其反码也是 00001100。-12的原码是10001100,其反码是 11110011 (符号位1不变,后面7位0001100按位取反得到1110011)。
- 缺点:
- 仍然存在“双零”问题:
+0的反码是 00000000,-0的反码是 11111111。 - 跨零运算会产生循环进位问题。
- 仍然存在“双零”问题:
补码
补码是现代计算机系统中最常用的有符号数表示法,它解决了原码和反码的缺点。
- 规则:
- 正数的补码与其原码相同。
- 负数的补码是其反码加 1。
- 求负数补码的方式:
- 从其原码的最低位(最右边)向左找,找到的第一个 1 保持不变,这个 1 左边的所有位(不含符号位)按位取反,符号位仍为1。
- 示例:
+12的补码是 00001100。-12的补码求法:- 原码:
10001100 - 反码:
11110011 - 加 1:
11110011 + 1= 11110100。
- 原码:
- 优点:
- 零的表示唯一: 00000000。
- 简化运算: 可以将减法运算转换为加法运算。例如,计算
A - B等同于计算A + (-B)的补码。 - 对于一个
n位的补码系统,其表示范围为 $[-2^{n-1}, 2^{n-1}-1]$。例如,8位补码的范围是 $[-128, 127]$。
总结表格 (以 ±12 为例)
| 值 | 原码 | 反码 | 补码 |
|---|---|---|---|
| +12 | 00001100 | 00001100 | 00001100 |
| -12 | 10001100 | 11110011 | 11110100 |
2. BCD 码
BCD码是用二进制来表示十进制数的一种编码方式。它与直接将十进制数转换为二进制数不同。
- 规则: 用 4 位二进制数来表示一位十进制数(0-9)。最常用的是 8421 BCD 码,其中各位的权值从高到低分别是 8、4、2、1。
- 特点:
- 它介于二进制和十进制之间,便于人机交互(如数码管显示、计算器)。
- 运算比纯二进制复杂,但比直接处理十进制字符简单。
- 由于用4位二进制表示一位十进制数,所以
1010到1111这 6 个码是无效或非法的。
BCD 码对照表
| 十进制 | BCD 码 |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
示例: 将十进制数 129 转换为 BCD 码。
- 将每一位十进制数分开:
1、2、9。 - 将每一位分别转换为对应的4位BCD码:
1 \rightarrow 00012 \rightarrow 00109 \rightarrow 1001
- 将它们组合起来:
(129)_{10} = (0001 \ 0010 \ 1001)_{\text{BCD}}
对比: 如果将 (129)₁₀ 直接转换为纯二进制,结果是 10000001。这与它的 BCD 码是完全不同的。
四、加法器、编码器、译码器、选择器、比较器
五、触发器
1. RS 触发器
最基本的触发器,但存在一个不确定状态,在实际应用中较少直接使用。
- 输入:
S(Set, 置位),R(Reset, 复位) - 输出:
Q(状态输出),\overline{Q}(反向输出)
功能表
这张表描述了在不同输入下,下一个状态 Q_{n+1} 是什么。
S |
R |
Q_{n+1} |
功能 |
|---|---|---|---|
| 0 | 0 | Q_n |
保持 |
| 0 | 1 | 0 | 复位/置0 |
| 1 | 0 | 1 | 置位/置1 |
| 1 | 1 | ? | 禁止/不定 |
特性方程
Q_{n+1} = S + \overline{R}Q_n \quad (\text{约束条件: } S \cdot R = 0)
激励表
这张表在电路设计时非常有用,它回答了“为了让状态从 Q_n 变为 $Q_{n+1}$,输入 S 和 R 应该是什么?”。(X表示Don't Care,即0或1均可)
Q_n |
Q_{n+1} |
S |
R |
|---|---|---|---|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | X | 0 |
2. JK 触发器
JK 触发器是 RS 触发器的改进版,它解决了 RS 触发器的“禁止”状态问题,是最通用的触发器。
- 输入:
J(功能类似S),K(功能类似R) - 输出:
Q,\overline{Q}
功能表
J |
K |
Q_{n+1} |
功能 |
|---|---|---|---|
| 0 | 0 | Q_n |
保持 |
| 0 | 1 | 0 | 复0 |
| 1 | 0 | 1 | 置1 |
| 1 | 1 | \overline{Q_n} |
**翻转 ** |
JK触发器将RS触发器的禁止状态(1,1输入)变成了一个非常有用的翻转功能。
特性方程
Q_{n+1} = J\overline{Q_n} + \overline{K}Q_n
激励表
Q_n |
Q_{n+1} |
J |
K |
|---|---|---|---|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | X |
| 1 | 0 | X | 1 |
| 1 | 1 | X | 0 |
3. D 触发器
D 触发器的功能非常直接:在时钟脉冲到来时,将输入 D 的值传递给输出 $Q$。它常被用作数据锁存器或移位寄存器的基本单元。
- 输入:
D(Data) - 输出:
Q,\overline{Q}
功能表
D |
Q_{n+1} |
功能 |
|---|---|---|
| 0 | 0 | 置0 |
| 1 | 1 | 置1 |
无论当前状态 Q_n 是什么,下一个状态 Q_{n+1} 都等于时钟边沿到来时的 D 输入值。
**特性方程 **
Q_{n+1} = D
**激励表 **
Q_n |
Q_{n+1} |
D |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
4. T 触发器
T 触发器是一个翻转触发器。当输入 T=1 时,状态翻转;当 T=0 时,状态保持不变。它常用于构建计数器。
- 输入:
T - 输出:
Q,\overline{Q}
功能表
T |
Q_{n+1} |
功能 |
|---|---|---|
| 0 | Q_n |
保持 |
| 1 | \overline{Q_n} |
翻转 |
特性方程
Q_{n+1} = T \oplus Q_n = T\overline{Q_n} + \overline{T}Q_n
激励表
Q_n |
Q_{n+1} |
T |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |