在卡诺图中检测 XOR

Detecting XOR in Karnaugh Maps

我得到了以下卡诺图,但在计算每个 table 的 XOR 表达式时仍然遇到问题。

                Table 1
                -------
                  WZ
         00    01   11   10
       -----------------------
    00 |     |    |    |  1  |
       -----------------------
    01 |  1  |    |    |     |
       -----------------------
XY  11 |     |    |    |  1  |
       -----------------------
    10 |  1  |    |    |     |
       -----------------------


                Table 2 
                -------
                   WZ
         00     01   11   10
       -----------------------
    00 |     |  1  |     |   |
       -----------------------
    01 |     |     |  1  |   |
       -----------------------
XY  11 |     |  1  |     |   |
       -----------------------
    10 |     |     |  1  |   |
       -----------------------

是异或运算,但如何轻松推导出异或表达式?

第一个 table 包含 Xor 表达式:

`First table`
                       w
    \ wz          ___________
 xy  \-----------------------+
     |     |     |     |  1  |
     +-----+-----+-----+-----+
     |  1  |     |     |     | |
     +-----+-----+-----+-----+ | y
   | |     |     |     |  1  | |
 x | +-----+-----+-----+-----+
   | |  1  |     |     |     |
     +-----------------------+
            ___________
                 z

如您所见,table(Z 区域)的中间部分是假的。 也就是说,table 函数是:

F(Table1) = w'x'yz' + wx'y'z' + w'xy'z' + wxyz'

in binary form you could see a zero column :

F(Table) = 0010   eliminating Z    F(xor)= 001
           0100  ---------------\          010
           1110  ---------------/          111
           1000                            100
              ^--> fake

最后的 table 必须是这样的:

`simplified xor table`
                w
      \ w 0   __1__
   xy  \-----------+
    00 |     |  1  |
       +-----+-----+
    01 |  1  |     | |
       +-----+-----+ | y    And " F = wy' + w'y " is an Xor only
   |10 |  1  |     | |      between 2 variables, right?
 x |   +-----+-----+
   |11 |     |  1  |
       +-----------+


第二个 table 只包含第一个的 Xnor 表达式:

`Second Table`
F(Table2) = w'xyz + wxy'z + w'x'y'z + wx'yz
                          w
       \ wz          ___________
    xy  \-----------------------+        negation of table 2 is table 1 and vise versa
        |     |  1  |     |     |      F(Table2) = 1101    F(Table2)'= F(Table1) = 0010
        +-----+-----+-----+-----+                  1011                            0100
        |     |     |  1  |     | |                0001                            1110
        +-----+-----+-----+-----+ | y              0111                            1000
      | |     |  1  |     |     | |                   ^--> fake                       ^
    x | +-----+-----+-----+-----+         
      | |     |     |  1  |     |         
        +-----------------------+
           ^   ___________   ^
           ^        z        ^
           ^                 ^
           ^--------z'-------^

    the final table is:
                w
      \ w 0   __1__
   xy  \-----------+
    00 |  1  |     |
       +-----+-----+
    01 |     |  1  | |
       +-----+-----+ | y    And " F = w'y' + wy " is an Xnor
   |10 |     |  1  | |
 x |   +-----+-----+
   |11 |  1  |     |
       +-----------+

永远记住包含之字形图案的 tables
是 Xor 或 Xnor 表达式。

我不会从表达式中排除变量 z,因为我认为表达式 ¬z·(¬x·y·¬w + ¬x·w·¬y + ¬y·¬w·x + w·y·x) 不等于 (¬x·y·¬w + ¬x·w·¬y + ¬y·¬w·x + w·y·x)。这意味着,K-map 包含四个双打,但只有四个单打。

我宁愿在K-map中找到表达式,然后使用布尔代数定律。

第一个table:

¬x·¬y·w·¬z + ¬x·y·¬w·¬z + x·y·w·¬z + x·¬y·¬w·¬z

¬z·((¬x + ¬y + w)·(¬x + y + ¬w)·(x + y + w)·(x + ¬y + ¬w))       //distributivity

