逻辑门
布尔函数和真值表
布尔操作
最基本的布尔操作:与(AND)、或(OR)、非(NOT)
- 与(AND)输入都为真时输出真,否则输出假
- 或(OR)输入有一个为真时输出真,否则输出假
- 非(NOT)将输入取反
布尔函数
我们把形如 f(x,y) = x AND (x OR (NOT(y)))
的一系列的布尔操作,叫做布尔函数。
特性:
交换律、结合律、分配律
德摩根律
- NOT(x AND y) = NOT(x) OR NOT(y)
- NOT(x OR y) = NOT(x) AND NOT(y)
真值表
列出所有输入所有可能操作和与这些操作对应的结果
将真值表转化为布尔函数
-
我们只关注所有值为1的行,为每一行写一个只在当前行的输入下值为1的表达式
NOT(x) AND NOT(y) AND NOT(z)
NOT(x) AND y AND NOT(z)
x AND NOT(y) AND NOT(z)
-
将所有表达式用 OR 连接
-
化简
(NOT(x) AND NOT(y) AND NOT(z)) OR (NOT(x) AND y AND NOT(z)) OR (x AND NOT(y) AND NOT(z))
= (NOT(x) AND NOT(z)) AND (y OR NOT(y)) OR (x AND NOT(y) AND NOT(z))
= (NOT(x) AND NOT(z)) OR (x AND NOT(y) AND NOT(z))
= (NOT(x) AND NOT(z)) OR (NOT(y) AND NOT(z))
= NOT(z) AND (NOT(x) OR NOT(y))
由此可见任何复杂的状态最后都可以用 AND、OR、NOT 来表示
NAND(基本逻辑门)
我们已经知道任何复杂的状态最后都可以用 AND、OR、NOT 来表示,并且根据德摩根定律我们知道 AND 和 OR 可以相互转化,那么我们是否可以将任何复杂的状态只用一种操作来表示?
答案是可以的,它就是 NAND,因此它被叫做基本逻辑门。
证明的关键是是用 NAND 实现 AND 和 NOT:
- NOT(x) = (x NAND x)
- x AND y = NOT(x NAND y)
- x OR y = NOT(x) NAND NOT(y)
逻辑门电路实现
我们把这一张需要实现的逻辑门分为三大类
HDL
HDL(Hardware Description Language)即硬件描述语言
在定义一个门时我们必须指定输入(IN)、输出(OUT)、输出规则(PARTS)三个部分,并且 CHIP 后面指定门的名字,在 PARTS 中我们可以使用 And、Or、Not 三种基本操作
HDL 并不会运行,它只是一个门信息的静态描述
几个重要的逻辑门
Mux 和 DMux
- Mux 通 sel 在两个输入中选择一个输出
- DMux 通 sel 把输入中选择性的输出到两个输出之一
下面是他们在通信时的一种用法:复用一根线路完成两个线路的传输
它的优点是,它可以异步完成而不需要 CPU 的干预