【问题标题】:circuits using karnaugh's map technique使用卡诺图技术的电路
【发布时间】:2017-03-08 15:02:59
【问题描述】:

要设计一个组合电路来计算 4 位输入中 1 位的出现次数。但是,输入 1111 是电路的无效输入,在这种情况下输出将为 00。

此类电路的一个有效输入可能是 1110,输出为 11;另一个有效输入可能是 1010,输出为 10。

画出电路的真值表。使用卡诺图设计电路并使用 AND、OR 和 NOT 门绘制电路。

【问题讨论】:

    标签: boolean-logic boolean-expression circuit karnaugh-map


    【解决方案1】:

    因为4bit的输入最多可以有4个1,所以我们可以把输出编码成3bit长的二进制数。

    真值表如下所示:

     w x y z   y_2 y_1 y_0
    ---------+-------------   number of positive bits
     0 0 0 0 |  0   0   0   ~ 0
     0 0 0 1 |  0   0   1   ~ 1
     0 0 1 0 |  0   0   1   ~ 1
     0 0 1 1 |  0   1   0   ~ 2
    ---------+-------------
     0 1 0 0 |  0   0   1   ~ 1
     0 1 0 1 |  0   1   0   ~ 2
     0 1 1 0 |  0   1   0   ~ 2
     0 1 1 1 |  0   1   1   ~ 3
    ---------+-------------
     1 0 0 0 |  0   0   1   ~ 1
     1 0 0 1 |  0   1   0   ~ 2
     1 0 1 0 |  0   1   0   ~ 2
     1 0 1 1 |  0   1   1   ~ 3
    ---------+------------- 
     1 1 0 0 |  0   1   0   ~ 2
     1 1 0 1 |  0   1   1   ~ 3
     1 1 1 0 |  0   1   1   ~ 3
     1 1 1 1 |  1   0   0   ~ 4
    

    但是! 在您的情况下,输出只有两位。您的规范还认为 1111 输入与 00 输出无效。因此,您可以简单地删除真值表中最重要的列,不会有其他变化:

     w x y z   y_1 y_0
    ---------+---------   number of positive bits
     0 0 0 0 |  0   0   ~ 0
     0 0 0 1 |  0   1   ~ 1
     0 0 1 0 |  0   1   ~ 1
     0 0 1 1 |  1   0   ~ 2
    ---------+-------------
     0 1 0 0 |  0   1   ~ 1
     0 1 0 1 |  1   0   ~ 2
     0 1 1 0 |  1   0   ~ 2
     0 1 1 1 |  1   1   ~ 3
    ---------+-------------
     1 0 0 0 |  0   1   ~ 1
     1 0 0 1 |  1   0   ~ 2
     1 0 1 0 |  1   0   ~ 2
     1 0 1 1 |  1   1   ~ 3
    ---------+------------- 
     1 1 0 0 |  1   0   ~ 2
     1 1 0 1 |  1   1   ~ 3
     1 1 1 0 |  1   1   ~ 3
     1 1 1 1 |  0   0   ~ invalid, showing zeros
    

    现在您可以使用不同的样式来最小化y_1y_0 的输出函数,但我认为卡诺图适合这种情况。

    使用索引(表中从零开始索引的行数)或比较变量的组合,将每个输出函数的真值表的行转换为单独的 K-map。

    对于输出函数y_0,最终的 K-map 如下所示,您可以看到这是最小化的 SOP(DNF;连词析取)函数,没有更大的组(术语)。

    y_0 = ¬w·¬x·¬y·z + ¬w·x·¬y·¬z + ¬w·¬x·y·¬z + ¬w·x·y·z 
           + w·¬x·y·z + w·x·y·¬z + w·¬x·¬y·¬z + w·x·¬y·z
    

    对于输出的最高有效位,我选择查找 POS(CNF;析取合取),因为在输出中0 位的情况比1 位少。

    输出函数可以和y_0中描述的一样,通过标记出所有正确的位。在这种情况下,它将是这个 K-map 和函数:

    y_1 = (w + x + y + z) · (w + x + y + ¬z) · (w + ¬x + y + z) 
          · (w + x + ¬y + z) · (¬w + ¬x + ¬y + ¬z) · (¬w + x + y + z)
    

    但这可以在 K-map 中最小化为这个输出函数:

    y_1 = (w + x + y) · (w + y + z) · (w + x + z) 
          · (¬w + ¬x + ¬y + ¬z) · (x + y + z) 
    

    之后,您可以使用正确的门或使用 Rott 网格将其转换为更合适的门组合。

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2017-11-07
      • 1970-01-01
      相关资源
      最近更新 更多