
1.3 逻辑代数
逻辑代数(布尔代数)是描述客观事务逻辑关系的数学方法,又称开关代数,是数字电路分析和设计时所用的主要数学工具。逻辑代数中只有0和1两个数字,用来描述两种完全相反的逻辑状态,不代表具体数值。如高电平与低电平,开关的闭合与断开等。
1.3.1 3种基本逻辑关系
在二值逻辑中,有3种最基本的逻辑,分别是与逻辑、或逻辑和非逻辑。对应的最基本逻辑运算有3种:与运算、或运算和非运算。
1.与逻辑和与运算
分析如图1-2(a)所示开关电路,假设,对开关A、B来说,用1表示开关闭合,0表示开关断开,对灯泡P 来说,用1表示灯亮,0表示灯灭,则电路的工作情况可以用表1-7表示。

图1-2 与逻辑
表1-7 与逻辑真值表

表1-7也称逻辑函数真值表,是描述逻辑函数的一种直观的描述方法,真值表的左边是输入变量所有可能的取值组合,右边是对应的输出值。
满足表1-7工作情况的逻辑称为与逻辑。与逻辑的定义是决定某一事件发生的条件全部具备时,事件才发生。
与逻辑的逻辑函数表达式:P=A·B。
实现与逻辑的单元电路称为与门,其逻辑符号如图1-2(b)所示。常用·,∧,∩,&及and表示相与。与运算也叫逻辑乘,它的运算规则是:
0·0=0;0·1=0;1·0=0;1·1=1。
值得注意的是,逻辑运算和算术运算是有区别的。由运算规则可以推出逻辑乘的一般形式是:
A·1=A; A·0=0; A·A=A。
逻辑乘的意义在于:只有A和B都为1时,函数值P才为1。
逻辑乘的运算口诀是:全1为1。
2.或逻辑
对图1-3(a)电路,做同样的假设,则电路的工作情况可以用表1-8表示。满足如表1-8工作情况的逻辑称为或逻辑。或逻辑的定义是决定某一事件发生的条件只要有一个具备时,事件就发生。
或逻辑的逻辑函数表达式:P=A+B。
实现或逻辑的单元电路称为或门,其逻辑符号如图1-3(b)所示。常用﹢,∨,∪及or表示相或。
或运算也叫逻辑加,它的运算规则是:0+0=0;0+1=1;1+0=1;1+1=1。

图1-3 或逻辑
表1-8 或逻辑真值表

由运算规则可以推出逻辑加的一般形式是:A+0=A;A+1=1;A+A=A;
逻辑加的意义在于:A或B中只要有一个为1,则函数值P就为1。
逻辑加的运算口诀是:见1出1。
3.非逻辑
图1-4(a)是非逻辑的电路图,非逻辑的真值表如表1-9所示,非逻辑的定义是两个事件互为条件;事件一发生时,事件二不会发生;事件一不发生时,事件二才会发生;反之亦然。非逻辑也叫取反。

图1-4 非逻辑
表1-9 非逻辑真值表

非逻辑的逻辑函数表达式:P=。
实现非逻辑的单元电路称为非门,其逻辑符号如图1-4(b)所示。常用ˉ及 no 表示逻辑非。
非逻辑的运算规则是:;
非逻辑的一般形式是:。
逻辑非的意义在于:函数值P等于输入变量的反。
1.3.2 复合逻辑和逻辑运算
与、或、非3种基本逻辑按不同的方式组合,还可以构成与非、或非、与或非、同或、异或等逻辑,统称为复合逻辑。
1.与非逻辑和与非运算
与非的逻辑函数表达式:,与非的逻辑符号和真值表如图1-5和表1-10所示。与非逻辑的运算口诀是:见0出1。

图1-5 与非逻辑符号
表1-10 与非逻辑真值表

2.或非逻辑和或非运算
或非的逻辑函数表达式:,或非的逻辑符号和真值表如图1-6和表1-11所示。或非逻辑的运算口诀是:全0为1。

图1-6 或非逻辑符号
表1-11 或非逻辑真值表

3.与或非逻辑
与或非逻辑由“先与后或再非”3种运算组合而成。与或非的逻辑函数表达式:,与或非的逻辑符号和真值表如图1-7和表1-12所示。与或非运算口诀时:只有当输入变量A、B同时为1或C、D同时为1时,输出P才等于0。

图1-7 两组两输入与或非逻辑
表1-12 两组两输入与或非真值表

4.异或逻辑和异或运算
异或的逻辑函数表达式:,异或的逻辑符号和真值表如图1-8和表1-13所示。

