复杂逻辑门基础

复习

  1. 第一章:需要一台计算机,在研究其组成的方向上进行努力
  2. 第二章:知道了计算机由输入设备、存储器、运算器和输出设备组成,这个体系目前还在沿用
  3. 第三章:了解了计算机使用二进制(0 和 1)表示所有数据
  4. 第四章:基本逻辑门(与或非三门)是计算机处理二进制信号的基本单元

TL;DR

  • 复杂逻辑门是由基本逻辑门组合而成
  • 常见的复杂逻辑门包括:异或门、多路选择器、编码器等
  • 复杂逻辑门是构建计算机运算部件的基础

正文

引言

  如果只用基本逻辑门来构建电路,就像只用最基本的积木搭建房子一样,繁琐。使用一些预制的复杂部件会让搭建更加方便。设计中为了方便,可以一层一层地抽象和展开( 在计算机科学里,没有什么问题是加一层解决不了的 )。实际流片和生产电子设备的时候,因为全部都用晶体管,所以所有抽象势必都必须要具象到晶体管上。

常见的复杂逻辑门

  为了简单起见,此处只给出异或门、同或门、多路选择器这三个最常见的复杂逻辑门。其他复杂逻辑门都可以同理用与或非三门搭建,如:移位器、3-8 译码器、零值判断器、奇偶校验器等。

  最后将简单给出根据真值表写表达式的方法,用于搭建其他复杂逻辑门。这部分的高级知识(德摩根定律、卡诺图、表达式化简等)属于数字电路和离散数学,不过多深入。

异或门(XOR)和同或门(XNOR)

  异或门的特点:当两个输入不同时输出 1,相同时输出 0。可以理解为“不同则真”。

  • 电灯的双控开关(异或门):两个开关的状态不同时灯亮,相同时灯灭
  • 过马路的红绿灯(异或门):行人和车辆不能同时通行,必须一方通行时另一方等待
  • 检查数据(同或门):检查两个密码或数据是否相同

  真值表:

输入 A输入 BXOR 输出XNOR 输出
0001
0110
1010
1101

多路选择器(MUX)

  多路选择器就像是一个数字版的“多选一”开关。它有多个数据输入端,一个选择输入端,和一个输出端。选择输入决定将哪个数据输入传送到输出端。

  • 在多个数据中选择一个输出
  • 在数据总线和地址总线等总线上选择输入端的数据

  二选一多路选择器的真值表:

  • S:Select 首字母
选择信号 Sel输入 A输入 B输出
0000
0010
0101
0111
1000
1011
1100
1111

根据真值表写表达式

前提

  • 真值表达式大体和初高中学的多项式相同,如: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 = 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. 找出所有输出为真(即输出为 1)的输入组合
  2. 将这些输入组合用 “或” 连接(也即 + 号),输入组合的数量取决于输出为真的组合数量
  3. 针对每一个输入组合,如果有输入项为 0,就将该输入项取反

例子

异或门
  1. 找出所有输出为真(即输出为 1)的输入组合
输入 A输入 BXOR 输出
011
101
  1. 将这些输入组合用 “或” 连接(也即 + 号),输入组合的数量取决于输出为真的组合数量

  Y = AB + AB

  1. 针对每一个输入组合,如果有输入项为 0,就将该输入项取反

  Y = AB + AB

多路选择器
  1. 找出所有输出为真(即输出为 1)的输入组合
选择信号 S输入 A输入 B输出
0101
0111
1011
1111
  1. 将这些输入组合用 “或” 连接(也即 + 号),输入组合的数量取决于输出为真的组合数量

  Y = SAB + SAB + SAB + SAB

  1. 针对每一个输入组合,如果有输入项为 0,就将该输入项取反

  Y = SAB + SAB + SAB + SAB

根据表达式拼接组合逻辑

方法

  1. 如果学习了离散数学,可以先对求出的表达式进行化简
  2. 对每个输入组合,选择与门连接每个输入项,如果有输入项为 0,就提前将该输入项取反
  3. 对所有 + 号连接的输入组合,选择或门,统一将输入组合的 与门输出 连接到 或门的输入

例子

异或门
  1. 如果学习了离散数学,可以先对求出的表达式进行化简

  因知识所限,暂时无法化简,采用原表达式 Y = AB + AB(其实已经是最简形式了)。

  1. 对每个输入组合,选择与门连接每个输入项,如果有输入项为 0,就提前将该输入项取反

  1. 对所有 + 号连接的输入组合,选择或门,统一将输入组合的 与门输出 连接到 或门的输入

多路选择器
  1. 如果学习了离散数学,可以先对求出的表达式进行化简

  使用离散数学化简到最简形式为 Y = SA + SB。

  化简过程如下(如果不希望了解,跳过即可,不影响):

  1). 分组化简:将 SABSAB 合并为 SA,将 SAB + SAB 合并为 SB。

  (相当于提取公因式:SAB + SAB = SA(B + B),而 B + B 相当于一个信号和它的相反值相或,其结果恒为 1,所以消去即可。后者同理。)

  2). 观察,已经无法再化简,最简表达式 Y = SA + SB。

  1. 对每个输入组合,选择与门连接每个输入项,如果有输入项为 0,就提前将该输入项取反

  1. 对所有 + 号连接的输入组合,选择或门,统一将输入组合的 与门输出 连接到 或门的输入

复杂逻辑门的应用

  复杂逻辑门是由基本逻辑门组合而成的更高级的电路单元,可以大大简化电路设计,提高设计效率,同时可以完成更复杂的功能。我们下一章将设计半加器,到时候我们将会看到:半加器是一个复杂逻辑门的组合。

复杂逻辑门的意义

  1. 简化设计 :用一个复杂逻辑门替代多个基本逻辑门的组合
  2. 提高可靠性 :减少了电路中的元件数量,降低了故障的可能
  3. 标准化 :提供了标准的功能模块,方便电路设计

补充

  其实异或门有很多种设计方案,既可以使用基础三门,也可以使用 nand 或 nor 等。

  总体来讲,用的逻辑门越少,开销越少,效率越高。如果看过《第四章:简单逻辑门》的晶体管补充部分,就可以很明显的看出,下面两种设计方案中,第一种方案在晶体管层面要好很多。(如果遗忘了,稍做提醒: and 在晶体管层面其实由 nand + not 搭建而来。)

小结

知识点

  • 复杂逻辑门的概念和用途
  • 异或门
  • 同或门
  • 多路选择器

参考资料

  1. Wikipedia(zh):异或门:异或门的详细介绍
  2. Wikipedia(zh):多路复用器:多路选择器的工作原理

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