复杂逻辑门基础
复习
- 第一章:需要一台计算机,在研究其组成的方向上进行努力
- 第二章:知道了计算机由输入设备、存储器、运算器和输出设备组成,这个体系目前还在沿用
- 第三章:了解了计算机使用二进制(0 和 1)表示所有数据
- 第四章:基本逻辑门(与或非三门)是计算机处理二进制信号的基本单元
TL;DR
- 复杂逻辑门是由基本逻辑门组合而成
- 常见的复杂逻辑门包括:异或门、多路选择器、编码器等
- 复杂逻辑门是构建计算机运算部件的基础
正文
引言
如果只用基本逻辑门来构建电路,就像只用最基本的积木搭建房子一样,繁琐。使用一些预制的复杂部件会让搭建更加方便。设计中为了方便,可以一层一层地抽象和展开( 在计算机科学里,没有什么问题是加一层解决不了的 )。实际流片和生产电子设备的时候,因为全部都用晶体管,所以所有抽象势必都必须要具象到晶体管上。
常见的复杂逻辑门
为了简单起见,此处只给出异或门、同或门、多路选择器这三个最常见的复杂逻辑门。其他复杂逻辑门都可以同理用与或非三门搭建,如:移位器、3-8 译码器、零值判断器、奇偶校验器等。
最后将简单给出根据真值表写表达式的方法,用于搭建其他复杂逻辑门。这部分的高级知识(德摩根定律、卡诺图、表达式化简等)属于数字电路和离散数学,不过多深入。
异或门(XOR)和同或门(XNOR)
异或门的特点:当两个输入不同时输出 1,相同时输出 0。可以理解为“不同则真”。
- 电灯的双控开关(异或门):两个开关的状态不同时灯亮,相同时灯灭
- 过马路的红绿灯(异或门):行人和车辆不能同时通行,必须一方通行时另一方等待
- 检查数据(同或门):检查两个密码或数据是否相同
真值表:
输入 A | 输入 B | XOR 输出 | XNOR 输出 |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
多路选择器(MUX)
多路选择器就像是一个数字版的“多选一”开关。它有多个数据输入端,一个选择输入端,和一个输出端。选择输入决定将哪个数据输入传送到输出端。
- 在多个数据中选择一个输出
- 在数据总线和地址总线等总线上选择输入端的数据
二选一多路选择器的真值表:
- S:Select 首字母
选择信号 Sel | 输入 A | 输入 B | 输出 |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
根据真值表写表达式
前提
-
真值表达式大体和初高中学的多项式相同,如:x² + 3x + 2,但符号体系采用离散数学和布尔逻辑的符号体系
-
如果有 Y = AB + CD 的表达式(Y 是输出,A、B、C、D 是输入),则说明:
- Y = 1 时,可以是 AB 为 1,也可以是 CD 为 1
- AB 和 CD 关系为“或”,加号必须写
- 但只有 A = 1 且 B = 1 时 AB 整体才能为 1
- A 和 B 关系为“与”,乘号可以不写
- Y = 1 时,可以是 AB 为 1,也可以是 CD 为 1
-
如果有 Y = AB + CD 的表达式(Y 是输出,A、B、C、D 是输入),则说明:
- Y = 1 时,可以是 AB 为 1,也可以是 CD 为 1
- 但只有 A = 1 且 B = 0 时 AB 整体才能为 1
- B 意为 B 取反,读作“B 反”
- 当 B = 0 时,B = 1
- 也可以写作 ~B,意义等同
- 同时只有 C = 0 且 D = 1 时 CD 整体才能为 1
方法
- 找出所有输出为真(即输出为 1)的输入组合
- 将这些输入组合用 “或” 连接(也即 + 号),输入组合的数量取决于输出为真的组合数量
- 针对每一个输入组合,如果有输入项为 0,就将该输入项取反
例子
异或门
- 找出所有输出为真(即输出为 1)的输入组合
输入 A | 输入 B | XOR 输出 |
---|---|---|
0 | 1 | 1 |
1 | 0 | 1 |
- 将这些输入组合用 “或” 连接(也即 + 号),输入组合的数量取决于输出为真的组合数量
Y = AB + AB
- 针对每一个输入组合,如果有输入项为 0,就将该输入项取反
Y = AB + AB
多路选择器
- 找出所有输出为真(即输出为 1)的输入组合
选择信号 S | 输入 A | 输入 B | 输出 |
---|---|---|---|
0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 |
- 将这些输入组合用 “或” 连接(也即 + 号),输入组合的数量取决于输出为真的组合数量
Y = SAB + SAB + SAB + SAB
- 针对每一个输入组合,如果有输入项为 0,就将该输入项取反
Y = SAB + SAB + SAB + SAB
根据表达式拼接组合逻辑
方法
- 如果学习了离散数学,可以先对求出的表达式进行化简
- 对每个输入组合,选择与门连接每个输入项,如果有输入项为 0,就提前将该输入项取反
- 对所有 + 号连接的输入组合,选择或门,统一将输入组合的 与门输出 连接到 或门的输入
例子
异或门
- 如果学习了离散数学,可以先对求出的表达式进行化简
因知识所限,暂时无法化简,采用原表达式 Y = AB + AB(其实已经是最简形式了)。
- 对每个输入组合,选择与门连接每个输入项,如果有输入项为 0,就提前将该输入项取反
- 对所有 + 号连接的输入组合,选择或门,统一将输入组合的 与门输出 连接到 或门的输入
多路选择器
- 如果学习了离散数学,可以先对求出的表达式进行化简
使用离散数学化简到最简形式为 Y = SA + SB。
化简过程如下(如果不希望了解,跳过即可,不影响):
1). 分组化简:将 SAB 和 SAB 合并为 SA,将 SAB + SAB 合并为 SB。
(相当于提取公因式:SAB + SAB = SA(B + B),而 B + B 相当于一个信号和它的相反值相或,其结果恒为 1,所以消去即可。后者同理。)
2). 观察,已经无法再化简,最简表达式 Y = SA + SB。
- 对每个输入组合,选择与门连接每个输入项,如果有输入项为 0,就提前将该输入项取反
- 对所有 + 号连接的输入组合,选择或门,统一将输入组合的 与门输出 连接到 或门的输入
复杂逻辑门的应用
复杂逻辑门是由基本逻辑门组合而成的更高级的电路单元,可以大大简化电路设计,提高设计效率,同时可以完成更复杂的功能。我们下一章将设计半加器,到时候我们将会看到:半加器是一个复杂逻辑门的组合。
复杂逻辑门的意义
- 简化设计 :用一个复杂逻辑门替代多个基本逻辑门的组合
- 提高可靠性 :减少了电路中的元件数量,降低了故障的可能
- 标准化 :提供了标准的功能模块,方便电路设计
补充
其实异或门有很多种设计方案,既可以使用基础三门,也可以使用 nand 或 nor 等。
总体来讲,用的逻辑门越少,开销越少,效率越高。如果看过《第四章:简单逻辑门》的晶体管补充部分,就可以很明显的看出,下面两种设计方案中,第一种方案在晶体管层面要好很多。(如果遗忘了,稍做提醒: and 在晶体管层面其实由 nand + not 搭建而来。)
小结
知识点
- 复杂逻辑门的概念和用途
- 异或门
- 同或门
- 多路选择器
参考资料
- Wikipedia(zh):异或门:异或门的详细介绍
- Wikipedia(zh):多路复用器:多路选择器的工作原理
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