图1-8 异或逻辑符号
表1-13 异或逻辑真值表

异或的运算规则是:
0⊕0=0;0⊕1=1;1⊕0=1;1⊕1=0
异或的一般形式是:

异或逻辑的运算口诀是:相异为1。
5.同或(异或非)逻辑和同或运算
同或的逻辑函数表达式,同或的逻辑符号和真值表如图1-9和表1-14所示。

图1-9 同或逻辑符号
表1-14 同或逻辑真值表

同或的运算规则是:0⊙0=1;0⊙1=0;1⊙0=0;1⊙1=0
同或的一般形式是:A⊙0=;A⊙1=A;A⊙A=1;A⊙
=0
同或逻辑的运算口诀是:相同为1。
值得注意的是,异或和同或是一对很特殊的逻辑,是一对反函数,而且都是二变量逻辑。当多个变量异或时,可以通过若干个异或门来实现。例如,函数F=A⊕B⊕C⊕D,可通过图1-10来实现。异或和同或的应用也很广泛,如异或门可以实现加法运算(如半加、全加)、用于奇偶校验电路等,同或门可以用作比较器,比较数的大小。在第3章中会有相关的讲解。异或和同或还有一些有趣的等式,如:


图1-10 多变量异或的实现
常见基本逻辑单元国标符号与非国标符号对照表见本书附录A。其中,国标符号是指国家标准《电气图用图形符号》中“二进制逻辑单元”的图形符号,本书采用国标符号。
1.3.3 逻辑代数的基本公式、3个规则和常用公式
1.基本公式
根据逻辑与、或、非3种基本运算,可推导出逻辑运算的一些基本公式,如表1-15所示。
在表1-15中,有的公式如交换律与普通代数中的定理形式相同,有的公式与普通代数中的定理形式不同,是逻辑代数中所特有的,如01律、重叠律、反演律和调换律等。其中反演律又叫摩根定律,它提供了一种非常有价值的布尔表达式变换处理方法。反演律能将或非函数变换成与函数,与非函数变换成或函数。
表1-15 逻辑代数的基本公式

表1-15中给出的公式反映了逻辑代数的基本规律,有些是显而易见的,而有些不容易看出是否正确,最可靠的证明方法就是利用真值表进行检验。也可以根据逻辑运算中的等式来证明。
【例1-13】用真值表证明反演律:
证明根据等式,列出真值表如表1-16所示。由表1-16可见,对应于A,B的全部状态取值组合,和
的值都一一对应,完全相同,所以
,等式成立。
表1-16 例1-13真值表

【例1-14】用公式证明分配律:A+BC=(A+B)(A+C)
证明(A+B)(A+C)=A·A+AC+AB+BC=A+AC+AB+BC=A(1+C+B)+BC=A+BC
2.三个规则
(1)代入规则:任何1个含有变量A的等式,如果将所有出现变量A的地方都代之以一个逻辑函数F,则等式仍然成立。
【例1-15】已知,若令
代替A,则:
成立。而:
不成立。代入规则的意义在于可以扩大基本公式的应用范围。
(2)反演规则:设F是一个逻辑函数表达式,如果将F中所有的“+”和“·”(注意,在逻辑函数表达式中,“·”常被省略)互换,所有的常量0和常量1互换,所有的原变量和反变量互换,这样所得到新的函数式就是。
称为原函数F的反函数,或称补函数。反演规则又称互补规则。
这个变换过程可归纳为:变号、变常量、变变量,凡是不属于单个变量的非运算符号保留不变,保留原有的运算和书写顺序不变。利用反演规则可以方便地求逻辑函数的反函数。反演规则的意义在于已知原函数,求反函数。函数两次取反等于函数本身,即=F。
【例1-16】已知,求反函数F1。
解由反演规则,可得:
【例1-17】已知,求反函数
。
解由反演规则,可得:
(3)对偶规则:设F是一个逻辑函数表达式,如果将F中所有的“+”和“·”互换,所有的常量0和常量1互换,则得到一个新的函数表达式F*,F*称为F的对偶式。
这个变换过程可归纳为:变号、变常量、保留原有的运算和书写顺序不变。利用对偶规则可以方便地求逻辑函数的偶函数。对偶规则的意义在于已知原函数,求偶函数。函数的两次对偶等于函数本身,即:(F*)*=F。
【例1-18】已知,求偶函数
。解由对偶规则,可得:
【例1-19】已知,求偶函数
。
解由对偶规则,可得:
【例1-20】已知,求偶函数F*。
解由对偶规则,可得:
对偶规则可以将一个与或(或与)表达式F,变成或与(与或)表达式F*,大多数逻辑函数F和F*并不相等,但有一些特殊的自对偶函数,F和F*相等,同或,异或逻辑就具有自对偶性,可得同或、异或的一些特殊等式如:
(A⊕B)*=A⊙B;(A⊙B)*=A⊕B
(A⊙B⊕C)*=A⊕B⊕C=A⊙B⊙C
(A⊙B⊙C)*=A⊙B⊙C=A⊕B⊕C
如果两个逻辑函数表达式相等,那么它们的对偶式也一定相等。
利用对偶规则,不仅可以帮助人们证明逻辑等式,而且可以帮助人们减少公式的记忆量。表1-16列出的逻辑代数基本公式中,公式1和公式2两组公式之间实际上呈互为对偶关系,当记忆这些公式时,仅需记忆一半即可,这为逻辑运算提供了许多方便。
3.常用公式
逻辑代数的常用公式如表1-17所示。
表1-17 逻辑代数的常用公式

