2.3.1逻辑函数的标准形式
逻辑函数表达式有与-或表达式和或-与表达式两种基本形式。
所谓与-或表达式是指一个逻辑表达式中包含着若干个与项,每个与项中有一个或多个以原变量或反变量形式出现的变量名,所有这些与项相或就表示了一个逻辑函数。如,、、等均为与项,用这些与项就可以构成逻辑函数的与-或表达式。即:
这个表达式有3个与项,有时我们也将与称之为“乘积”项。于是,上述表达式可看成是由3个“乘积”项通过求“和”形成的,这样的表达式又称为“积之和”表达式。
所谓或-与表达式是指一个逻辑表达式中包含着若干个或项,每个或项中有任意个以原变量或反变量形式出现的变量名,所有这些或项相与就表示一个逻辑函数。如,、、等均为或项,用这些或项就可以构成或-与表达式。即:
这个表达式中有3个或项,有时我们也将或项称之为“和”项。于是,上述表达式可看成是由3个“和”项通过求“积”形成的,这样的表达式又称为“和之积”表达式。
任意的一个逻辑表达式,例如:
这种表示形式既不是与-或表达式,也不是或-与表达式,但可以通过“配项”然后应用分配律转换成与-或表达式或者或-与表达式。
一、最小项标准式
最小项标准式也称为与-或标准式。
对于一个任意的逻辑函数表达式,例如:
(2.3.1)
其表达式并不是唯一的。根据上面介绍的分配律以及基本公式等概念,可以将表达式写成与-或表达式:
(2.3.2)
利用公式,(2.3.2)式又可以变换为:
(2.3.3)
式(2.3.3)所表示的与-或表达式称为最小项标准式,(2.3.3)式中的与项称为三个变量A、B、C的最小项。
可以看出,所谓的最小项是一种与项,这种与项包含了所有的输入变量。每个输入变量或以原变量或以反变量的形式出现在与项中,且在每个与项中仅出现一次。
三个输入变量为A、B、C最多可组成八个最小项:、、、、、、、。变量的其它不同的组合,如:、、等都不满足最小项的条件,所以均不是最小项。
为了叙述和书写方便,通常用表示最小项。如果最小项(即:与项)中的原变量记为1,反变量记为0,且当变量顺序确定后,1和0按顺序排列成一个二进数,则与这二进数相对应的十进数就是最小项的下标i。表2.3.1列出了A、B、C三个变量函数可能存在的全部最小项。
表2.3.1 三个变量函数中的最小项和最大项 |
||||||
变量取值组合 |
对应最小项及编号 |
对应最大项及编号 |
||||
A |
B |
C |
最小项 |
编号 |
最大项 |
编号 |
0 |
0 |
0 |
|
|
|
|
0 |
0 |
1 |
|
|
|
|
0 |
1 |
0 |
|
|
|
|
0 |
1 |
1 |
|
|
|
|
1 |
0 |
0 |
|
|
|
|
1 |
0 |
1 |
|
|
|
|
1 |
1 |
0 |
|
|
|
|
1 |
1 |
1 |
|
|
|
|
因此,(2.3.1)式表示的逻辑函数可写成:
(2.3.4)
若借数学中常用的符号“”表示累计的逻辑“加”,则逻辑函数可写成如下形式:
(2.3.5)
其中,符号“”表示各项求或,后面括号内的数字表示函数的各最小项。等式左边括号内的字母表所有的变量名和它的排列顺序,变量的顺序是很重要的,一旦确定后,就不能随意改变,否则会造成表达式的错误。
上述例子说明,一个任意的逻辑函数均可表示为若干最小项之“和”。逻辑函数的与-或标准式就是函数的最小项标准式。
当逻辑函数用最小项标准式表示时,就能方便地列出逻辑函数及其反函数的真值表,上述例子的真值表如表2.3.2所示。
表2.3.2 函数及其反函数的真值表 |
||||
A |
B |
C |
Y |
|
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
由表2.3.2所示真值表很容易写出其反函数的表达式
可以看出,对于A、B、C三个变量来说,可以形成个最小项。并且,若这些最小项不包含在的与-或标准式中,则必然包含在的与-或标准式中。这个结论可以推广到个输入变量的情况,个输入变量有个输入组合,即有个最小项。对于个输入变量的逻辑函数Y,根据逻辑代数基本定律,有
(2.3.6)
而:
(2.3.7)
所以有:
(2.3.8)
上式表明:个输入变量所有最小项的“和”恒等于1
二、最大项标准式
最大项标准式也称为或-与标准式。
对于一个任意的逻辑函数表达式,例如:
(2.3.9)
其表达式并不是唯一的。根据上面介绍的分配律以及基本公式等概念,可以将表达式写成或-与表达式:
(2.3.10)
利用公式,(2.3.10)式又可改写为:
(2.3.11)
式(2.3.11)所表示的或-与表达式称为最大项标准式,(2.3.11)式中的或项称为三个变量A、B、C的最大项。
可以看出,所谓的最大项是一种或项,这种或项包含了所有的输入变量。每个输入变量或以原变量或以反变量的形式出现在或项中,且在每个或项中仅出现一次。
三个输入变量为A、B、C最多可组成八个最大项:,,,,,,。变量的其它不同的组合,如:,,等都不满足最大项的条件,所以均不是最大项。
为了叙述和书写方便,通常用表示最大项。如果最大项(即:或项)中的原变量记为0,反变量记为1,且当变量顺序确定后,1和0按顺序排列成一个二进数,则与这二进数相对应的十进数就是最大项的下标i。表2.3.1列出了A、B、C三个变量函数可能存在的全部最大项。
因此,(2.3.11)式表示的逻辑函数可写成:
(2.3.12)
若借数学中常用的符号“”表示累计的逻辑“乘”,则(2.3.12)式可写成如下形式:
(2.3.13)
其中,符号“”表示各项求与,后面括号内的数字表示函数的各最大项。等式左边括号内的字母表所有的变量名和它的排列顺序,变量的顺序是很重要的,一旦确定后,就不能随意改变,否则会造成表达式的错误。
上述例子说明,一个任意的逻辑函数均可表示为若干最大项之“乘积”。逻辑函数的或-与标准式就是函数的最大项标准式。
当逻辑函数用最大项标准式表示时,对于组成函数的所有最大项,只要有一项最大项为0,则该函数的值就为0,否则就为1。这样,我们就能方便地列出逻辑函数及其反函数的真值表,(2.3.13)式所表示的逻辑函数的真值表如表2.3.3所示。
表2.3.3 函数及其反函数的真值表 |
||||
A |
B |
C |
Y |
|
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
由表2.3.3所示真值表很容易写出其反函数的表达式
可以看出,对于A、B、C三个变量来说,可以形成个最大项。并且,若这些最大项不包含在的或-与标准式中,则必然包含在的或-与标准式中。
上述结论可以推广到个输入变量的情况,个输入变量有个最大项。对于个输入变量的逻辑函数Y,根据逻辑代数基本定律,有
(2.3.14)
而:
(2.3.15)
所以有:
(2.3.16)
上式表明:个输入变量所有最大项的“积”恒等于0
根据上述对最小项和最大项的讨论,在同一个逻辑问题中,下标相同的最小项和最大项之间存在着互补的关系。即有:
或者 (2.3.17)
三、逻辑函数表达式的转换
任意一个逻辑函数,其表达式的形式可以多种多样,但是各种形式的表达式是可以转换的。并且,不论其表达式处于何种形式,总可以转换成最小项标准式和最大项标准式的形式。求一个逻辑函数表达式的标准形式有两种方法,一种是代数转换法,另一种是真值表转换法。
代数转换法
所谓代数转换法,就是利用逻辑代数的公式、定律和规则,将逻辑函数表达式从一种形式变换为另一种形式。下面通过例子说明之。
例2.3.1 将逻辑函数转换成最小项标准式
解:第一步:将逻辑函数表达式变换成与-或表达式。
第二步:利用,将与-或表达式中不是最小项的与项展开成最小项,写出逻辑函数的最小项标准式。
(2.3.18)
由例题可归纳求逻辑函数最小项标准式的步骤:
①将逻辑函数表达式变换成一般的与-或表达式。
②利用,将与-或表达式中不是最小项的与项展开成最小项,写出逻辑函数的最小项标准式。
例2.3.2 将例2.3.1中的逻辑函数化成最大项标准式。
解:第一步:将逻辑函数表达式变换成或-与表达式。
第二步:利用,将或-与表达式中不是最大项的或项展开成最大项,写出逻辑函数的最大项标准式。
(2.3.19)
由例题可归纳求逻辑函数最大项标准式的步骤:
①将逻辑函数表达式变换成一般的或-与表达式。
②利用,将或-与表达式中不是最大项的或项展开成最大项,写出逻辑函数的最大项标准式。
根据上述两个例题的结果(2.3.18)式 和(2.3.19)式,对于同一个逻辑函数最小项标准式中的编号与最大项标准式中的编号具有“互补”关系。因此,只要求出了逻辑函数两种标准式中的任意一种,另一种标准式可按其编号的“互补”规律得出。
上述逻辑函数的真值表如表2.3.4所示。由真值表可知,逻辑函数Y的值为1对应的最小项出现在最小项标准式中,逻辑函数Y的值为0对应的最大项出现在最大项标准式中。
表2.3.4 例2.3.1和例2.3.2逻辑函数的真值表 |
|||||
A |
B |
C |
Y |
|
|
0 |
0 |
0 |
0 |
|
M0 |
0 |
0 |
1 |
0 |
|
M1 |
0 |
1 |
0 |
1 |
|
|
0 |
1 |
1 |
1 |
|
|
1 |
0 |
0 |
0 |
|
M4 |
1 |
0 |
1 |
0 |
|
M5 |
1 |
1 |
0 |
1 |
|
|
1 |
1 |
1 |
1 |
|
|
由此可见,利用逻辑函数的真值表可方便地写出逻辑函数的两种标准式。
真值表转换法
真值表转换法就是首先作出逻辑函数的真值表,利用真值表与最小项和最大项的关系,直接写出逻辑函数的两种标准式。当代数转换法非常复杂时,真值表转换法就显得十分方便。
例2.3.3 将逻辑函数表达式表示成最小项标准式和最大项标准式。
解:首先作出该逻辑函数的真值表如表2.3.5所示。
表2.3.5 例2.3.3逻辑函数的真值表 |
|||
A |
B |
C |
Y |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
由真值表2.3.5可知使逻辑函数Y的值为1的情况有四种取值组合,这些组合对应的最小项必定出现最小项标准式中。所以逻辑函数表达式的两种标准式如下:
由于逻辑函数的真值表与逻辑函数的两种标准式存在一一对应的关系,而任何一个逻辑函数的真值表是唯一的,所以任何一个逻辑函数的两种标准式也是唯一的,这样就给我们分析和研究逻辑函数带来了很大的方便。
2.3.2 逻辑函数的代数化简法
一、逻辑函数的最简形式
同一个逻辑函数,其表达形式多种多样,但是表达式越简单,它所表示的逻辑关系也就越明确,实际应用中便能用越少的电子器件来实现它。因此对于比较繁复的逻辑表达式,往往要通过化简的方法来找出其最简的表达式。如下列两个逻辑函数表达式
列出它们的真值表后发现,其真值表完全相同,根据逻辑函数相等的定义,它们是同一个逻辑函数。但是很明显,比简单得多。
同一个逻辑函数,其最简表达式的形式也是多种多样,如最简的与-或表达式;最简的或-与表达式;最简的与非-与非表达式;最简的或非-或非表达式;最简的与-或-非表达式等等。在众多的最简表达式中大都可以通过最简的与-或表达式或者最简的或-与表达式转换得出,因此,一般只需研究最简的与-或表达式和最简的或-与表达式。
一个最简的与-或表达式应满足下述两个条件:
(1)表达式中所含与项的数目应该最少。
(2)在满足上述条件的前提下,每一个与项中所含变量的数目应该最少。
同样,最简的或-与表达式也必须满足两个条件:
(1)表达式中所含或项的数目应该最少。
(2)在满足上述条件的前提下,每一个或项中所含变量的数目应该最少。
在数字逻辑电路中,逻辑函数表达式满足上述最简条件的前提下,设计的逻辑电路结构最简单从而使电路最经济。
由于习惯上人们把最简与-或表达式认为是逻辑函数的最简表达式,所以本书若无特别申明时,最简表达式就是指最简与-或表达式。
二、逻辑函数的代数化简法
所谓代数化简法就是利用逻辑代数中的公律、定理、基本公式等将一个逻辑函数表达式化简为最简形式,即消去逻辑函数中多余的与项和每个与项中多余的变量因子。代数化简法没有固定的步骤,只要熟练地运用逻辑代数中常用的公式、定律和规则,便能求出最简表达式。常用的方法有:合并项法、吸收法、消去法及配项法。
1.合并项法
利用公式将两项合并为一项,同时消去这一对互补因子。其中既可以是变量,也可以是复杂的逻辑式。
例 2.3.4 化简
解法1:
解法2:
⊙
2.吸收法
常利用公式消去多余项。其中既可以是变量,也可以是复杂的逻辑式。
例 2.3.5 化简
解:
例 2.3.6 化简
解:
3.消去法
常利用公式消去多余因子,其中既可以是变量,也可以是复杂的逻辑式。
例2.3.7 化简
解:
4.配项法
根据基本公式可以在逻辑函数表达式中重复写入某一项,或将某一乘积项乘以,从而将这一项展开为两项,再与其它的项重新进行合并,消去更多的项和变量,最终得到最简表达式。
例2.3.8 化简
解:
例2.3.9 化简
解:
对于化简较为复杂的逻辑函数表达式时,往往需要综合运用上述几种化简方法,才能得到最后的化简结果。
例2.3.10 化简
解:
用代数化简法求最简的或-与表达式时,可以直接运用前述介绍化简与-或表达式中提出的各种方法的对偶公式和定律来进行;也可以采用两次对偶法,首先对用或-与表达式表示的函数Y求出对偶式,得到与-或表达式,按与-或表达式的化简方法求出的最简表达式,然后,对再次求对偶,即可得到Y的最简或-与表达式。
代数化简法的优点是不受变量数目的约束,当对公式、定律和规则十分熟练时化简就比较方便。其缺点是没有一定的规律和固定的步骤,技巧性很强,而且在很多情况下难以判断化简结果是否最简。所以这种方法有很大的局限性。
2.3.3 卡诺图化简法
卡诺图是上世纪五十年代美国工程师卡诺(M.Karnaugh)提出的。它逻辑关系的一种图表示法,形象且直观,并能说逻辑函数中的许多概念。卡诺图是数字逻辑设计中常用的一种数工具。下面将介绍卡诺图的构成、性质以及应用卡诺图化简逻辑函数的方法。
一、卡诺图
卡诺图实际上是真值表的一种变形,它与真值表具有一一对应的关系。真值表中的一行对应于卡诺图中的一个点(亦称一个单元),卡诺图的图形结构具有一定的规律,直观图形可方便地进行逻辑运算。
例如,某逻辑函数的真值表表示形式如表2.3.6所示。用卡诺图表示则如图2.3.1所示。可以看出真值表中的一行对应于卡诺图的一个方格单元,方格单元内所填的值为该行逻辑函数的值。
表2.3.6 某逻辑函数的真值表 |
|||
A |
B |
C |
Y |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
将真值表变换为卡诺图一般可以分两步进行
1、将输入变量分为两组。如果是三变量,则分为一组,为另一组;如果是四变量,则为一组,为另一组。每组变量的取值组合必须按照循环码的规律排序。所谓循环码,指的是相邻两组变量的取值组合中,只能有一个变量的取值不同。如两变量输入时,取值组合有四种,列真值表时可以按照00,01,10,11的顺序排列,在卡诺图中不能按照这种顺序,因为它不符合循环码相邻两组之间只有一个变量取值不同的规则,强调相邻性还包括头尾两组。因此按照循环码的规则正确排列两变量的取值组合时,应为00→01→11→10。这样把输入变量分两组并按循环码的规则排列后,将真值表转化成方格图的形式。
2、从方格图中可以看出,有多少个变量的取值组合,便对应有多少个方格单元,且每个方格单元实际上就相当于真值表中的一个行,对应于逻辑函数的一个最小项,因此,为方便逻辑运算可以在每个方格单元中填入对应的最小项的代号。如图2.3.2与图2.3.3所示为三变量和四变量卡诺图的形式。
分析图2.3.2和图2.3.3中最小项分布规律可以看出,几何位置相邻的最小项在逻辑上也具有相邻性,任何两个相邻的最小项仅有一个变量是不同,包括任意一行或一列头尾的最小项也仅有一个变量不同。因此,可以把卡诺图的上下、左右看成一个闭合图形。
在变量数大于、等于五以后,仅仅用几何图形在两维空间的相邻性来表示逻辑相邻性已经不够了。例如图2.3.4所示的五变量最小项卡诺图中,除了几何位置相邻的最小具有相邻性以外,以图中双竖线为轴线左右对称位置上的两个最小项也具有逻辑上的对称性。
二、用卡诺图表示逻辑函数
如果逻辑函数表达式是最小项之和的标准式,则只要在卡诺图上找出那些同给定逻辑函数包含的最小项相对应方格,然后在这些方格单元中填入1,其余方格单元中填入0,便得到了该逻辑函数的卡诺图。为了叙述方便,我们把填入1的方格单元叫1方格,填入0的方格单元叫0方格。
例如三变量逻辑函数
编号为3、5、6、7的最小项出现在逻辑函数表达式中,卡诺图中相应编号的方格单元填入1,其余方格单元中填入0,便得到该逻辑函数的卡诺图,如图2.3.5所示。
例2.3.11 用卡诺图表示逻辑函数
解:首先将化为最小项之和的形式
然后,画出四变量卡诺图,在编号为5、7、10、11、12、13、14、15的方格内填1,其余方格填0,得该逻辑函数的卡诺图,如图2.3.6所示。
三、卡诺图的性质
由于卡诺图中变量的取值组合都是按照循环码的规则进行排列,每两个相邻的组合只有一个变量取值不同,因此卡诺图中具有逻辑相邻性的最小项可以进行合并。根据公式,当一个变量分别以原变量与反变量的形式出现在两个与项中,且这两个与项的其余部分相同,那么这两个与项可以合并为一项。
相邻的两个最小项,可以合并为一项并消去一个变量。合并后只剩下公共因子。
图2.3.7所示为两个相邻项进行合并的例子。图2.3.7(a)中,两个相邻项为 ,只有变量在这两个相邻项中分别以原变量和反变量的形式出现,剩余因子相同,故有,即消去合并项中发生了0、1变化的变量,而将没有发生变化的变量保留下来。同理可得图(b)和图(c)的结果。
相邻四个最小项,可以合并为一项并消去两个变量。合并后只包含公共因子。
图2.3.8所示为四个相邻项进行合并的例子。必须注意的是,四个1方格进行合并时,首尾相邻的1方格以及四角相邻的1方格不要遗漏。如图 2.3.9所示。
相邻八个最小项,可以合并为一项并消去三个变量。合并后只包含公共因子。
图 2.3.10 列出了八个相邻项进行合并的例子。同必须注意不要遗漏首尾相邻的1方格。
根据上述最小项的性质,可以归纳出合并最小项的一般规则:在一个输入变量的卡诺图中,若一个合并圈中存在个具有相邻性的最小项,则这些相邻的最小项可以合并为一项,并消去个变量,只留下由()个没有发生0、1变化的变量所构成的乘积项。
四、利用卡诺图化简逻辑函数
为了更好的理解利用卡诺图化简逻辑函数的方法,首先简要的介绍几个基本概念:
(1)主要项:卡诺图中,包含个相邻1方格的合并圈且合并圈不能再扩大(即再扩大将把0方格也包含进去)所得到的合并乘积项,称为主要项,或本原蕴含项。如图2.3.11所示的,即为主要项。
(2)必要项:如果一个主要项圈中至少有一个“特定”的1方格没有被其他的主要项圈覆盖,那么这个主要项圈所圈得的合并乘积项就称为必要项或实质本原蕴含项。如图2.3.11(a) 所示的和图2.3.11(b)所示的即为必要项。实际上,最终化简结果中所含的乘积项个数即为必要项的个数。
(3)多余项:如果一个主要项圈中的1方格全部被其它的几个主要项圈包含,那么这个主要项圈所圈得的合并乘积项就称为多余项。如图 2.3.12(b)所示的即为多余项。
利用卡诺图化简逻辑函数的步骤如下:
第一步:将逻辑函数变换为最小项之和的形式
第二步:画出表示该逻辑函数的卡诺图
第三步:找出可以合并的最小项并画出合并圈
第四步:写出最简的与-或表达式
例2.3.12 化简逻辑函数
解:(1)由于逻辑函数已给出最小项之和的标准形式,故第一步可省略。
(2)画出表示该逻辑函数的卡诺图,如图2.3.13(a)所示。
(3)找出可以合并的最小项(1方格),并画出合并圈,如图2.3.13(b) 所示。
(4)合并最小项,并把每个合并圈对应的与项加起来,得出最简与-或表达式。
可以看出,在利用卡诺图化简逻辑函数时,关键在于画合并圈。合并圈画得不同,逻辑函数的表达式也不相同。因此画合并圈时应注意以下几点:
①首先要找出孤立的1方格并画圈。
②合并圈的范围越大越好,但必须包含(i=0,1,2,3…)个1方格,这样能消去的变量就越多。
③合并圈的个数越少越好,因为合并圈的个数与化简结果中乘积项的个数相对应,圈数越少意味着与-或表达式中与项越少。
④每个合并圈中至少要包含一个其它合并圈中没有包含的1方格,这样才能保证这个合并圈不是多余的。
⑤卡诺图中所有的1方格至少要被圈一次,不能有漏画的1方格。
这样,把每个合并圈相对应的与项“加”起来,就得到最简的与-或表达式。
同理的方法,只要合并圈改为针对卡诺图中的0方格进行,找出可合并的最大项,就可得到逻辑函数的最简或-与表达式。
合并最大项的规律与合并最小项的规律基本一致。不同之处在于,合并最大项时必须找出0方格的相邻性。每个合并圈可由(i=0,1,2,3…)个0方格构成,每个合并圈对应于一个或项,该或项由圈内取值不变的变量相或来构成,其中取值为0的对应原变量,取值为1的对应反变量。然后将每个合并圈对应的或项进行相与,便得到最简的或-与表达式。
例2.3.13 求函数的最简或-与表达式
解:
(1)逻辑函数已给出最小项之和的标准形式。
(2)画出表示该逻辑函数的卡诺图,如图2.3.14 (a)所示。
(3)找出可以合并的0方格(最大项),并画出合并圈,如图2.3.14 (b)所示
(4)合并最大项,把每个合并圈对应的或项相乘,得到最简或-与表达式
五、具有无关项的逻辑函数及其化简
(1)约束项、任意项及无关项
在某些实际应用中,逻辑函数的输入变量取值不是任意的,如用三个输入逻辑变量分别表示一台电动机的正转、反转、停止,表示电机正转,表示电机反转,表示电机停止。而实际应用中,电机只能执行其中的一个命令,不可能允许两个以上的变量同时为1。故的取值只能为001,010,100当中的一种,不可能是000,011,101,110,111中的任何一种,也就是说对这三个输入变量的取值加上了限制条件。这种对输入变量所加的限制就称为约束。通常可以用约束条件来描述约束的内容。如上述所举实例,其约束条件可以表示为
或写作
同时把这些恒等于0的最小项称为约束项。
任意项是指逻辑函数在输入变量的某些取值组合时其输出值不确定,可能为1,可能为0,但是对电路的功能并不影响,若用最小项表示这些取值组合,那么这些最小项便称为任意项。
一般来说,任意项与约束项又统称为无关项,在卡诺图中用×表示,化简逻辑函数时既可以认为它为1,也可以认为它为0。
(2)无关项在化简逻辑函数中的应用
在化简具有无关项的逻辑函数时,无关项作为0方格还是作为1方格处理,前提是有利于逻辑函数的化简及得到最简结果。为了达到这个目的,应使加入的无关项能与逻辑函数表达式中尽可能多的最小项具有逻辑相邻性,同时使最小项合并圈的数目最少,而合并圈中包含的相邻最小项的数目最多。
例2.3.14 化简
解:这是一个具有无关项的逻辑函数表达式,其中表示所包含的无关项,在卡诺图中可用×表示,则表示该逻辑函数表达式的卡诺图如图2.3.15(a) 所示。
按照无关项的使用原则,其值为1,还是为0,应看是否有利于逻辑函数的化简。如不使用这些无关项,即将它们作为0格处理,,所得化简结果为
若合理使用这些无关项,即将有利于化简的无关项作1格处理,如,并与逻辑相邻的1格构成足够大的合并圈,而不利于化简的无关项如,作0格处理,如图2.3.15(b) 所示,可得化简结果为
由此可见,无关项的应用应以有利于化简为前提。
2.3.4逻辑函数的列表化简法
列表化简法又称为奎恩-麦克洛斯基法,简称Q-M法。从前面介绍的卡诺图化简法中可以看出,卡诺图化简的一个重要步骤是能从原逻辑函数表达式中较快的画出表示该逻辑函数的卡诺图。但是对于多变量逻辑函数的卡诺图来说,不仅难画,且其中相邻最小项也不容易较快的找出,因为多变量逻辑函数的卡诺图中,具有逻辑相邻性的最小项有时在几何位置上并不相邻,不易观察寻找,且多变量逻辑函数的卡诺图化简也较为繁杂,因此在计算机技术飞速发展的过程中,有着严格算法的Q-M法在任意多变量逻辑函数的化简中脱颖而出。Q-M法虽然计算过程比较复杂,但它可以将函数化简的问题编成程序,从而借助于计算机的高速运算处理能力很快实现,故Q-M法适合任意多变量的逻辑函数化简。
这种化简方法和卡诺图化简法的基本思想大致相同。它也是通过找出函数Y的全部主要项、实质主要项以及最简主要项集来求得最简表达式。所不同的是,在列表化简法中上述结果都是通过约定形式的表格,按照一定规则求得的。
用列表法化简逻辑函数一般可以概括为以下四个步骤:
第一步:将函数表示成“最小项之和”形式,并用二进制码表示每一个最小项。
第二步:找出函数的全部主要项。
寻找函数全部主要项的方法是先将个变量函数中的相邻最小项合并,消去相异的一个变量,得到个变量的与项;再将相邻的个变量的与项合并,消去相异的变量,得到个变量的与项;…。依此类推,直到不能再合并为止。所得到的全部不能再合并的与项(包括不能合并的最小项),即所要求的全部主要项。
第三步:选出函数的实质主要项。
第四步:选择主要项,使之能够包含给定函数的全部最小项,从而建立函数的最简与-或式。
以上各个步骤均是通过表格进行的,下面通过一个例子说明。
例2.3.15 用列表法化简逻辑函数
解:
第一步:用二进制代码表示函数中的每一个最小项,如表2.3.7所示
第二步:求函数的全部主要项。
考虑到相邻最小项的二进制码中的1个数只能相差1,因此,将表2.3.7中的最小项按二进制编码中1的个数进行分组,且按1的个数的递增顺序排列在表2.3.8(Ⅰ)栏中。这样,可以合并的最小项便只能处于相邻的两组内。因此,可将 (Ⅰ) 栏中相邻两组的二进制码逐个进行比较,找出那些只有一个变量不同的最小项合并,消去不同变量,组成个变量的与项列于表2.3.8的(Ⅱ) 栏中。例如,首先将0组的最小项与1组的进行比较、合并,即消去相异的A变量,这里用“-”表示消去的变量,然后将合并后的与项列入表2.3.8的(Ⅱ)栏中。由于该与项是由和合并产生的,故在(Ⅰ)栏中和的右边打上“√”标记,表示它们已经包含在(Ⅱ)栏的与项中了,并在(Ⅱ)栏中的第二列指出相应与项是由哪几个最小项合并产生的。第0组的最小项与第1组的最小项比较完后,顺序比较第0组与第2,3,4组,发现没有可以合并的最小项,然后接着比较第1组和第2组的最小项。即将
表 2.3.7 函数的部分真值表 |
||
项号 |
A B C D |
Y |
0 |
0000 |
1 |
5 |
0101 |
1 |
7 |
0111 |
1 |
8 |
1000 |
1 |
9 |
1101 |
1 |
10 |
1010 |
1 |
11 |
1011 |
1 |
14 |
1110 |
1 |
15 |
1111 |
1 |
与,分别进行比较,显然与不能合并,因为它们之间有多个变量不同,而与可以合并消去变量D,与可以合并消去变量C,将合并后得到的与项同样列入(Ⅱ)栏中。依次类推,将(Ⅰ)栏中全部最小项逐一进行比较、合并,得到表的(Ⅱ)栏。在(Ⅱ)栏中的“与”项均由个变量组成,此例(Ⅱ)栏的“与”项由三个变量组成。
按上述同样的方法,再对表2.3.8中的全部与项进行比较、合并,可形成表的第(Ⅲ)栏。如第(Ⅱ)栏中的(8,9)和(10,11),(8,10)和(9,11)可以合并为“10――”。由于第(Ⅲ)栏的与项不再相邻,故合并到此结束。
表2.3.8 中凡是没有打“√”标记的与项,就是不能再合并的乘积项,即该函数的全部主要项,用表示,该函数的全部主要项为
第三步:选取函数的实质主要项。
通过建立实质主要项表,可以选出函数的全部实质主要项。
函数的实质主要项是指包含实质最小项的主要项。而实质最小项又是指仅仅属于一个主要项的最小项。本例的函数实质主要项产生表如表2.3.9 所示。表中第一行为Y的全部最小项,第一列为上一步求得的全部主要项。实质主要项可按下述步骤求得:
1、逐行标上各主要项覆盖最小项的情况。例如,表中主要项可覆盖最小项和,故在这一行与上述最小项相应列的交叉处打上“”标记,其它各行依此类推。
2、逐列检查标有“”的情况,凡只有一个“”号的列的相应最小项即为实质最小项,在“”外面打上一个圈(即“”)。例如,表中最小项各列均只有一个“”,故都在“”号外加上圈。
表2.3.8 主要项的产生表 |
|||||||||||
(Ⅰ)最小项 |
(Ⅱ)个变量的“与”项 |
(Ⅲ)个变量的“与”项 |
|||||||||
组号 |
|
|
|
组号 |
|
|
|
组号 |
|
|
|
0 |
0 |
0000 |
√ |
0 |
0,8 |
-000 |
|
0 |
8,9,10,11 |
10―― |
|
1 |
8 |
1000 |
√ |
1 |
8,9 |
100- |
√ |
1 |
10,11,14,15 |
1-1- |
|
2 |
5 |
0101 |
√ |
8,10 |
10-0 |
√ |
|
|
|
|
|
9 |
1001 |
√ |
2 |
5,7 |
01-1 |
|
|
|
|
|
|
10 |
1010 |
√ |
9,11 |
10-1 |
√ |
|
|
|
|
||
3 |
7 |
0111 |
√ |
10,11 |
101- |
√ |
|
|
|
|
|
11 |
1011 |
√ |
10,14 |
1-10 |
√ |
|
|
|
|
||
14 |
1110 |
√ |
3 |
7,15 |
-111 |
|
|
|
|
|
|
4 | |||||||||||
15 |
1111 |
√ |
11,15 |
1-11 |
√ |
|
|
|
|
||
|
|
|
|
14,15 |
111- |
√ |
|
|
|
|
3、 找出包含“”号的各行,这些行对应的主要项即为实质主要项,在这些实质主要项右上角加上“*”标记。例如,表中的和均为实质主要项。
4、 在表的最后一行(覆盖情况一栏)中,标上实质主要项覆盖最小项的情况。凡能被实质主要项覆盖的最小项,在最后一行的该列上打上“√”标记,供下一步选择主要项,使之能够包含给定函数的全部最小项,从而建立函数的最简与-或式。
第四步:选择主要项,使之能够包含给定函数的全部最小项,从而建立函数的最简与-或式。
函数的最简与-或式必须覆盖全部最小项,而实质主要项是首先必须选用的主要项。因为如果不选实质主要项,就找不到其它主要项来包含那些实质最小项。本例从表2.3.9 的覆盖情况一行可知,选取实质主要项和后即可包含函数的全部最小项。因此,该函数化简的最终结果为
当给定函数的实质主要项集不能覆盖该函数的全部最小项时,还需进一步从剩余主要项集中找出所需主要项,以构成函数的最小主要项集,这样才能使得最终化简结果既能包含全部最小项,同时所需乘积项又最少,即获得最简的与或式。
进一步找出剩余所需主要项的途径是首先建立一个“所需主要项产生表”,该表是将“实质主要项产生表”中的实质主要项及其所覆盖的最小项去掉后形成的。然后按照一定的方法从“所需主要项产生表”中找出所需主要项。通常采用的方法是行列消去法,其规则如下:
行消去规则:对于所需主要项产生表中的任意主要项和,若行中的“”号完全包含在行中,即,则可消去行。这是因为选取了主要项后不仅可以覆盖主要项所能覆盖的最小项,而且还可覆盖其它最小项。
表2.3.9 实质主要项产生表 |
|||||||||
|
|
||||||||
0 |
5 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
|
|
|
|
|
|
|
× |
× |
|
× |
|
|
|
|
× |
|
× |
× |
|
|
|
|
|
× |
|
|
|
|
|
× |
|
|
|
× |
|
|
|
|
|
|
|
|
|
|
× |
|
|
|
|
|
覆盖情况 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
列消去规则:对于所需主要项产生表中的任意最小项和,若列中的“”号完全包含在列中,即,则可消去列。这是因为选取了覆盖的主要项后一定能覆盖,反之则不一定。
按照上述规则消去多余的行和多余的列,可再次选出实质主要项。该规则可重复使用,直至找出能覆盖函数全部最小项的最小主要项集为止。下面举例说明选取剩余主要项的方法。
例 2.3.16 已知函数的实质主要项产生表如表2.3.10所示,求出该函数的剩余主要项并写出函数最简与或式。
表2.3.11 剩余主要项产生表 |
|||||
|
|
||||
0 |
3 |
8 |
10 |
11 |
|
|
|
|
|
|
|
|
|
|
|
× |
× |
|
|
× |
|
|
× |
|
|
× |
|
|
|
|
|
|
× |
× |
|
|
× |
|
× |
|
|
|
× |
|
|
|
|
表 2.3.10 函数实质主要项产生表 |
|||||||||
|
|
||||||||
0 |
3 |
4 |
5 |
6 |
7 |
8 |
10 |
11 |
|
|
|
|
× |
|
|
× |
|
|
|
|
|
|
|
|
|
|
|
× |
× |
|
|
× |
|
|
|
|
|
|
× |
|
|
× |
|
|
|
× |
|
|
|
|
|
|
|
|
|
|
× |
× |
|
|
× |
|
|
|
|
|
× |
|
|
|
× |
|
× |
|
|
|
|
|
|
覆盖情况 |
|
|
√ |
√ |
√ |
√ |
|
|
|
解:由表2.3.10可知为实质主要项,可覆盖最小项。在选取作为函数Y的一个与项后,还剩下最小项未被覆盖,因此必须从剩余的主要项 中选取所需的主要项。为此,从表2.3.10中先消去和它所覆盖的最小项,得到如表2.3.11所示的剩余主要项产生表。
在表2.3.11中,行中的“×”完全包含在行中,行中的“×”完全包含在 行中,根据行消去规则,可消去和两行。得到表2.3.12,它由剩余的主要项 和最小项 组成。从表2.3.12中还可看出,列中的“×”完全包含在 列中,列中的“×” 完全包含在列中,根据列消去规则,可消去和所对应的列,得到表2.3.13.
从表2.3.13中可见,和所对应的列均只有一个“×”,故 和是必须选取的实质主要项。通常称为二次实质主要项,并标以“**”。选取,作为实质主要项后,还剩下最小项未被覆盖,因此可任选或来覆盖。故最终所得函数Y的最简与-或表达式为:
或
表2.3.13消去多余行及多余列后的剩余生要项表 |
|||
|
|
||
0 |
3 |
10 |
|
|
|
|
× |
|
|
|
|
|
|
|
× |
|
|
|
|
表2.3.12消去多余行的剩余主要项表 |
|||||
|
|
||||
0 |
3 |
8 |
10 |
11 |
|
|
|
|
|
× |
× |
|
|
× |
|
|
× |
|
|
|
× |
× |
|
|
× |
|
× |
|
|