【问题标题】:How to convert (abc) to a NAND gate?如何将(abc)转换为与非门?
【发布时间】:2013-02-14 02:15:49
【问题描述】:

使用 DeMorgans 我得到:

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

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

(a AND b) AND c

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

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

【问题讨论】:

    标签: boolean-logic boolean-expression circuit-diagram


    【解决方案1】:

    我建议使用 Rott 的网格。 Rott 网格是 De Morgan 定律的图形应用,对于解决像您这样的问题特别有用。一些逻辑门比其他逻辑门需要更多的晶体管。减少逻辑门潜在延迟的需要可能是使用 NOR 或 NAND 门优化设计的动机。使用 Rott 的网格可以非常快速地找到相应的函数 - 使用您需要的逻辑门:

    每个Rott的网格都是根据这三个原则创建的:

    • De Morgan 定律通过在 ⋅(连词)和 +(析取词)之间切换并用水平线(否定词)分开来得到尊重,
    • 垂直线分隔各个输入,改变逻辑门输入的数量,
    • 在最后一行放置输入变量的质数或负数形式 ​​- 这由它们上方的水平线数单独确定。

    以下五个网格都是给定函数的不同表示:

     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))
    

    第四个Rott's grid可以通过使用两个2输入NOR和四个反相器来实现。反相器可以用 2 输入 NOR 或 2 输入 NAND 代替。

    f = nor(¬a,¬(nor(¬b,¬c))))
    

    第五个Rott's grid可以通过1个2输入NOR、1个2输入NAND和1个反相器组合实现。

    f = nor(not(a),nand(b,c))
    

    (图片是使用online latex tool生成的。)

    【讨论】:

      【解决方案2】:

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

      您可以简单地检查其中任何一个是否为 0,然后取反。

      您已经给出了答案:德摩根定律。只需应用它们: ~(a^b^c) = ~a 或 ~b 或 ~c

      虽然也许我错过了什么。还有其他我可能没有意识到的限制吗?

      【讨论】:

      • 我只想使用 NAND。我在某处读到CPU只有与非门。不管怎样,我只想使用 NAND。
      • 我认为您准备的可能是 CPU 可以仅使用 NAND 门和复杂的接线来制造。请给我一分钟的时间来勾勒一下如何仅使用 NAND 来完成这项工作
      • 所以,请记住,您可以将“a”连接到与非门的两个输入端并获得一个反相器(或“非门”)。如果这样做,您可以轻松地从 3 个 NAND 门中创建一个或门。
      【解决方案3】:

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

      如果你只想取 (abc) 的 NOT 一次,你可以先做 (a AND b) AND c,然后你可以通过一个反相器传递那个输出。你需要两个芯片而不是一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-28
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多