表1-17中逻辑代数的常用公式证明如下。
公式①证明:
公式②证明:A+AB=A(1+B)=A
公式③证明:
公式④证明:
公式⑤证明:
1.3.4 逻辑函数及其表示方法
1.逻辑函数的建立
按某种逻辑关系,用有限个与、或、非等逻辑运算关系将逻辑变量x0,x1,…,xn结合起来,得到F=f(x0,x1,…,xn),其被称为逻辑函数。
逻辑变量和逻辑函数的取值只有0和1,当变量x0,x1,…,xn的取值确定后,F的取值也唯一确定。建立一个逻辑函数时,一般可以先列出真值表,然后写出逻辑函数表达式。一个逻辑函数可以有多种表示方法。
已知真值表求逻辑函数表达式可用下述两种方法。
方法1:把输出为1的相对应一组输入变量(A,B,C,…)组合状态以逻辑乘形式表示(用原变量表示变量取值1,用反变量表示变量取值0),再将所有F=1的逻辑乘进行逻辑加,即得出F的与或表达式,或称积之和式。
方法2:把输出为0的相对应一组输入变量(A,B,C,…)组合状态以逻辑加形式表示(用原变量表示变量取值0,用反变量表示变量取值1),再将所有F=0的逻辑加进行逻辑乘,即得出F的或与表达式,或称和之积式。
下面举例说明建立逻辑函数的过程。
【例1-21】设有A,B,C共3人对某提案进行表决,遵循少数服从多数的表决原则,表决结果用P表示。试列出P的真值表,并写出逻辑函数表达式。
解先作以下假设:表决者A,B,C 赞成提案用1表示,反对提案用0表示;表决结果P通过用1表示,否决用0表示;则可列出真值表如表1-18所示。由表1-18可见,P=1的输入组合有ABC为011,101,110,111共4组,分别可以写成、ABC,所以输出P的与或式(积之和式)为
同理,P=0的输入组合有ABC为000、001、010和100共4组,分别可以将其写成 A+B+C、、A+和B+
A+
+C
+B+C,所以输出 P 的或与式(和之积式)为P=(A+B+C)
。

表1-18 三者表决真值表

2.逻辑函数的表示方法
逻辑函数的表示方法通常有真值表(表格形式)、逻辑函数表达式(数学公式形式)、逻辑电路图(逻辑符号形式)、卡诺图(几何图形形式)及波形(动态图形形式)等5种方法。
(1)真值表法:采用表格形式来表示逻辑函数的运算关系,其中输入部分列出输入逻辑变量的所有可能组合(n变量输入共有2n个组合),输出部分给出相应的逻辑输出值。函数的真值表直观明了,但随着输入变量数增加,真值表显得繁琐。
(2)逻辑函数表达式法:由逻辑变量和与、或、非等逻辑运算组成的代数式。与普通代数不同,布尔代数中的变量是二元值的逻辑变量。
(3)逻辑电路图法:采用规定的图形符号,来构成逻辑函数运算关系的网络图形。
(4)卡诺图法:一种几何图形,可以用来表示和简化逻辑函数表达式。这种方法会在1.3.5节中介绍。
(5)波形图法:一种表示输入输出变量动态变化的图形,反映了函数值随时间变化的规律。
逻辑函数的5种表示方法在本质上是相同的,可以相互转换。例1-21说明了真值表到表达式的转换,下面举例说明其他形式的转换。
【例1-22】画出例1-21中三者表决函数的逻辑图。
解由例1-21已得到三者表决函数的输出函数表达式,经化简,可得

