使用卡诺图简化布尔表达式

Posted

技术标签:

【中文标题】使用卡诺图简化布尔表达式【英文标题】:Simplify boolean expression using Karnaugh map 【发布时间】:2015-07-30 04:15:36 【问题描述】:

我有以下问题:

将以下布尔表达式表示为乘积和 使用卡诺图尽可能简化

我画了卡诺图,然后将我的值放在表中为真(第一个,B非D表示10,非B和D表示01)然后我们有以下值:0100,0110,1100,1110(因为 A 和 C 可以是 0 或 1)。所以我们得到:

我们注意到我们只有一组(蓝色圆圈) 然后我们有:

0100
0110
1100
1110

我们看到唯一不修改其值的变量是 B 和 D,因此我们得到以下简化版本:

B non D

但这只是括号中表达式的答案,没有减号。如果我在表达式前面有一个减号,有什么想法可以解决它吗?它如何改变我的表情?

我的第二个问题是当我遇到像这样的双重否定时我应该如何解决它

当映射时,第一个表示 1111,其余表示 0101、1101、0101,然后我以同样的方式解决它? 有任何想法吗? 谢谢!

【问题讨论】:

您的课程中涉及de Morgan 了吗? 您正在为四个变量使用卡诺图。但是,您的表达式仅取决于两个变量。 AC 不会出现。 【参考方案1】:

对于第一个问题,没有否定的表达式可以称为(B XOR D),所以带有否定的XOR基本上是XNOR。它可以用乘积之和表示为 (BD + B'D')

【讨论】:

【参考方案2】:

(AC!(!B.!D)) ​​+ (!AC!(!B.!D)) ​​+ (A!C!(!B.!D))+(!A!C!(! B.!D)) 步骤

    = C.!(!B.!D).(A+!A) + !C.!(!B.!D).(A+!A) = C.!(!B.!D).1 + !C.!(!B.!D).1 = C.!(!B.!D) + !C.!(!B.!D) = !(!B.!D).(C+!C) = !(!B.!D) = !B+!D

【讨论】:

以上是关于使用卡诺图简化布尔表达式的主要内容,如果未能解决你的问题,请参考以下文章

FPGA:逻辑函数的卡诺图化简法

布尔乘积和简化

布尔代数表达式简化

简化布尔表达式的算法

如何简化任意布尔表达式?

表达式可以在布尔文字上简化[重复]