与非门 作为基础门电路

与门, 或门 和 非门 这三种门电路是最基础的门电路, 从这三种基本的门电路出发, 通过各种组合手段, 已经得到了诸如 与非门, 或非门等组合门电路.

比如 与非门 就是 与门 与 非门 的结合. 但如果说, 也可以把 与非门 视作为一种最基础的门电路, 通过它也可以组合出 与门, 或门, 非门, 以及进一步组成 或非门等, 你觉得可能吗?

构建 非门

先来看最简单的 非门, 通过 与非门 要怎么去构建它呢? 首先不难注意到的一点是, 非门只有一个输入端, 而 与非门 有两个输入端, 那么很容易猜到, 这一个的外部输入得同时作用于 与非门 的两个输入端, 也即如下:

由 与非门 构成的 非门

然后经过验证, 不难发现, 这样连接之后的行为逻辑正好符合 非门 的要求:

由 与非门 构成的 非门 两种情况

其实如果去看下 与非门 真值表:

A B Y
0 0 1
0 1 1
1 0 1
1 1 0

把 A 不等于 B 的中间两条去掉:

A B Y
0 0 1
1 1 0

剩下两条因为 A = B, 所以可以把 B 去掉:

A Y
0 1
1 0

而这个最终的结果不就是 非门 的真值表吗? 所以, 非门 的真值表其实是 与非门 的一个子集:

可以认为 非门 的内部实现就是一个 与非门, 如下:

非门 的内部实现

构建 与门

前面已经构建了 非门, 而我们知道, 与门 与 与非门 之间就是简单的取反关系.

与门 接一个 非门 就构成了 与非门; 而如果 与非门 再接一个 非门, 两次取反, 就如同 负负得正 那般, 就又相当于是 与门:

所以要想从 与非门 得到 与门, 就为它再接一个 非门即可:

由 与非门 和 非门 构成的 与门

注: 因为前面已经构建了 非门, 这里就把它当做基本器件用了.

当然, 不用 非门 也行, 那就整两个 与非门, 然后把后者接成 非门 的形式:

全部由 与非门 构成的 与门

构建 或门

要构建 或门 需要知道一点 布尔代数(也即逻辑代数) 方面的知识. 在布尔代数中, 有这样一个定律:

!(A | B) = !A & !B

上述表达式中, 其具体符号含义前面也已说过:

  • | 表示 ;
  • & 表示 ;
  • ! 表示 , 也叫 取反.

注: ! 取反的优先级最高, 除非有括号改变优先级.

上述表达式的意思是: 对 (A 或 B) 的结果 取反, 相当于分别先对 A 和 B 取反 然后再对两者 取与.

在逻辑代数(布尔代数)中, 这个称为 德·摩根定律(De Morgan's Law), 属于 反演律 的一个特例.

如果不太理解为什么这样, 可以简单通过列出真值表验证:

A B Y=(A | B) !Y !A !B (!A & !B) = !Y !(!A & !B) = !(!Y) = Y
0 0 0 1 1 1 1 0
0 1 1 0 1 0 0 1
1 0 1 0 0 1 0 1
1 1 1 0 0 0 0 1

对于像布尔代数这种简单的二值逻辑, 有时也没什么好证明的, 只需简单把所有的情况枚举出来, 就能得出结论了.

因此, 要把 或逻辑 通过 与逻辑非逻辑 表达出来, 可以这样去推演:

A | B = !!(A | B) // 两次取反, 结果不变
      = !(!(A | B))
      = !(!A & !B) // 德摩根定律

最终, 或门 可以用 非门 和 与门 构建.

另: 上述最后整个的表达式, 括号内是 取与, 括号外是 取非, 因此可以看作是对 !A!B 取与非, 因为恰好是 取与 后再 取非, 合起来正好是 与非, 可以直接用一个 与非门 表达.

所以, 也可以说, 或门 可以用 非门 和 与非门 直接构建.

如果你用 非门 和 与门 去弄, 因为 与门 也不过就是 与非门 再取反, 取反后又取反, 正好抵消, 因此两次取反可以去掉, 最终殊途同归.

这也说明了, 虽然前面说 与门, 或门 和 非门 是最基本的, 但 或门 其实可以由 与门 和 非门 表达出来. 之所以把它单独列出, 是因为 或门 是一个非常常见的逻辑.

全部由 与非门 构成的 或门示意图如下:

全部由 与非门 构成的 或门

其中, 左边两个分别对两个输入取反.

构建 或非门

现在, 或门 也通过 与非门 构建出来了, 或非门 不过是在 或门 的基础上取反, 将前述结果再取反即可:

全部由 与非门 构成的 或非门

综上, 可以看到, 把 与非门 视作一种基础构件是可行的.

至于为什么这样, 是由于某些类型晶体管的简单组合就天然地具备 与非门 的特性, 或者说其从生产工艺或是生产成本上看是最简单最划算的, 因此在最底层就把它作为最基本的元件.

当然了, 设计的时候还是可以在 与门, 或门 和 非门 的基础上去做, 无非后续再做些转换. 但如果你习惯全部用 与非门 去设计, 那也是可以的.

results matching ""

    No results matching ""