可用3个与门和1个或门实现函数,三者表决逻辑电路图如图1-11所示。结合例1-21,可以得到建立逻辑函数的全过程。

图1-11 例1-22三者表决逻辑电路图
【例1-23】写出如图1-12所示逻辑图的函数表达式
A⊕0=A;A⊕1=;A⊕
=1;A⊕A=0
异或逻辑的运算口诀是:相异为1。
5.同或(异或非)逻辑和同或运算
同或的逻辑函数表达式:P=A⊙B=A B+,同或的逻辑符号和真值表如图1-9和表1-14所示。

图1-9 同或逻辑符号
表1-14 同或逻辑真值表

同或的运算规则是:0⊙0=1;0⊙1=0;1⊙0=0;1⊙1=0
同或的一般形式是:A⊙0=;A⊙1=A;A⊙A=1;A⊙
=0
同或逻辑的运算口诀是:相同为1。
值得注意的是,异或和同或是一对很特殊的逻辑,是一对反函数,而且都是二变量逻辑。当多个变量异或时,可以通过若干个异或门来实现。例如,函数F=A⊕B⊕C⊕D,可通过图1-10来实现。异或和同或的应用也很广泛,如异或门可以实现加法运算(如半加、全加)、用于奇偶校验电路等,同或门可以用作比较器,比较数的大小。在第3章中会有相关的讲解。异或和同或还有一些有趣的等式,如:


图1-10 多变量异或的实现
常见基本逻辑单元国标符号与非国标符号对照表见本书附录A。其中,国标符号是指国家标准《电气图用图形符号》中“二进制逻辑单元”的图形符号,本书采用国标符号。
1.3.3 逻辑代数的基本公式、3个规则和常用公式
1.基本公式
根据逻辑与、或、非3种基本运算,可推导出逻辑运算的一些基本公式,如表1-15所示。
在表1-15中,有的公式如交换律与普通代数中的定理形式相同,有的公式与普通代数中的定理形式不同,是逻辑代数中所特有的,如01律、重叠律、反演律和调换律等。其中反演律又叫摩根定律,它提供了一种非常有价值的布尔表达式变换处理方法。反演律能将或非函数变换成与函数,与非函数变换成或函数。

图1-14 逻辑函数的5种形式及其逻辑电路
4.逻辑函数表达式的标准形式
对与或式和或与式来说,还有两种更为标准的形式,即最小项表达式和最大项表达式,常将这两种形式称为逻辑函数的标准形式。下面先介绍最小项和最大项的概念。
对逻辑函数来说,如果将多个变量相乘,则所构成的代数项称为乘积项,而最小项就是特殊的乘积项,该乘积项包含了逻辑函数的全部变量,而且每个变量因子仅仅以原变量或反变量的形式在1个乘积项中唯一出现1次。n变量逻辑函数共有2n个不同的最小项。
表1-21列出了三变量与全部8个最小项的真值表。从表中可以看出,对应于三变量输入ABC的8种取值中的每一种组合,都能找到与之对应的一个最小项。在最小项中,若是原变量,则变量的取值为1,若是反变量,则变量的取值为0。
表1-21 三变量与最小项真值表

为了书写方便,常用最小项的编号mi表示n变量的最小项,其中下标i∈(0,1,2,…,2n-1),若将使mi=1的变量取值当成一个二进制数,这个二进制数所对应的十进制数,即为i的取值。例如,对应于变量ABC取值为110,最小项是,编号是m6。
最小项有以下4个主要性质。
(1)在变量的任意取值组合下,仅有一个最小项的值为1,其余的全部为0,即最小项等于1的机会最小;
(2)n变量逻辑函数的全部最小项之和恒为1;
(3)任意两个不同的最小项之积恒为0,记为mi⋅mj=0(i≠j);
(4)n变量的每个最小项有n个相邻的最小项。
最小项表达式是由若干个最小项相加构成的与或表达式,又称标准与或表达式,标准积之和表达式。可以很方便地将与或式展开成最小项表达式。
【例1-25】将F(ABC)=AB+AC+BC 变换成最小项表达式。
F(ABC)=AB+AC+BC
解 =AB(C+)+AC(B+
)+BC(A+
)=
BC+A
C+AB
+ABC
或者,简写成

