在实际的电路设计中,为了使电路简化,降低成本,同时提高电路的可靠性,要求将逻辑函数化简。通常要将函数化为与或表达式或者或与表达式,而且要求每一个与项或者或项中的变量数目最少。
化简逻辑函数的方法一般有3种:公式法,图解法和表格法。本节重点介绍前面两种方法。
主要介绍一下用公式法将逻辑函数化为最简的与或式。
公式法要求在理解并熟悉前面的逻辑代数基本定理和常用公式的基础上,综合运用各种公式和方法来化简函数,有一定的灵活性和技巧性。
公式法化简一般常用到的方法有以下6种。
· 合并项法:利用公式AB+AB' =A将两项合并为一项,并消去一个变量。
· 吸收法:利用基本定理A+AC=A,可以消去多余的乘积项。
· 消去法:利用公式A+A' B=A+B,可以消去乘积项中多余的因子。
· 配项法:用A+A' =1乘以某一项,然后再展开,与其他项合并化简。
· 增项法:应用公式AB+A' C=AB+A' C+BC,在表达式中添加一个新项,有时可以消去多余项。
· 消项法:利用公式A+AC=A,A+A=A,可以消去表达式中某些项。
下面举例子讲解。
【例2-16】化简F=A(B'+C')+BC。
解:利用反演律,得
F=A(B'+C')+BC
=A(BC)'+BC
根据吸收律,得
F=A+BC
【例2-17】化简F=AB'+BC'+B' C+A' B。
解:用配项法,得
F=AB'+BC'+B' C+A' B
=AB'+BC'+B' C(A+A')+A' B(C+C')
=AB'+BC'+AB' C+A' B' C+A' BC+A' BC'
=(AB'+AB' C)+(BC'+A' BC')+(A' B' C+A' BC)
根据吸收律与互补律,得
F= AB'+BC'+A' C
【例2-18】化简F=AB'+BC'+CD'+DA'+AC'+A' C。
解: F=AB'+BC'+CD'+DA'+AC'+A' C
=(AB'+BC'+AC')+(CD'+DA'+A' C)
根据包含律,得
F= AB'+BC'+CD'+DA'
【例2-19】化简F=(A+B)(A+B')(B+C)(B+C+D)。
解: F=(A+B)(A+B')(B+C)(B+C+D)
根据分配律,得
=(A+BB')(B+C)(B+C+D)
=A(B+C)(B+C+D)
根据吸收律,得
F=A(B+C)
【例2-20】化简F=[A'(B+C')]'(A+B'+C)(A' B' C')'。
解: F=[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)(A+C)
根据分配律,得
=A+B' C
因为平时对与或表达式的化简比较熟悉,所以可以利用函数的对偶规则,将或与式转化为与或式进行化简,最后再根据对偶规则转换为原函数即可。
【例2-21】化简F=(A+B')(A'+B)(B+C)(A'+C)。
解:根据对偶规则,得
Fd=AB'+A' B+BC+A' C
根据包含律,得
=AB'+BC+AC+A' C+A' B
根据互补律,得
=AB'+BC+C+A' B
根据吸收律,得
= AB'+A' B+C
最后再根据对偶规则,得
F=(Fd)d
=(A+B')(A'+B)C
【例2-22】化简F=AD+AD'+AB+A' C+BD+ACEF+B' EF+DEFG。
解: F=AD+AD'+AB+A' C+BD+ACEF+B' EF+DEFG
根据互补律,得
=(A+AB+ACEF)+B' EF+DEFG+A' C+BD
根据吸收律,得
=A+A' C+(B' EF+BD+DEFG)
根据包含律,得
=A+A' C+B' EF+BD
=A+C+B' EF+BD
【例2-23】化简F=AB'(C+D)+BC'+A' B'+A' C+BC+B' C' D'。
解: F=AB'(C+D)+BC'+A' B'+A' C+BC+B' C' D'
=AB'(C+D)+BC'+(A' B'+A' C+BC)+B' C' D'
根据包含律,得
=AB'(C+D)+BC'+A' B'+BC+B' C' D'
=AB'(C+D)+(BC'+BC)+B' C' D'+A' B'
根据互补律,得
=B+AB'(C+D)+B' C' D'+A' B'
根据吸收律,得
=B+A(C+D)+C' D'+A'
=B+A'+C+D+C' D'
=B+A'+C+D+D'
=B+A'+C+1
=1
【例2-24】化简F=(A+B' C)(B+C+D)(C+D')。
解:用两种方法来解本题。
方法一:直接化简,得
F=(A+B' C)(B+C+D)(C+D')
根据分配律,得
=(A+B')(A+C)[C+D'(B+D)]
=(A+B')(A+C)(C+BD')
=(A+B')(A+C)(B+C)(C+D')
根据包含律,得
=(A+B')(B+C)(C+D')
方法二: F=(A+B')(A+C)(B+C+D)(C+D')
根据对偶规则,得
Fd=AB'+AC+BCD+CD'
根据分配律,得
= AB'+AC+C(D'+BD)
根据吸收律,得
= AB'+AC+C(D'+B)
= AB'+AC+BC+CD'
根据包含律,得
= AB'+BC+CD'
最后再根据对偶规则得到原函数
F=(Fd)d
=(A+B')(B+C)(C+D')
由以上例子可以看出,用公式法化简逻辑函数,方法灵活,技巧性强,没有固定的规范,很容易由于疏忽而不能将函数化到最简,所以下面介绍一种直观方便,易于掌握的方法——图解法。
图解法就是用卡诺图来化简逻辑函数的方法,这种方法比较简单直观,但是若函数的变量个数太多就比较麻烦了。对于四变量和四变量以下的逻辑函数化简,图解法是一种很好的方法。下面介绍卡诺图。
对于一个n变量的逻辑函数,它的卡诺图是由2n个小格子组成的图形,每个小格子代表函数的一个最大项或者最小项,相邻的格子只有一个变量不相同,其余变量均相同,这样方便化简。下面分别给出不同变量数的逻辑函数的卡诺图。
二变量卡诺图有22个小格子,对应着两个变量的所有4种组合,如图2-12所示。卡诺图的横行和竖列的编号都是按照格雷码顺序编号的,这样可以保证相邻的两个组合只有一个变量不同。1代表对应变量取原变量,0代表对应变量取反变量,且变量按照AB的顺序排列,每个小格子对应的变量组合如图2-12所示。
(a) (b)
图2-12 二变量卡诺图
如图2-12(b)所示,卡诺图中每一个小格子都代表一个最小项,最小项的下标号顺序与图2-12(a)相同。
三变量卡诺图有23个小格子,对应着3个变量的所有8种组合,如图2-13所示。可见横行的编码为:00、01、11、10,是按照格雷码的顺序,以保证其逻辑相邻。
(a) (b)
图2-13 三变量卡诺图(横式)
三变量卡诺图也可以画成如图2-14所示的形式。
(a) (b)
图2-14 三变量卡诺图(竖式)
四变量卡诺图有16个小格子,其形式如图2-15所示。
(a) (b)
图2-15 四变量卡诺图
如果逻辑函数的变量多于4个,它的卡诺图就比较复杂了,所以通常只用卡诺图来化简四变量和四变量以下的逻辑函数。五变量的卡诺图形式如图2-16所示。
图2-16 五变量卡诺图
六变量的卡诺图形式如图2-17所示。
图2-17 六变量卡诺图
要用图解法化简逻辑函数,首先要用卡诺图来表示逻辑函数。已知逻辑函数的真值表,或标准型,或普通的变量表达式,都可用卡诺图的形式表示出来。下面举例说明。
【例2-25】已知函数的真值如表2-22所示,用卡诺图表示该函数。
表2-22 真值表
A |
B |
C |
F |
A |
B |
C |
F |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
解:这是个三变量逻辑函数,所以其卡诺图共有8个小格子,由真值表2-22可见,当ABC为010、011、101、110时,函数逻辑值为1。只需画出三变量的卡诺图,这4个值对应的小格子填1,其余格子填0即可,如图2-18所示。
【例2-26】已知函数F(A,B,C,D)=∑m(1,4,6,8,9,14),用卡诺图表示该逻辑函数。
解:函数以积之和标准型给出,只要在与最小项下标相同编号的小格子里填1,其余填0即可,如图2-19所示。
【例2-27】已知函数F(A,B,C,D)=∏M(0,3,4,7,10,15),用卡诺图表示该逻辑函数。
解:函数以和之积标准型给出,只要在与最大项下标相同编号的小格子里填0,其余填1即可,如图2-20所示。
图2-18 卡诺图 图2-19 卡诺图 图2-20 卡诺图
【例2-28】已知函数F(A,B,C)=AB+B' C+AC,用卡诺图表示该逻辑函数。
解:如果用前面学过的方法,可以列出函数的真值表,再根据真值表完成卡诺图;或者将函数化成标准型,再利用标准型与卡诺图的关系完成卡诺图。但是这两种方法尤其是对变量较多的函数,比较麻烦,所以通常采用的方法是:将AB=1,B'C=1,AC=1所对应的小格子都填1,其余填0即可。如图2-21所示。
【例2-29】已知函数F(A,B,C,D)=ABC'+D,用卡诺图表示该逻辑函数。
解:方法与例2-28相同,如图2-22所示。
图2-21 卡诺图 图2-22 卡诺图
前面讲过,卡诺图中的位置相邻的小格子间也是逻辑相邻的,即相邻的小格子所代表的项之间有且只有一个变量不同。这是用卡诺图化简逻辑函数的基础。将相邻的两个小格子所代表的最小项相加,便可以消去那个不相同的项,如图2-23所示。用公式法化简该卡诺图所代表的逻辑函数:
F(A,B,C)=∑m(1,3)
=A' B' C+A' BC
=A' C(B+B')
=A' C
而用卡诺图化简的方法是:将图中相邻的两个1项圈起来,代表将这两个1项相加。可见在这两项中,A都为反变量,C都为原变量,只有B不同,所以圈起来后,B的原变量和反变量消去了,化简结果是:
F(A,B,C)= A' C
可见,圈住两个小格子可以消去一个变量,而且图中只有一个圈,所以化简后的函数只有一项。
除了横行相邻外,还有竖列的相邻,如图2-24所示。
图2-23 横行相邻的卡诺图 图2-24 竖列相邻的卡诺图
化简的结果是:
F(A,B,C)=BC
另外,还有一种位置上的相邻是容易被忽略的,如图2-25所示。可见,横行的两个边行相邻,数列的两个边列也相邻。
该卡诺图的化简结果为:
F(A,B,C,D)=B' C' D+ABD'
以上为在卡诺图中可以圈到两格的情况。下面看一下圈到4格的情况,如图2-26所示。
图2-25 特殊相邻的卡诺图 图2-26 圈到4格的卡诺图
可见,图中有4个1项相邻,圈住它们即将它们相加,因为这4个1项中,B和D都是以原变量出现,A和C则以原变量﹑反变量各出现一次,所以相加后消去了。该卡诺图的化简结果是:
F(A,B,C,D)=BD
可见圈住4个1项可以消去两个变量。下面再举几个其他相邻位置的例子。
如图2-27所示,该卡诺图的化简结果是:
F(A,B,C,D)=B' D
如图2-28所示,该卡诺图的化简结果是:
F(A,B,C,D)=BD'
图2-27 卡诺图 图2-28 卡诺图
如图2-29所示,该卡诺图化简的结果是:
F(A,B,C,D)=C' D
下面看一种最特殊的相邻情况。
如图2-30所示,该卡诺图的化简结果是:
F(A,B,C,D)=B' D'
以上是圈住4格的情况,下面再来看圈住8格的情况,如图2-31所示。
图2-29 卡诺图 图2-30 卡诺图
可见在卡诺图中有8个1项相邻,将它们圈住,即使它们相加。在这8项中,只有C总以反变量出现,A,B,D都是以原变量﹑反变量各出现一次,因此相加后都消去了。该卡诺图的化简结果是:
F(A,B,C,D)=C'
可见圈住8个1项可以消去3个变量。下面再举几个其他相邻位置的例子。
如图2-32所示,化简结果是:
F(A,B,C,D)=D'
如图2-33所示,化简结果是:
F(A,B,C,D)=B'
图2-31 圈住8格的卡诺图 图2-32 卡诺图 图2-33 卡诺图
以上学习了圈1项将函数化简为与或式的方法。为了方便下面的化简,给出卡诺图正确的表示函数后,按照圈1项的操作规则,再通过几个例子来具体学习。圈1项时,应遵循以下规则:
· 在卡诺图中,圈住的1项个数必须是2n个(其中,n=0,1,2,…k,k为函数的变量个数),而且圈越大越好。
· 在画出的每个圈中,必须至少有一个1项是没有被其他的圈圈住的。
· 为了将函数化到最简,要求卡诺图中所画的圈越少越好,但是每个1项至少要被圈住过一次。
根据上面的化简规则来看几个例题。
【例2-30】用卡诺图化简逻辑函数F(A,B,C,D)=∑m(0,1,3,4,6,9,13)。
解:首先,将函数用卡诺图表示如图2-34所示。观察到该卡诺图中没有4个相邻的1项,所以最大的圈只能圈两个1项,而且卡诺图中也没有孤立的1项,所以画出的圈都是圈住两个1项。然后找出只能以一种圈法与相邻1项圈在一起的项:第3、6、9项,将与其相邻的项圈住,如图2-35所示。
图2-34 卡诺图的填法 图2-35 卡诺图的圈法
现在就只剩下第0项未被圈住,而且发现它有两种圈法,如图2-36(a)和图2-36(b)所示。
(a) (b)
图2-36 卡诺图的圈法
它们都符合卡诺图化简的规则,因此都是正确的。图2-36(a)化简的结果为:
F(A,B,C,D)=A' B' C'+A' B' D+A' BD'+AC' D
图2-36(b)化简的结果为:
F(A,B,C,D)=A' C' D'+A' B' D+A' BD'+AC' D
这两种化简结果都是正确的,均是函数的最简式。本题说明,逻辑函数化简的结果并不是唯一的。
【例2-31】用卡诺图化简逻辑函数F(A,B,C,D)=∑m(0,1,3,4,5,9,13)。
解:首先将逻辑函数用卡诺图表示,如图2-37所示。
从填好的卡诺图中,我们看到最多有4个相邻的1项,没有孤立的1项,所以该卡诺图的圈法如图2-38所示。
图2-37 卡诺图的填法 图2-38 卡诺图的圈法
该卡诺图化简的结果是:
F(A,B,C,D)=A' C'+C' D+A' B' D
【例2-32】用卡诺图化简逻辑函数F(A,B,C,D)=∑m(1,5,6,7,11,12,13,15)。
解:将逻辑函数用卡诺图表示后,发现有4个相邻的1项,没有孤立的1项。若首先将4个相邻的1项圈起来,再将其他1项与相邻项圈起来,就是如图2-39所示的情形。
可见,4个1项的大圈里所有的项都被圈过了两次,所以中间的大圈是多余的冗余项,应该去掉,如图2-40所示。
图2-39 卡诺图的错误圈法 图2-40 卡诺图的正确圈法
该卡诺图化简结果是:
F(A,B,C,D)=A' C' D+A' BC+ABC'+ACD
所以在圈卡诺图时,最好先找出孤立的1项圈住,然后找出只有一种圈法的项将其圈住,再将剩余的项以尽可能大圈的方式圈住。不论读者以任何方法,圈完卡诺图后都要认真检查一下,看有没有多余的圈和未被圈过的1项。
【例2-33】用卡诺图化简逻辑函数F(A,B,C,D)=∑m(0,5,6,3,2,12,14,8,10)。
解:用卡诺图正确表示逻辑函数后,按照上例的方法圈住1项,使每个圈内都有至少一个1项未被其他圈圈过,且所有的1项均在圈内。但是如果疏忽,还会犯另一种错误,如图2-41所示。
可以看到,第12项和第14项还可以更大,应该同时圈住第8项和第10项,因此该卡诺图不能将逻辑函数化为最简。正确的圈法如图2-42所示。
图2-41 卡诺图的错误圈法 图2-42 卡诺图的正确圈法
该卡诺图的化简结果为:
F(A,B,C,D)=B' D'+CD'+AD'+A' B' C+A' BC' D
【例2-34】用卡诺图化简函数F(A,B,C)=ABC+A' B' C+A' BC'+AB' C'+A' B' C'
解:卡诺图化简用变量表示的逻辑函数与用标准型表示的逻辑函数是相同的,先用卡诺图表示该函数如图2-43所示。然后圈住1项,如图2-44所示。
图2-43 卡诺图的填法 图2-44 卡诺图的圈法
该卡诺图的化简结果是:
F(A,B,C)=A' C'+A' B'+B' C'+ABC
【例2-35】用卡诺图化简逻辑函数F(A,B,C,D)=B' D'+ABCD+A' B' C'。
解:用卡诺图表示逻辑函数后,按照前面学习过的规则圈住1项,如图2-45所示。
图2-45 卡诺图 图2-46 卡诺图
该卡诺图的化简结果为:
F(A,B,C)=B' D'+A' B' C'+ABCD
可见化简结果与题述函数相同,所以题述函数本身就是最简形式。通过本例,了解到卡诺图还可以用来验证函数是否是最简的。
【例2-36】用卡诺图化简逻辑函数F(A,B,C,D)=A' BCD+ABC+CD+BC' D+A' BC。
解:如图2-46所示,该卡诺图的化简结果为:
F(A,B,C)=BD+CD+BC
以上各例都是学习用卡诺图通过合并1项将函数化为最简的与或式的。下面学习用卡诺图通过合并0项将函数化简为最简的或与式的方法。
首先用卡诺图正确表示逻辑函数,然后将图中的所有0项圈住,具体圈法和规则与前面圈1项时是相同的,最后再将化简结果按照卡诺图中的0圈写为或与式即可。下面举例说明。
【例2-37】用卡诺图化简逻辑函数F(A,B,C)=∏M(0,2,4,6)。
解:首先用卡诺图表示该逻辑函数,如图2-47所示。然后按照前面讲过的规则圈住0项,如图2-48所示。
图2-47 卡诺图的填法 图2-48 卡诺图的圈法
该卡诺图的化简结果是:
F(A,B,C)=C
【例2-38】用卡诺图化简逻辑函数F(A,B,C,D)=∏M(0,2,5,7,8,10,13,15)。
解:用卡诺图表示逻辑函数后,按照前面学习过的规则圈住0项。如图2-49所示。
该卡诺图的化简结果为:
F(A,B,C,D)=(B'+D)(B+D')
【例2-39】用卡诺图化简逻辑函数F(A,B,C,D)=∏M(1,3,7,9,11,15)。
解:首先用卡诺图表示该逻辑函数,然后按照前面学习过的规则圈住0项,如图2-50所示。该卡诺图的化简结果是:F(A,B,C,D)=()()。
图2-49 卡诺图 图2-50 卡诺图
图2-51 卡诺图
|
解:如图2-51所示,该卡诺图的化简结果为:
F(A,B,C,D)=(B+C)(A+B')(C+D')
前面讨论的是单输出的逻辑函数,只要用卡诺图将函数化为最简即可。但在实际的逻辑设计中,需要的输出端往往不只一个,而对于多输出的逻辑函数,就不能只要求每个输出都为最简,还要考虑到怎样使设计所用的逻辑器件最少,即多个输出之间有没有可以共用的逻辑电路。所以,多输出函数的化简是建立在单输出函数化简的基础上的,但最后还要综合考虑怎样使设计最简单。通常,多输出函数的化简原则是有以下两点:
· 将每个输出函数都化为最简,即与项或者和项最少,且每个与项或者和项的输入变量也最少。
· 对于每个已经被化简了的输出函数,使它们尽量多地共用积项或者和项。
有时为了使多个输出共用积项或者和项,使得单个的输出并不是最简。相应地,用卡诺图化简多输出函数的步骤为以下3点:
· 用卡诺图分别化简每个输出函数。
· 观察比较各个输出函数的卡诺图,将它们共同的圈标出来,这就是可以共用积项或者和项。
· 从尽量共用积项或者和项的角度出发,以不添加新项为原则,重新圈卡诺图,得出的结果用逻辑门表示后,综合比较与改圈前的化简结果哪个能使设计更简单,更能节省逻辑器件,最后确定最合理的结果。
下面举例说明。
【例2-41】化简下列多输出函数,要求使设计的成本最低。
F1(A,B,C,D)=∑m(0,2,3,4,6,7,8,9,10,11,15)
F2(A,B,C,D)=∑m(0,2,3,4,10,11,15)
解:①分别化简每个输出函数。画F1、F2的卡诺图,如图2-52(a)、图2-52(b)所示。
(a)F1 (b)F2
图2-52 卡诺图
根据卡诺图可知单个输出的化简结果是:
F1(A,B,C,D)=A' D'+CD+AB'
F2(A,B,C,D)=B' C+A' C' D'+ACD
逻辑电路如图2-53所示。
图2-53 逻辑电路图
②观察卡诺图,发现有可以共用的积项,于是改圈卡诺图,如图2-54所示。
图2-54 卡诺图
③改圈卡诺图后,化简结果是:
F1(A,B,C,D)=A' C' D'+ACD+AB'+A' C
F2(A,B,C,D)=A' C' D'+ACD+B' C
逻辑电路如图2-55所示。
图2-55 逻辑电路图
由图可见,两个输出可以共用两个门电路,比改圈之前节省了一个门电路。
用表格化简函数的方法又叫做奎艾恩·麦克拉斯基法,简写为QM法。这种方法的原理是反复地运用公式AB+AB' =A来合并最小项,因为这种方法的规律性强,对变量个数没有限制,适用于计算机运算。但是因为QM法手动操作过程烦琐,所以我们在平时化简逻辑函数时多使用公式法和图解法,表格法用得较少,这里我们只通过例子来简要介绍一下如何用表格法化简逻辑函数。
【例2-42】用表格法化简函数F(A,B,C,D)=∑m(0,4,6,8,10,11,13,14,15)。
解:①将函数标准型中的最小项用二进制码表示,按照其二进制码中包含1的个数分组填入表格中,且每一格中的最小项按照从小到大的顺序排列。如表2-23的Ⅰ列所示。本例中共分为5组。
②从序号最低的组开始,将组中的每一项分别与序号高的高位组比对,找出高位组中最小项的十进制序号比低位组中最小项十进制序号大2i的项进行合并,这样的两项只有一位变量相反,其余变量均相同,所以可以消去一个变量。消去的变量位在合并后的新项中用“×”表示,填入表2-23的Ⅱ列,并将可以与其他最小项合并的项右侧打“√”。
③在表2-23的Ⅱ列中,重复②的操作,进一步合并项。在Ⅱ列中找出“×”的位置相同,只有一个变量不同的两项进一步合并,将合并后的项填入表2-23的Ⅲ列,并在Ⅱ列中可以与其他项合并的项右侧打“√”。依次类推,如果Ⅲ列中的项可以继续合并,再填入Ⅳ列,直至不能再合并为止。本例只能填到第Ⅲ列。然后在没有打“√”的所有项右侧标记上a,b,c,…这些项就是函数的全部蕴含项。
表2-23 表格法化简函数
含1个数 |
Ⅰ |
Ⅱ |
Ⅲ |
1 |
m0 0000 √ |
m0, m4 0×00 b m0, m8 ×000 c |
m10, m11与m14, m15 1×1× a |
2 |
m4 0100 √ m8 1000 √ |
m4, m6 01×0 d m8, m10 10×0 e |
|
3 |
m6 0110 √ m10 1010 √ |
m6, m14 ×110 f m10, m14 1×10 g m10, m11 101×√ |
|
4 |
m11 1011 √ m13 1101 √ m14 1110 √ |
m14, m15 111×√ m13, m15 11×1 h |
|
5 |
m15 1111 √ |
|
|
④为了将函数化为最简,还要去掉多余的项。作覆盖表A,如表2-24所示。该表的行标号为全部的蕴含项,列标号为所有1项的十进制下标。将每一个蕴含项所包含的最小项在表中对应的位置画“×”,全部画完后,找出只有一个“×”的列,并将此“×”改画为“*”。“*”号对应的蕴含项称为本质蕴含项。本质蕴含项一定不是多余的项,将其用“*”标记出来。
表2-24 覆盖表A
|
0 |
4 |
6 |
8 |
10 |
11 |
13 |
14 |
15 |
|
a* |
|
|
|
|
× |
* |
|
× |
× |
a=AC |
b |
× |
× |
|
|
|
|
|
|
|
b=A' C' D' |
c |
× |
|
|
× |
|
|
|
|
|
c=B' C' D' |
d |
|
× |
× |
|
|
|
|
|
|
d=A' BD' |
e |
|
|
|
× |
× |
|
|
|
|
e=AB' D' |
f |
|
|
× |
|
|
|
|
× |
|
f=BCD' |
g |
|
|
|
|
× |
|
|
× |
|
g=ACD' |
h* |
|
|
|
|
|
|
* |
|
× |
h=ABD |
⑤ 本质蕴含项还不能包含所有的最小项。再作覆盖表B,如表2-25所示。其行向量是去掉本质蕴含项的其他蕴含项,列向量是覆盖表A中去掉本质蕴含项所对应的“×”和“*”所在的列后剩下的列。
表2-25 覆盖表B
|
0 |
4 |
6 |
8 |
b |
× |
× |
|
|
c |
× |
|
|
× |
d |
|
× |
× |
|
e |
|
|
|
× |
f |
|
|
× |
|
g |
|
|
|
|
由表2-25可见,每个最小项都可以由两个蕴含项来代表,m0可以由b或者c来代表,m4可以由b或者d来代表。m6可以由d或者f来代表,m8可以由e或者c来代表。所以若要将4个蕴含项都表示出来,逻辑关系为:
(b+c)(b+d)(d+f)(c+e)=(c+be)(d+bf)
=cd+bde+bcf+bef
此式表明,要包含m0﹑m4﹑m6﹑m8四项,有4种方法:c与d,b与d与e,b与c与f,b与e与f。显然,要使函数最简,选取c与d。所以该逻辑函数的最简式为:
F(A,B,C,D)=a+c+d+h
=AC+B' C' D'+A' BD'+ABD
首先,介绍一下任意项的概念。在实际的逻辑设计中,某些最小项的取值是不确定的或是无关紧要的。例如,我们用4位二进制数为十进制数编码时,只用到0000~1001,而1010~1111则用不到,成为任意项。任意项为0或为1不会对设计有影响,所以任意项的取值应该以使函数尽量最简为原则。用d来表示任意项,下面举例说明如何化简包含任意项的逻辑函数。
【例2-43】用卡诺图化简逻辑函数F(A,B,C,D)=∑m(5,7,9)+∑d(10,11,12,13,14,15)。
解:在用卡诺图表示包含任意项的逻辑函数时,将d一起填入卡诺图。如图2-56所示。
在圈卡诺图时,如果d=1可以使圈画得更大,使函数尽量最简,我们就认为d=1;最后没有被圈到的d=0。其他的画圈规则同前面讲过的一样,本题的卡诺图圈法如图2-57所示。
该卡诺图的化简结果为:
F(A,B,C,D)=BD+AD
【例2-44】用卡诺图化简逻辑函数F(A,B,C,D)=∑m(0,1,4,9,12,13)+∑d(2,3,6,10,11,14)。
图2-56 卡诺图的填法 图2-57 卡诺图的圈法
解:本例函数的卡诺图如图2-58所示。
该卡诺图的化简结果为:
F(A,B,C,D)=A' B'+A' D'+BD'
【例2-45】用卡诺图化简逻辑函数F(A,B,C,D)=∑m(3,5,6,9,12,13,14,15)+∑d(0,1,7,8)。
解:本例函数的卡诺图如图2-59所示。
图2-58 卡诺图 图2-59 卡诺图
图2-60 卡诺图 |
F(A,B,C,D)=A' D+C' D+BC+AB
【例2-46】用卡诺图化简逻辑函数F(A,B,C,D)=∏M(1,3,6,12)∏d(8,9,10,11,12,13)。
解:本例的卡诺图如图2-60所示。
该卡诺图的化简结果为:
F(A,B,C,D)=(B+D')(A'+C)(A+B'+C'+D)
图2-60 卡诺图