如何获取以下功能的产品总和?

时间:2016-07-24 20:23:39

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

我正在尝试使用K-Map找到以下函数的产品总和:

F(A,B,C,D) = m(0, 1, 5, 7, 8, 10, 14, 15)

由于函数已经是产品形式的总和,我想要做的只是在函数中给出的值框上的K-map上标记'1',然后简化它。

以下是我在结果中得到的结果:

B'C'D' + AC'D + B'CD + A'CD'

但在书中,答案是这样写的:

AC'D' + BC'D + A'CD + B'CD'

OR

AB'D' + ABC' + A'BD + A'B'C

我不知道我哪弄错了?

1 个答案:

答案 0 :(得分:1)

假设函数F(A,B,C,D)= m(0,1,5,7,8,10,14,15)转换为真值表 (并且没有"不关心" 状态):

 index | ABCD | output
----------------------------------------
     0 | 0000 | 1 ... m_0 = ¬A·¬B·¬C·¬D
     1 | 0001 | 1 ... m_1 = ¬A·¬B·¬C·D
     2 | 0010 | 0     M_2 = A + B + ¬C + D
     3 | 0011 | 0     M_3 = A + B + ¬C + ¬D
     4 | 0100 | 0     M_4 = A + ¬B + C + D
     5 | 0101 | 1 ... m_5 = ¬A·B·¬C·D
     6 | 0110 | 0     M_6 = A + ¬B + ¬C + D
     7 | 0111 | 1 ... m_7 = ¬A·B·C·D
     8 | 1000 | 1 ... m_8 = A·¬B·¬C·¬D
     9 | 1001 | 0     M_9 = ¬A + B + C + ¬D
    10 | 1010 | 1 ... m_10 = A·¬B·C·¬D
    11 | 1011 | 0     M_11 = ¬A + B + ¬C + ¬D
    12 | 1100 | 0     M_12 = ¬A + ¬B + C + D
    13 | 1101 | 0     M_13 = ¬A + ¬B + C + ¬D
    14 | 1110 | 1 ... m_14 = A·B·C·¬D
    15 | 1111 | 1 ... m_15 = A·B·C·D

相应的 minterms(规范DNF)总和如下所示:

F(A,B,C,D) = ∑(m_0, m_1, m_5, m_7, m_8, m_10, m_14, m_15) = 
           = m_0 + m_1 + m_5 + m_7 + m_8 + m_10 + m_14 + m_15 =
           = ¬A·¬B·¬C·¬D + ¬A·¬B·¬C·D + ¬A·B·¬C·D + ¬A·B·C·D + 
             + A·¬B·¬C·¬D + A·¬B·C·¬D + A·B·C·¬D + A·B·C·D .

Corresponding K-maps

你可以在第一张卡诺图中看到规范(完整)DNF的所有minterms(单独圈出):

m_0  = ¬A·¬B·¬C·¬D (blue)
m_1  = ¬A·¬B·¬C·D (purple)
m_5  = ¬A·B·¬C·D (green)
m_7  = ¬A·B·C·D (orange)
m_8  = A·¬B·¬C·¬D (black)
m_10 = A·¬B·C·¬D (yellow)
m_14 = A·B·C·¬D (brown)
m_15 = A·B·C·D (pink)

第二个K-map 显示原始函数的最小DNF:

F(A,B,C,D) = ¬A·¬B·¬C (blue) + ¬A·B·D (purple) + A·¬B·¬D (orange) + A·B·C (green)

第三张K-map 也是最小的DNF,但与之前的表达式不同:

F(A,B,C,D) = ¬B·¬C·¬D (orange) + ¬A·¬C·D (blue) + A·C·¬D (green) + B·C·D (purple)

您还可以使用 maxterms 将原始输出功能表示为其产品。这将是规范的CNF:

F(A,B,C,D) = ∏(M_2, M_3, M_4, M_6, M_9, M_11, M_12, M_13) = 
           = M_2·M_3·M_4·M_6·M_9·M_11·M_12·M_13 =
           = (A + B + ¬C + D)·(A + B + ¬C + ¬D)·(A + ¬B + C + D)·
            ·(A + ¬B + ¬C + D)·(¬A + B + C + ¬D)·(¬A + B + ¬C + ¬D)·
            ·(¬A + ¬B + C + D)·(¬A + ¬B + C + ¬D) .

CNFs in K-maps

第二张图片的第一张K-map 显示原始功能的所有maxterms分别圈出:

M_2 = A + B + ¬C + D (purple)
M_3 = A + B + ¬C + ¬D (green)
M_4 = A + ¬B + C + D (blue)
M_6 = A + ¬B + ¬C + D (orange)
M_9 = ¬A + B + C + ¬D (pink)
M_11 = ¬A + B + ¬C + ¬D (yellow)
M_12 = ¬A + ¬B + C + D (black)
M_13 = ¬A + ¬B + C + ¬D (brown)

第二张图片的第二张和第三张K图都显示原始函数的最小CNF(可能不止一张):

F(A,B,C,D) = (A + B + ¬C) ... blue
            ·(A + ¬B + D) ... purple
            ·(¬A + B + ¬D) ... orange
            ·(¬A + ¬B + C) ... green

F(A,B,C,D) = (¬B + C + D) ... orange 
            ·(A + ¬C + D) ... green
            ·(B + ¬C + ¬D) ... purple
            ·(¬A + C + ¬D) ... blue

如果您有任何其他问题,请评论我的答案。

照片是用乳胶制作的。