F(ABC)=AB+AC+BC是例1-21的三者表决器,其真值表如表1-18所示。对比真值表和最小项表达式,可以看到,逻辑函数真值表中的每一行,实质上就是一个最小项,所以,只要将真值表中使输出函数为1所对应的最小项相加,就是可以得到该函数的最小项表达式。
最小项表达式的一般形式是:
对逻辑函数来说,如果将多个变量相加(或),则所构成的代数项称为相加项,而最大项就是特殊的相加项,该相加项包含了逻辑函数的全部变量,而且每个变量因子仅仅以原变量或反变量的形式在一个相加项中唯一出现一次。n变量逻辑函数共有2n个不同的最大项。
表1-22列出了三变量与全部8个最大项的真值表。从表中可以看出,对应于三变量输入ABC的8种取值中的每一种组合,都能找到与之对应的一个最大项。在最大项中,若是原变量,则变量的取值为0,若是反变量,则变量的取值为1。
表1-22 三变量与最大项真值表

同样为了书写方便,常用Mi表示n变量的最大项,其中下标i∈(0,1,2,…,2n-1),若将使Mi=0的变量取值当成一个二进制数,这个二进制数所对应的十进制数,即为i的取值。例如,对应于变量ABC取值为110,最大项是,编号是M6。表1-23是四变量全部的最小项和最大项。
和最小项类似,最大项也有以下4个主要性质。
(1)在变量的任意取值组合下,仅有一个最大项的值为0,其余的全部为1,即最大项等于1的机会最大;
(2)任意两个不同的最大项之和恒为1;
(3)n变量逻辑函数的全部最大项之积恒为0;
(4)n变量的每个最大项有n个相邻的最大项。
最大项表达式是全部由最大项相乘构成的或与表达式,又称标准或与表达式,标准和之积表达式。
根据表1-18所示真值表,可以写出它的最大项表达式为

表1-23 四变量最小项和最大项真值表

最大项表达式的一般形式是同一逻辑函数的下标i相同的最小项和最大项是互补的,即
,而最小项表达式和最大项表达式的关系是:具有完全相同下标编号 i,变量数相同的最小项表达式和最大项表达式互补。如:

5.正逻辑与负逻辑
在逻辑电路中有两种逻辑体制:用1表示高电位,0表示低电位的,称为正逻辑体制;用1表示低电位,0表示高电位的,称为负逻辑体制。对于同一个逻辑门电路,在正逻辑定义下如实现与门功能,在负逻辑定义下则实现或门功能。
【例1-26】分别在正逻辑、负逻辑定义下,列出图1-15中F的真值表并写出F的表达式。

图1-15 例1-26波形图
解在正逻辑定义下,可得真值表如表1-24所示,输出F的逻辑函数表达式为F=ABC;在负逻辑定义下,可得真值表如表1-25所示,输出F的逻辑函数表达式为F=A+B+C。
由此可知,对于同样一个电路,虽然电路的逻辑功能(即输入、输出端的电压关系)是不会改变的,但如果采用的逻辑体制不同,就会得到不同的门电路。表1-26中列出了正、负逻辑定义下的对比关系。
表1-24 正逻辑下真值表

表1-25 负逻辑下真值表

表1-26 正、负逻辑定义下的对比关系

数字系统设计中,不是采用正逻辑就是采用负逻辑,但在同一系统中不能混合使用。本书中采用的是正逻辑。
1.3.5 逻辑函数的化简方法
逻辑函数简化的意义在于,简化逻辑电路,减少元、器件数量,降低设备成本,提高设备可靠性。
简化的目标是获得最简与或表达式。在多种逻辑表达式形式中选择与或式的原因是,不仅逻辑函数中与或表达式比较常见,与或表达式容易和其他形式的表达式相互转换,而且目前采用的可编程逻辑器件多使用与或阵列。最简与或表达式的含义是:首先保证与或表达式中乘积项的个数最少,其次还要求每个乘积项中包含的变量数最少。前者可以使电路实现时所需的逻辑门的个数最少,后者可以使逻辑门的输入端个数最少。这样就可以保证电路最简、成本最低。下面介绍两种最基本的逻辑函数化简方法:代数化简法和卡诺图化简法。
1.代数化简法
代数化简法也叫公式化简法,就是利用逻辑代数的基本公式和常用公式化简逻辑函数。常用的方法有以下几种。
(1)合并项法:合并项法主要利用公式AB+AB=A,将两项并为一项,消去一个取值不同的变量。【例1-27】【例1-28】
(2)吸收法:吸收法主要利用公式A+AB=A,,吸收多余的乘积项。
【例1-29】
【例1-30】
(3)消去法:消去法主要利用公式,消去多余的乘积因子。
【例1-31】
【例1-32】
(4)配项法:配项法主要利用公式(添加项定理),
,将待化简函数式,通过适当的添加项,达到消除更多项,使函数更简的目的。
【例1-33】化简函数
解1

