第三节 逻辑代数及逻辑函数的化简
英国数学家乔治·布尔于1849年提出了研究事物间的逻辑关系的数学方法——布尔代数。继而,布尔代数被广泛应用于解决开关电路和数字逻辑电路的分析和计算上,因此,布尔代数也称为逻辑代数。它是分析和设计逻辑电路的数学工具,常用来研究逻辑函数与逻辑变量之间的关系。
本节在介绍逻辑代数基本公式、基本定律、基本定理的基础上,讲述逻辑函数的四种表示方法——真值表、逻辑函数表达式、逻辑图、卡诺图,以及逻辑函数的两种化简方法——公式法、卡诺图法。
一、逻辑代数的基本公式和基本定律
1.基本公式
(1)常量之间的关系
逻辑加: 0+0=0 (1-13)
0+1=1 (1-14)
1+1=1 (1-15)
逻辑乘: 0·0=0 (1-16)
0·1=0 (1-17)
1·1=1 (1-18)
常量之间的关系,体现了逻辑代数中的基本运算规则,也称为公理。
(2)常量与变量之间的关系
逻辑加: A+0=A (1-21)
A+1=1 (1-22)
逻辑乘: A·0=0 (1-24)
A·1=A (1-25)
2.基本定律
交换律: A+B=B+A (1-27)
A·B=B·A (1-28)
结合律 (A+B)+C=A+(B+C) (1-29)
(A·B)·C=A·(B·C) (1-30)
分配律: A+B·C=(A+B)·(A+C) (1-31)
A·(B+C)=A·B+A·C (1-32)
同一律: A+A=A (1-33)
A·A=A (1-34)
3.基本定理
(1)代入定理
在任何一个含有变量A的逻辑等式中,若以一个逻辑式Y代入等式两边所有的A,则等式仍然成立,这就称为代入定理。利用代入定理可以扩大公式的应用范围。
【例1-5】 证明在 中,用Y=AC代入等式两边中A的位置,等式仍成立。
证明:
可见,德·摩根定律也适用于多变量的情况。这里需要说明,为了书写方便,乘法运算的“·”可以省略。另外,对一个乘积项求反时,乘积项外边的括号也可以省略。
(2)反演定理
对于任意一个逻辑式Y,若将逻辑式Y中所有的“·”换成“+”,“+”换成“·”;“1”换成“0”,“0”换成“1”;原变量换成反变量,反变量换成原变量,则得到的结果就是反逻辑式。这个规律称为反演定理。这个定理为求取已知逻辑式的反逻辑式提供了方便。
在使用反演定理时需要注意两点:一是运算符号的先后次序,即先括号、然后乘、最后加;二是不属于单个变量上的反号应保持不变。
【例1-6】 求 反逻辑式。
解: 。同样也可以用德·摩根定律来求反逻辑式。
(3)对偶定理
若两个逻辑式相等,则它们的对偶式也相等,这就是对偶定理。对于任意一个逻辑式Y,若将其中的“·”换成“+”;“+”换成·”;“0”换成“1”;“1”换成“0”,则得到一个新的逻辑式Y′,这个Y′就称为Y的对偶式。
【例1-7】 用对偶定理证明A+BC=(A+B)(A+C)。
证明:等式左边的对偶式为 Y′=A(B+C)
等式右边的对偶式为 Y′=AB+AC
由分配律可知,这两个对偶式是相等的,则它们的逻辑式也相等。
4.常用公式
A+AB=A (1-38)
常用公式的证明可用基本公式,也可分别列出公式两边的真值表,若两边的真值表相等,则公式成立。
【例1-8】 证明式(1-39): 。
式(1-39)表明,两个乘积项相加时,如果一个乘积项的反是另一个乘积项的因子,则这个因子是多余的。
【例1-9】 证明式(1-42): 。
式(1-42)表明,若两个乘积项中分别包含A和两个因子,而这两个乘积项的其余因子组成第三个乘积项时,则第三个乘积项是多余的。不难发现,式(1-41)和式(1-42)是同出一辙的,只是表示方式不同而已。
【例1-10】 证明式(1-43): 。
上式表明,当A和一个乘积项的非相乘,且A为乘积项的因子时,则A这个因子可以消去。
上式表明,当 和一个乘积项的非相乘,且 为乘积项的因子时,其结果就等于 。
二、逻辑函数的公式化简法
1.化简的意义
前面已介绍,一个逻辑函数的表示方式通常有许多种,而且它们之间可以相互转换。在实际的工程设计中,往往根据解决实际问题的逻辑功能,列出逻辑真值表,并由真值表归纳出逻辑表达式,再经过适当化简,设计出逻辑电路图。要完成科学、合理的设计工作,化简这一步是非常必要的。我们经常看到,一个逻辑函数可以写成不同的逻辑表达式,而这些表达式的繁简程度相差较大。例如有两个逻辑函数:
Y=B+C
将它们的真值表分别列出后,可以看到实际上它们是同一个逻辑函数,所实现的功能完全一样。但通过比较分析,两个逻辑表达式所对应的逻辑电路图,如图1-13(a)、(b)所示,其繁简程度也大不相同。显然,图1-13(b)的逻辑电路简单明了,所用器件也少。因此,化简的意义就在于能得到最简的逻辑电路图,而且能节约器件,提高电路设计的合理性、经济性和可靠性。
图1-13 逻辑函数化简前后的电路比较
2.逻辑函数的最简形式
一个逻辑函数确定后,其真值表是唯一的,实现的逻辑功能也是唯一的,但其函数表达形式却有许多种。各种表达形式有繁有简,其表达形式越简单,电路设计就越容易,所以要寻求最简的表达形式。
与或表达式是常见的最简表达式,它由几个乘积项相加组成,称为“积之和”。所谓最简与或表达式是指乘积项的项数最小,且每个乘积项中的变量数也最少。化简逻辑函数的目的就是要消去多余的乘积项和多余的变量数。因为,乘积项数目少,可减少或门的器件数量,而乘积项中的变量数少,可减少与门的输入端和连接线的数量。
由于逻辑代数的基本公式和常用公式多以与或表达式给出,用于化简与或表达式比较方便。有了与或表达式就能方便地同其他表达式进行变换,逻辑函数表达式的变换类型可分为五种形式。例如,,可以有以下五种表达形式:
由上可见,一个逻辑函数的表达形式不是唯一的,在电路设计时可以用不同的逻辑电路、逻辑器件来实现同一逻辑功能。究竟选用何种表达形式(决定电路形式),由实际情况来确定。有时为了使用某种逻辑器件,就必须采用某种表达形式。但应该注意,用最简与或表达式变换为其他表达形式时,得到的结果不一定是最简的。
3.公式化简法
公式化简法就是利用逻辑代数的基本公式和常用公式对逻辑函数进行化简,消去逻辑表达式中多余的乘积项和多余的变量数,以求得逻辑表达式的最简形式。公式化简法没有固定的步骤,经常使用的方法有以下几种。
(1)并项法
利用,将两项合并成一项,消去B和一对因子。且根据代入定理A和B可以是任何复杂的逻辑式。
【例1-11】 化简 。
【例1-12】 化简 。
(2)吸收法
利用A+AB=A,消去多余的AB项。A和B同样也可以是任何一个复杂的逻辑式。
【例1-13】 化简 。
【例1-14】 化简 。
(3)消去法
利用,消去多余因子。利用,消去多余项。
【例1-15】 化简 。
【例1-16】 化简 。
(4)配项法
利用A+A=A或等方法,然后拆成两项,再分别与其他项合并,有时能获得更简单的化简结果。
【例1-17】 化简 。
【例1-18】 化简 。
应该指出,利用上述方法进行化简所取得的结果不是唯一的,有时还需要综合运用以上几种方法及相关的公式、定律来进行。由于实际的逻辑表达式多种多样,化简时又没有固定的步骤可循,需要我们多做练习,积累经验,掌握一定的技巧,才能迅速求得最简逻辑表达式。
三、逻辑函数的卡诺图化简法
公式化简法需要反复运用一些公式,并掌握一定的技巧,而且所得的结果是否为最简,往往难以判断,下面介绍一种比较简便、直观的卡诺图化简法,又称图形法。在介绍卡诺图化简法之前,先介绍一些相关知识。
1.逻辑函数的最小项
(1)最小项定义
在n变量的逻辑函数中,若m为包含n个变量的一个乘积项,而且这n个变量都以原变量或反变量的形式在m中出现一次,则称这个m为这组变量的一个最小项。
例如,在A、B、C三个变量的逻辑函数中,共有8个(即23个)乘积项,这8个乘积项都符合最小项定义,即每个乘积项都有三个变量,每个变量都以原变量或反变量的形式仅出现一次,因此,这8个乘积项是三变量A、B、C的最小项。n个变量的最小项有2n个,如n=4,就有24个最小项,依次类推。
(2)最小项性质
为了分析最小项的性质,列出了三变量所有最小项取值表,见表1-8。由该表及最小项定义可见最小项具有以下性质:
①每个最小项对应一组变量取值,对任意一个最小项,只有一组变量取值使它为1,其他取值均为0。例如,当A=0、B=0、C=1时,。
②任意两个最小项之积恒为0。
③全体最小项之和恒为1。
④具有相邻性的两个最小项之和可以合并成一项并消去一对变量。
(3)最小项编号
为了使用方便,常给最小项进行编号。编号的方法是:把该最小项所对应的那一组变量取值的二进制数,转换为相应的十进制数,就是该最小项的编号。例如,在三变量A、B、C的各最小项中,对应的变量取值的二进制数为000,其十进制数为0,因此,最小项的编号为m0。对应的取值为011,编号为m3,依次类推。
表1-8 三变量所有最小项取值表
续上表
(4)最小项表达式
任何一个逻辑函数都可以表示成最小项之和的形式,而且对某个逻辑函数来说,这种表达式只有一个,这种表达形式称为最小项表达式。
【例1-19】 某逻辑函数的真值表见表1-9,求它的最小项表达式。
解:将函数Y=1的变量取值所对应的各最小项,用和的形式来表达,就能求得最小项表达式。根据表1-9,逻辑函数的最小项表达式为
表1-9 例1-19逻辑函数的真值表
可见,由真值表求得的逻辑表达式就是最小项表达式。
【例1-20】 将Y=AB+AC+BC展开为最小项表达式。
2.逻辑函数的卡诺图表示法
将n个变量的全部最小项用小方格表示出来,并按逻辑相邻性的规则排列起来,所得的图形称为卡诺图。这里所谓的逻辑相邻性,是指两个相邻小方格内所代表的最小项仅有一个变量不同,且互为反变量,其余变量均相同。如和这两个最小项,仅变量A不同,且A与互为反变量,所以它们具有逻辑相邻性。
(1)卡诺图的画法
卡诺图中小方格的个数取决于逻辑变量的个数,n个变量有2n个小方格。两个变量有4个小方格,各方格分别代表四个最小项,记作m0、m1、m2、m3。三变量逻辑函数有8个小方格,四变量有16个小方格,二~四变量的卡诺图画法如图1-14所示。
为画图方便,一般在卡诺图的左上角标注变量,在左边与上边标注对应变量的取值。为了使相邻的最小项具有逻辑相邻性,变量的取值不能按00→01→10→11的顺序排列,而应以00→01→11→10的顺序排列。按照这样的排列,不难发现相邻小方格的左右、上下、最左与最右、最上与最下都具有逻辑上的相邻性。按这样的规律,每个小方格所对应的最小项编号,即为该最小项的二进制代码的十进制数,并在此方格内标出相应的编号。
图1-14 二~四变量卡诺图
(2)用卡诺图表示逻辑函数
既然任何一个逻辑函数都能表示为若干最小项之和的形式,而各最小项与卡诺图中的各小方格相对应,自然可以用卡诺图来表示任何一个逻辑函数。具体的方法是先根据变量数画出卡诺图,然后将逻辑函数化成最小项之和的形式,找出这些最小项与小方格的对应位置,并在对应方格内填入1,其余的位置上填0(或空白),这就得到表示该逻辑函数的卡诺图。
【例1-21】 用卡诺图表示逻辑函数Y=AB+AC+BC。
解:先将逻辑函数展开成最小项和的形式。
将上述最小项填入卡诺图,如图1-15所示。但应该注意的是上式中有三个ABC,只要在对应方格内填上一个1就够了。
3.逻辑函数的卡诺图化简法
利用卡诺图化简逻辑函数的方法称为卡诺图化简法。化简时依据的原理就是具有相邻性的最小项可以合并,并消去不同的变量。由于卡诺图上几何位置相邻性与逻辑上的相邻性是一致的,因而可在卡诺图上直接找出那些具有相邻性的最小项并将其合并。
图1-15 例1-21的卡诺图
(1)合并最小项的规律
①若两个最小项相邻,则可合并为一项,并消去一个变量,得到由相同变量组成的乘积项。图1-16所示为两个相邻最小项合并的例子。合并时可将两个为1的相邻小方格用圈圈起来。
在图1-16(a)中,合并后消去了和A一对变量,只剩下公共变量B和C,即
在图1-16(b)中,
在图1-16(c)中,
②若四个最小项相邻,合并为一项时可消去两个变量。图1-17为四个相邻最小项合并的例子。
在图1-17(a)中,
在图1-17(b)中
图1-16 两个相邻最小项合并的例子
图1-17 四个相邻最小项合并的例子
③若八个最小项相邻,合并为一项时可消去三个变量。图1-18为八个相邻最小项合并的例子。在图中可以用相邻性原理直观比较得出其结果。
一般地说,2n个最小项合并时,可消去n个变量。
(2)卡诺图化简法的步骤
用卡诺图化简逻辑函数时,一般按以下四个步骤进行:
①根据逻辑变量数画出卡诺图。
②将函数化成最小项之和,并在所有最小项对应的方格内填入1。
③找出可以合并的最小项,将相邻为1的方格圈起来。
④将各个圈所得的乘积项相加,就得到化简后的逻辑表达式。
图1-18 八个相邻最小项合并的例子
应该指出,尽管卡诺图化简比较直观,容易掌握,但还是要有一定的技巧和方法。选取化简后的乘积项应掌握以下几个原则:
①圈越大越好,圈所包围的最小项越多,消去的变量越多,所得的乘积项越简单,对应的输入端数就越少。
②圈的个数要最少,圈的个数少,所得的乘积项就少,则所用的器件也少。但所有的最小项(即填1的方格)都必须覆盖到,不能遗漏。
③最小项可以重复使用,但每一圈内至少应包含一个新的最小项。
④最后对所得的与或表达式进行检查、比较,以使化简结果确实是最简形式。另外,圈法不同所得的结果也会不同。
【例1-22】 用卡诺图化简逻辑函数 。
解:①画出四变量卡诺图。
②将函数化成最小项和的形式,并在卡诺图对应的方格内填1。
③合并最小项。画圈合并如图1-19所示。
④将各个圈所得的乘积项相加,得到简化后的逻辑表达式。
图1-19 例1-22的卡诺图
【例1-23】 试化简图1-20逻辑电路图所表示的逻辑函数,并以化简后的逻辑表达式,画出用与或非门器件组成的逻辑电路图。
解:①画出四变量卡诺图。
②根据给定逻辑电路图,写出函数最小项表达式,并在卡诺图对应的方格内填1。
图1-20 例1-23的逻辑电路图
③合并最小项,画圈合并如图1-21所示。
④将各圈所得的乘积项相加,得到最简的逻辑函数与或表达式:
⑤因为要用与或非器件,就需要对最简与或表达式进行变换:
图1-21 例1-23的卡诺图
最后画出经过化简、变换后,用与或非器件组成的逻辑电路图,如图1-22所示。
图1-22 例1-23的简化电路图
值得注意的是,本例中采用圈1的方法来化简逻辑函数,反而显得不简便,因为1的最小项较多,书写表达式不便。如采用圈0的方法更为方便,尤其当0的数目远少于1的数目时,这种方法更为简单。其原理是因为全部最小项恒为1,将全部最小项分成两部分,一部分是为1的那些最小项Y,另一部分是为0的那些最小项,则。例如在图1-21中,如采用圈0法,立即可得
所得结果与用圈1法一致。
通过例1-23的分析,不但使我们了解了卡诺图化简逻辑函数的方法,还可以证明三个问题,首先,用卡诺图化简逻辑函数时可以通过合并为1的最小项,即用圈1法,也可以通过合并为0的最小项,即用圈0法,尤其对要求为与或非表达时,圈0法更简便,究竟用何种方法应视具体情况而定。其次,一个逻辑函数可以用不同的形式来表示,如与或表达式可转换为与或非表达式。最后,一个逻辑函数表达式可以与逻辑电路图、真值表进行相互转换。
4.具有约束的逻辑函数的化简
(1)逻辑函数中的约束项
在实际的逻辑问题中,经常会遇到输入变量的取值不是任意的,而是具有一定的制约关系。因此,约束是指输入变量取值组合受到的限制。
例如,有三个变量A、B、C,它们分别代表交通路口的信号灯红、绿、黄三种,A=1表示红灯亮禁止通行,B=1表示绿灯亮可通行,C=1表示黄灯亮作准备,三个灯中不允许有两个以上的灯同时亮,那么ABC的取值只能是001、010、100中的一种,而000、011、101、110、111等取值是不可能的。这样,ABC之间存在着约束关系。将包含约束关系的最小项称为约束项,像上面所述的后五种都是约束项。
通常用约束条件来描述约束的具体内容。由于每一组输入变量的取值都使用一个,而且仅有一个最小项的值为1,当限制某些输入变量的取值不能出现时,可用它们对应的最小项恒等于0来表示。因此,约束条件可表示为含有约束关系的最小项之和。本例中的约束条件为
有时还会遇到在输入变量的某些取值下函数值是1还是0都可以,并不影响电路功能,这些最小项称为任意项。任意项和约束项统称无关项,它们的最小项可以写入逻辑函数式,也可以不写入。
(2)具有约束条件的逻辑函数的化简
对具有约束条件的逻辑函数,可以利用约束项进行化简,使化简更简单。约束项在卡诺图中用“×”表示,在化简中既可将某些约束项看作0,也可看作1,因为,加上约束项与不加上约束项对函数的取值不会影响。
【例1-24】 用8421BCD码表示十进制数0~9,要求当十进制数为奇数时,输出为1,即对应的m1、m3、m5、m7、m9均为1,求此函数的最简表达式。
解:在用8421BCD码表示十进制数0~9时,其中1010~1111六个状态是不会出现的,为约束项。
①若不考虑约束项,由图1-23的卡诺图可得
②若考虑约束项,由图1-23的卡诺图的虚线部分可得
Y=D
显然,利用约束项化简后得到的结果比较简单。
图1-23 例1-24的卡诺图