使用 DeMorgans 我得到:
~~(abc) // ~ is the not.
我的问题是当我尝试构建电路时,与非门只需要 2 个输入。那么我将如何将其拆分为 3?如果它是一个与门,我将只使用两个,等式将是:
(a AND b) AND c
但是,这不适用于我的 NAND,因为
~((a NAND b) NAND c) != (abc)
使用 DeMorgans 我得到:
~~(abc) // ~ is the not.
我的问题是当我尝试构建电路时,与非门只需要 2 个输入。那么我将如何将其拆分为 3?如果它是一个与门,我将只使用两个,等式将是:
(a AND b) AND c
但是,这不适用于我的 NAND,因为
~((a NAND b) NAND c) != (abc)
我建议使用 Rott's grids。Rott 网格是 De Morgan 定律的图形应用,对于解决像您这样的问题特别有用。一些逻辑门比其他逻辑门需要更多的晶体管。减少逻辑门潜在延迟的需要可能是使用 NOR 或 NAND 门优化设计的动机。使用 Rott 的网格可以非常快速地找到相应的功能 - 使用您需要的逻辑门:
每个 Rott 的网格都是根据以下三个原则创建的:
以下所有五个网格都是给定函数的不同表示:
a ⋅ b ⋅ c a ⋅ b ⋅ c a ⋅ b ⋅ c a ⋅ b ⋅ c a ⋅ b ⋅ c
| | ----------- ----------- ----------- -----------
a | b | c + + + + + + + +
----------- ----------- | ------ | ------
⋅ ⋅ ⋅ ⋅ | ⋅ | ⋅
| ------ ------ | | ------ | |
| + + | | + ¬a | b | c
| ------ ------ | | |
| ⋅ ⋅ | ¬a | ¬b|¬c
| | | |
a | b | c a | b | c
第一个网格并不是很有用,它只是由 3 输入 AND 实现的原始函数:
f = a ⋅ b ⋅ c
第二个 Rott 网格仅使用 2 输入 NAND 实现。您可以使用两个 2 输入 NAND 和两个反相器或四个 2 输入 NAND——其中两个在反相器的位置,因为两个引脚上具有相同输入的 2 输入 NAND 会反转信号。
f = ¬(nand(a,¬(nand(b,c))))
第三个罗特的网格只是第一个的变体。
f = ¬(nand(¬(nand(a,b)),c))
第四个罗特网格可以通过使用两个 2 输入 NOR 和四个反相器来实现。反相器可以用 2 输入 NOR 或 2 输入 NAND 代替。
f = nor(¬a,¬(nor(¬b,¬c))))
第五罗特栅极可以通过1个2输入NOR、1个2输入NAND和1个反相器的组合来实现。
f = nor(not(a),nand(b,c))
(图片是使用在线乳胶工具生成的。)
2 ~ 是否意味着您不想输出两次?如果是这样,~~(abc)=(abc),(两个NOT相互抵消)所以你可以做(a AND b)AND c。
如果您只想取 (abc) 的 NOT 一次,您可以先执行 (a AND b) AND c,然后您可以将该输出通过逆变器。你需要两个芯片而不是一个。
如果你想要的只是一个当所有输入为 1 时输出 0 的电路......
您可以简单地检查它们中的任何一个是否为 0,然后否定它。
你已经说了答案:德摩根定律。只需应用它们:~(a^b^c) = ~a or ~b or ~c
虽然也许我错过了一些东西。还有其他我可能没有注意到的限制吗?