解2

解3

从上例可以看到,同一个逻辑函数表达式有时候可能会有简单程度相同的多个最简式。这与化简时使用了不同的方法有关。在化简函数时,经常是不拘泥于某一种方法,而是以上方法的综合应用,如下例所示。
【例1-34】


以上举例都是针对与或表达式而言,如果需化简的函数式是其他形式,可以借助反演律和对偶规则等手段,先将待化简的表达式转换成与或式后再化简。下面举例说明。
【例1-35】

【例1-36】

逻辑函数代数化简法的优点是适合任意多的变量数,缺点是没有固定的方法,不能保证最后结果最简。公式化简法有很强的技巧性及明显的试探性。试探的成功率和化简过程的简繁,取决于对公式定理的理解和熟悉程度。实际的化简,往往并不是简单套用某个公式来解决,需要在认真观察、分析之后灵活地运用公式,最后求得最简表达式。并且在许多情况下,化简方法不唯一,甚至结果也不唯一,因此要充分利用最熟悉的公式,从一点突破,最终解决问题。
2.卡诺图化简法(图解法)
(1)卡诺图简介
卡诺图是真值表的图形表示,是最小项的方格图。将一个逻辑函数的全部最小项,填入卡诺图中相应的方格内,并保证相邻最小项在图内的几何位置上相邻,这种方格图叫卡诺图。根据表1-27所示的三变量的最小项真值表,可以得到图1-16所示的三变量卡诺图(3维卡诺图)。由图1-16可以得出如下3点。
表1-27 三变量最小项


图1-16 三变量卡诺图
① 三变量卡诺图有8个小方格,每个小方格对应三变量的1个最小项。卡诺图中标注出了三变量的8个最小项的具体位置。
② 卡诺图中方格的上标和左标是输入变量及其相应逻辑取值,0和1表示使对应小方格内最小项为1的变量取值。其中,上标采用了两位循环码。由于循环码中相邻的两组码只有1个数码不同,这就可以保证卡诺图中每1个小方格代表的最小项与它的全部相邻项在几何位置上也相邻。采用循环码,可以最大限度地满足相邻性。尤其要注意的是首尾相邻的特点,即在卡诺图中,同1行中最左和最右2个方格代表的最小项也相邻。如和最小项相邻的最小项有:
3个。
③ 卡诺图中还标注出了所有原变量和反变量在卡诺图中的覆盖范围。如在卡诺图中的覆盖范围包括最小项:m0,m1,m4,m5。利用变量的覆盖范围,可以很方便的找出变量与函数取值间的关系。四变量卡诺图应有24=16个小方格,如图1-17所示。其中两组变量AB、CD的取值组合也按照循环码排列,以保证逻辑的最大相邻性。请读者自行观察卡诺图四变量函数的16个最小项的具体位置以及所有原变量和反变量在卡诺图中的覆盖范围。

图1-17 四变量卡诺图
图1-18给出了二~五变量的卡诺图。从图中可以看到,随着输入变量的增加,卡诺图图形变得更复杂。

图1-18 二~五变量卡诺图
(2)用卡诺图表示逻辑函数
任何一个逻辑函数都可以用卡诺图来表示。由逻辑函数画卡诺图通常有如下3种方法。
① 根据真值表画卡诺图。
【例1-37】已知逻辑函数F的真值表如表1-28所示,试画出F的卡诺图。
解把真值表中输出函数 F=1的各最小项所对应的小方格内填入1,F=0的各最小项所对应的小方格内填入0(为简明起见,也可不填),即可得到该函数的卡诺图,如图1-19所示。
表1-28 例1-37的真值表


图1-19 例1-37卡诺图
② 根据最小项表达式画卡诺图。
【例1-38】已知逻辑函数F=A B+,试画出F的卡诺图。
解首先将函数的与或式变换成最小项表达式

其次按函数最小项表达式中出现的最小项,在卡诺图中相应小方格内填1,在其余的小方格内填入0,即可得到该函数的卡诺图,如图1-20所示。
③根据表达式画卡诺图。有时将函数的与或式变换成最小项表达式是很繁琐的,而根据卡诺图中各个变量与反变量的覆盖范围,可以直接画出卡诺图。
【例1-39】已知逻辑函数,试画出F的卡诺图。
解前面已介绍,变量A的覆盖范围是第3、4列,即卡诺图中A取值为1所对应的8个小方格,填入1;是
和
覆盖范围的交集,即变量BC取值为00所对应的4个小方格,填入1;
是
、B和
覆盖范围的交集,即变量ABD取值为010所对应的2个小方格,填入1;
是变量ABCD取值为0000所对应的小方格,填入1;其余小方格填0,即得该函数的卡诺图,如图1-21所示。

