3

使用 DeMorgans 我得到:

~~(abc)  // ~ is the not.

我的问题是当我尝试构建电路时,与非门只需要 2 个输入。那么我将如何将其拆分为 3?如果它是一个与门,我将只使用两个,等式将是:

(a AND b) AND c

但是,这不适用于我的 NAND,因为

~((a NAND b) NAND c) != (abc)
4

3 回答 3

1

我建议使用 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))

(图片是使用在线乳胶工具生成的。)

于 2016-03-10T10:12:49.150 回答
0

2 ~ 是否意味着您不想输出两次?如果是这样,~~(abc)=(abc),(两个NOT相互抵消)所以你可以做(​​a AND b)AND c。

如果您只想取 (abc) 的 NOT 一次,您可以先执行 (a AND b) AND c,然后您可以将该输出通过逆变器。你需要两个芯片而不是一个。

于 2013-02-14T02:31:57.280 回答
0

如果你想要的只是一个当所有输入为 1 时输出 0 的电路......

您可以简单地检查它们中的任何一个是否为 0,然后否定它。

你已经说了答案:德摩根定律。只需应用它们:~(a^b^c) = ~a or ~b or ~c

虽然也许我错过了一些东西。还有其他我可能没有注意到的限制吗?

于 2013-02-14T02:25:50.283 回答