¬z· (¬x + ¬y + w)·(¬x + y + ¬w)·(x + y + w)·(x + ¬y + ¬w)        //relaxed syntax

¬z· (¬x·¬x + ¬x·y + ¬x·¬w + ¬y·¬x + ¬y·y + ¬y·¬w + w·¬x + w·y + w·¬w)·
    (x·x + x·¬y + x·¬w + y·x + y·¬y + y·¬w + w·x + w·¬y + w·¬w)  //distributivity

因为

的法律
  • 幂等性(例如:¬x·¬x=¬x),
  • 吸收(例如:¬x + ¬x·y=¬x)
  • 与互补(例:¬x·x=0)

表达式等同于:

¬z· (¬x                           +   0  + ¬y·¬w        + w·y +  0)·
    ( x  +                   +  0   + y·¬w +     + w·¬y +  0  )

¬z· (¬x + ¬y·¬w + w·y)·(x + y·¬w + w·¬y)     //just formatted

¬z· (¬x·x + ¬x·y·¬w + ¬x·w·¬y 
     + ¬y·¬w·x + ¬y·¬w·y·¬w + ¬y·¬w·w·¬y
     + w·y·x + w·y·y·¬w + w·y·w·¬y)          //distributivity

¬z· (  0  + ¬x·y·¬w + ¬x·w·¬y 
     + ¬y·¬w·x +     0      +      0
     + w·y·x +    0     +     0   )          //using the three laws↑ again

¬z· (¬x·y·¬w + ¬x·w·¬y + ¬y·¬w·x + w·y·x)    //how the 3-input XOR is defined

¬z· (x xor y xor w)

第二个table:

¬x·¬y·¬w·z + ¬x·y·w·z + x·y·¬w·z + x·¬y·w·z

z·((¬x + ¬y + ¬w)·(¬x + y + w)·(x + y + ¬w)·(x + ¬y + w))        //distributivity

z· (¬x + ¬y + ¬w)·(¬x + y + w)·(x + y + ¬w)·(x + ¬y + w)         //relaxed syntax

z· (¬x·¬x + ¬x·y + ¬x·w + ¬y·¬x + ¬y·y + ¬y·w + ¬w·¬x + ¬w·y + ¬w·w)·
   (x·x + x·¬y + x·w + y·x + y·¬y + y·w + ¬w·x + ¬w·¬y + ¬w·w)   //distributivity

z· (  ¬x +                      +   0  + ¬y·w +       + ¬w·y +   0 )·
   ( x  +                  +  0   + y·w +      + ¬w·¬y +   0 )

z· (¬x + ¬y·w + ¬w·y)·(x + y·w + ¬w·¬y)     //just formatted

z· (¬x·x + ¬x·y·w + ¬x·¬w·¬y
    + ¬y·w·x + ¬y·w·y·w + ¬y·w·¬w·¬y
    + ¬w·y·x + ¬w·y·y·w + ¬w·y·¬w·¬y)       //distributivity

z· (  0 + ¬x·y·w + ¬x·¬w·¬y
    + ¬y·w·x +     0    +     0
    + ¬w·y·x +     0    +     0)            //using the three laws↑ again

z· (¬x·y·w + ¬x·¬w·¬y + ¬y·w·x + ¬w·y·x)    //how the 3-input XNOR is defined

z· (x xnor y xnor w)

只需将此地图的副本放在它的右侧(或左侧,没有区别),然后选择两个倾斜的立方体。 现在,我们为它们编写简化函数:

(A = 1) (AND) (当 C=1 时 B=0,当 C=0 时 B=1) (要么) (A = 0) (AND) (当 C=0 时 B=0,当 C=1 时 B=1) 最后给出了这个:

(A AND (B XOR C)) OR (¬A AND (B XNOR C))

xor 的基本规则是当奇数个输入为 1 时它给出 1。 所以在 KMAP 中只看 1 是否存在于所有奇数个 1 中。 像 WXYZ(0010、1110 等)如果所有都给出 1 而不是 kmap 中存在 XOR。