图1-20 例1-38卡诺图

图1-21 例1-39卡诺图
(3)用卡诺图合并最小项。如果两个最小项(乘积项)中只有1个变量因子不相同,则称这两个最小项(乘积项)逻辑相邻。逻辑相邻的数学基础是吸收律。具有逻辑相邻性的两个最小项(乘积项)可以消去不相同的变量因子合并为1个乘积项,这个乘积项由它们的相同部分组成。在卡诺图中可以直观地凭借最小项在卡诺图中的几何位置来确定最小项的逻辑相邻性,再将相邻的两个最小项方格(简称“1”格)用1个包围圈圈起来,便可产生1个合并项,合并项由包围圈所覆盖的范围内没有发生变化的变量组成,图1-22给出了两个相邻的最小项合并的情况,并可得出结论①。
结论①:两个相邻的最小项相圈,合为1项,可以消去1个取值不同的变量。

图1-22 2个相邻的最小项合并的情况
根据逻辑相邻的概念,如果进一步将包围圈扩大,把4个相邻的“1”格圈起来可得到更为简单的合并项,如图1-23所示,并可得出结论②。
结论②:4个相邻的最小项相圈,合为1项,可以消去两个取值不同的变量。

图1-23 4个相邻的最小项合并的情况
依此类推,可得出结论③和结论④。
结论③:8个相邻的最小项相圈,合为1项,可以消去3个取值不同的变量。
结论④:1个圈内应当、也只能圈入2n个相邻的最小项方格,合为1项,可以消去n个取值不同的变量。
1个包围圈中所包含的最小项数目越多,即由这些最小项所形成的圈越大,消去的变量也越多,从而所得到的逻辑表达式就越简单。这是卡诺图化简逻辑函数的基本原理。值得注意的是,当1个圈覆盖了卡诺图的全部1格时产生的合并项为1。
(4)卡诺图化简规律及步骤。根据卡诺图合并最小项的原理,利用卡诺图化简逻辑函数按以下3步进行。
① 填图:将逻辑函数用卡诺图形式表示。
② 圈图:在卡诺图上正确加包围圈,合并最小项。结合与或表达式的最简要求,可得到加圈时遵循的2个原则,即圈的数量应尽可能少;圈的形状应尽可能大。
③ 写表达式:将代表每个圈的乘积项相加,即得最简与或式。
加圈时应注意以下5点。
① 首先圈只有1种圈法(即孤立)的小方格,再圈有2种及2种以上圈法的小方格。
② 有的小方格可以被重复圈二次以上,以减少乘积项因子。
③ 每个圈中至少有1个特定的小方格(即未被圈入其他圈中的),以免多余的乘积项出现。
④ 在卡诺图中,可以圈1,也可以圈0。但不能在同一个卡诺图中,同时圈0和1。圈1可得最简与或式,圈0可得最简或与式。
⑤ 每个圈中小方格的个数应为2n个。(n=0,1,2…正整数)。
下面举例说明卡诺图化简方法。
【例1-40】化简函数F(ABCD)=∑m(0,1,4,5,6,10,12,13)
解填卡诺图并加圈如图1-24所示,则可以写出最简与或表达式如下:

图1-24 例1-40卡诺图
值得注意的是:圈“1”格时得到的是与或式,其中在写乘积项时,以原变量表示变量取值1,以反变量表示变量取值0。
【例1-41】化简函数F(ABCD)=∑m(0,2,5,7,8,9,10,13,15)
解填卡诺图如图1-25(a)所示,在卡诺图上加圈如图1-25(b)所示,则可以写出最简与或表达式如下:

图1-25 例1-41卡诺图
还可以在卡诺图上加圈如图1-25(c)所示,则可以写出不同的最简与或表达式如下:从本例可以看到,同一个卡诺图,可能有多种最简的加圈方法,从而得到不同的最简结果。
【例1-42】化简函数F(ABCD)=∏M(1,3,9,10,11,14,15)
解填卡诺图如图1-26所示,在卡诺图上加圈如图1-26所示,则可以写出最简或与表达式如下:

值得注意的是:圈“0”格时得到的是或与式,其中在写相加项时,以原变量表示变量取值0,以反变量表示变量取值1。
【例1-43】化简函数F(ABCD)=∑m(5,6,7,9,10,11,13,14,15)
解1直接圈1,如图1-27(a)所示,可得F的最简与或式:F=AC+AD+BC+BD
解2直接圈0,如图1-27(b)所示,可得F的最简或与式:F=(A+B)(C+D)
解3圈反函数的1,如图1-27(c)所示,可得的最简与或式:
则F的与或非式为:

图1-26 例1-42卡诺图

图1-27 例1-43卡诺图
从本例可以看到,同一个卡诺图,加圈对象不同,可以得到不同形式的最简表达式,如最简与或式,最简或与式以及最简与或非式,从而可以用不同的逻辑电路实现。
(5)具有约束项的逻辑函数卡诺图化简。所谓约束项,是指在1个逻辑函数中,变量的某些取值组合不会出现,或函数在变量的某些取值组合时,输出不确定,可能是1,也可能是0。这样的变量取值组合(最小项)称为约束项,也叫任意项。在真值表和卡诺图中,约束项所对应的函数值用×表示。含有约束项的逻辑函数称为非完全描述逻辑函数。不含约束项的逻辑函数称为完全描述逻辑函数。在逻辑函数化简时,可以根据简化的需要将约束项任意当成0或1处理,并不影响逻辑功能。下面介绍4种约束项的表示方法。
① 约束项的最小项表达式。
【例1-44】化简函数
解∑d(mi)表示所有的约束项,函数卡诺图如图1-28所示。

图1-28 例1-44卡诺图
针对最小项圈1格,如果不利用任意项,即将任意项全部当作0格,如图1-28(a)所示,化简结果为:
如果合理利用任意项,对有利于函数更简的任意项全部当作1格处理,对不利于函数更简的任意项全部当作0格处理,可以帮助将函数画得更简,如图1-28(b)所示,化简结果为:F=A+BD+BC。
② 约束项的最大项表达式。
【例1-45】化简函数F(ABCD)=∏M(0,1,2,3,4)+∏d(10,11,12,13,14,15)
解∏d(Mi)表示所有的约束项,函数卡诺图如图1-29所示。
针对最大项圈0格,如果不利用任意项,即将任意项全部当作1格,如图1-29(a)所示,化简结果为:F=(A+B)(A+C+D)。
如果合理利用任意项,对有利于函数更简的任意项全部当作0格处理,对不利于函数更简的任意项全部当作1格处理,如图1-29(b)所示,化简结果为:F=(A+B)(A+C+D)。
也可按图1-29(c)所示圈图,化简结果为:。

图1-29 例1-45卡诺图
③ 约束项的文字叙述。
【例1-46】设输入ABCD是十进制数x的自然二进制编码,当x≥5时,输出Z为1,画出Z的卡诺图。
解用二进制表示十进制数的编码是BCD码,而输入ABCD所构成的4位二进制码遵循二进制自然规律,所以是8421BCD码,对8421BCD码来说,有的取值组合是不会出现的,如1010,1011,1100,1101,1110,1111这6种,因此这6种取值组合就是约束项,在卡诺图中填“×”,输出Z为1所对应的取值组合为5~9,即0101,0110,0111,1000,1001五种,其余的取值组合的值为0,可得卡诺图如图1-30所示。
以上3个例子中,任意项在卡诺图的位置都相同,但其表述的形式各不相同。
④ 约束项的条件表示法。
【例1-47】化简函数F(ABCD)=∑m(2,5,7,10,13,15);约束条件
解约束条件 ,意味着:在0000,0100,1000,1100这4种取值组合下,最小项
的值均为0,而在正常情况下,任意1个最小项总能找到对应的1种取值组合,其值为1,这就说明0000,0100,1000,1100这4种取值组合在函数中不出现,是约束项。画出函数卡诺图如图1-31所示。

图1-30 例1-46卡诺图

图1-31 例1-47卡诺图
合理利用约束项,对有利于函数更简的任意项全部当作1格处理,对不利于函数更简的任意项全部当作0格处理,化简结果为:。
对于非完全描述逻辑函数的化简,圈1格时,凡是1格都必须加圈,而约束项×则可以作为1格加圈,也可作为0格不加圈,其加圈与否的依据是以使函数最简为原则。
卡诺图法的优点是直观,有固定的方法,如果遵循正确步骤,可以得到最简的结果,缺点是变量增加后,卡诺图会变得更复杂,因此只适合变量数较少的逻辑函数,一般是2~4变量。