1.4 逻辑代数中的逻辑运算
数字计算机可以进行各种数值运算(如加、减、乘、除等),数字计算机还可以下棋、翻译、看病等。所有这些功能都说明计算机可以代替人的一部分思维能力。计算机具有这种思维能力的关键在于它具有逻辑判断的能力。所谓“逻辑”,简单地说,就是研究前提(或条件)和结论之间的关系,或者说是因果的规律性。所谓“判断”就是肯定地或是否定地回答一个事物是否具有某种属性。计算机所以具有思维能力,就是因为它在一定的条件下,能体现出一种因果判断关系。
任何矛盾的现象,不管多么复杂,总可以分解成一系列互相对立的简单矛盾。人们判断事物,一般是从简单的判据入手,逐步推理而深入。简单的判据总是二值的,即不是“是”就是“非”,不存在似是而非的情况。这种二值的简单判据称为逻辑命题(在逻辑代数中称为逻辑变量),可以用字母A,B,C,…表示,并规定用符号0和1分别表示逻辑命题的两种相反的结果,若“1”表示“肯定”,则“0”就表示“否定”。当然,也可以相反,即“1”表示“错误”,则“0”就表示“正确”。显然,这里的0和1已经不是数的概念了。
电路上的因果判断关系,体现在数字电路的输入与输出信号之间具有一定的逻辑关系。若把输入信号表示为前提条件,则输出信号就表示所得的结论。我们把这种能根据一定的逻辑关系做出因果判断的数字电路称为“逻辑电路”。逻辑电路的输入和输出通常用电平的高低,或是脉冲的有无来表示,它们也都具有二值性。若用符号1表示有脉冲或高电平,则0就表示无脉冲或低电平。
为了便于分析和设计逻辑电路,通常用逻辑函数来表示逻辑电路输入与输出信号之间的逻辑关系,逻辑函数的自变量也称为输入变量,因变量也称为输出变量。这样,逻辑电路输入输出信号之间的逻辑关系,通过逻辑函数的自变量和因变量之间的关系得以描述。逻辑电路和逻辑函数是相互对应的。逻辑电路可以用逻辑函数来描述,而逻辑函数也可以用逻辑电路来实现。这样,通过对逻辑函数的分析运算,就可以达到分析和设计逻辑电路的目的。
研究逻辑电路的工具是逻辑代数。它的基本概念是由英国数学家乔治·布尔(George Boole)在1847年提出的,故也称为布尔代数。布尔代数是一种较为简单的数学工具,利用布尔代数可以把逻辑电路的输入和输出之间的关系用代数方程(布尔表达式)来描述。
逻辑代数和普通代数也有相同的地方,例如,也用字母A,B,C,…以及x,y等表示变量,但变量的含义及取值范围是不同的。逻辑代数中的变量不表示数值,只表示两种对立的状态,如脉冲的有无,开关的接通和断开,命题的正确和错误等,因此,这些变量的取值只能是0或1,这种变量称为逻辑变量。此外,逻辑代数中对变量的运算和普通代数也有不同的地方。在逻辑代数中只有三种基本的逻辑运算,即“与”、“或”、“非”,以及在基本逻辑运算基础上构成的复合逻辑运算,下面分别予以介绍。
1.4.1 基本逻辑运算
1.“与”逻辑运算
在日常生活中应用“与”逻辑关系的例子很多。例如,一个门上锁着一把明锁和一把暗锁,人们判断“门开”这件事是否成立,就要看前提条件——两把锁的钥匙是否具备。显然,只有同时具备两把锁的钥匙,门才能打开;缺少一把钥匙,门也打不开。这里两把钥匙“具备、不具备”和门“开、不开”之间的因果关系,即为“与”逻辑关系。
又如,如图1.2所示,开关A、B相串联控制灯F。显然,只有当开关A和B均合上时,灯F才亮;两个开关中只要有一个断开,灯F不亮。这里开关A、B的“闭合、断开”和灯F“亮、不亮”之间的因果关系也是“与”逻辑关系。“与”的含义在此例中就是开关A、B“闭合”这两个条件同时具备的意思。
通过以上举例分析,可以用文字来叙述“与”逻辑的一般定义,即:只有决定一件事的条件都具备时,这件事才成立;如果有一个(或者一个以上)条件不具备,则这件事不成立。这样的因果关系称为“与”逻辑关系。
“与”逻辑运算也叫逻辑乘。两变量A、B的逻辑乘用代数表达式可表示为
F=A·B (1.6)
式(1.6)称为“与”逻辑函数表达式(简称逻辑函数式,或称逻辑式、函数式)。式中“A·B”读为“A与B”或“A乘B”。“·”表示“与”运算符号(有些文献中用符号“∧”或“∩”表示),它仅表示“与”的逻辑功能,无数量相乘之意,书写时可把“·”省掉。
图1.2中每个开关的状态只有两种:闭合或断开。灯的状态也有两种:亮或灭。两个开关所有可能的组合状态和灯的状态之间的因果关系如表1.6所示。若规定开关合上为1,开关断开为0,灯亮为1,灯灭为0,则可将表1.6转换成表1.7的形式。通常把表1.7的形式称为真值表。所谓真值表,它是用表格形式全面、直观地描述了所有输入变量(前提条件)取值的各种可能组合和对应的输出变量(结果)值之间的逻辑关系的重要工具。
对n个输入变量的情况,其取值的各种可能组合数为2n,体现在真值表上则有2n行,每行的排列顺序可按二进制数的正常顺序排列。
由表1.7的真值表可知“与”逻辑运算的规则为
0·0=0 0·1=0 1·0=0 1·1=1 (1.7)
式(1.7)这组逻辑乘的运算规则是从逻辑推理而来的,故称为公理,它是逻辑代数的基础。
在数字电路中,实现“与”逻辑关系的逻辑电路称为“与”门。“与”门有多个输入端,一个输出端,其逻辑符号如图1.3所示。
图1.2 “与”逻辑电路
表1.6 “与”逻辑电路状态表
表1.7 “与”逻辑真值表
图1.3 “与”门逻辑符号
“与”门的逻辑功能可以概括为“全1出1,有0出0”。即:只有全部输入均为1时,输出才为1;输入有0时,输出为0。
2.“或”逻辑运算
“或”逻辑关系在日常生活中应用的例子很多。例如,一个门上串起来锁两把锁。人们判断“门开”这件事是否成立,就要看前提条件——两把锁的钥匙是否具备。显然,只要一把锁的钥匙具备,门即可打开;只有两把锁的钥匙都不具备时,门才打不开。这里两把钥匙“具备、不具备”和门“开、不开”之间的因果关系即为“或”逻辑关系。
又如,如图1.4所示,开关A、B并联控制灯F。显然,只要有一个开关合上,灯F就亮;只有两个开关都断开时,灯F才不亮。这里开关A、B的“闭合、断开”和灯F“亮、不亮”之间的因果关系也是“或”逻辑关系。
通过以上举例分析,可以用文字来叙述“或”逻辑的一般定义,即:在决定一件事的各种条件中,只要有一个(或者一个以上)条件具备时,这件事就成立;只有所有的条件都不具备时,这件事才不成立。这样的因果关系称为“或”逻辑关系。
图1.4 “或”逻辑电路
表1.8 “或”逻辑电路状态表
表1.9 “或”逻辑真值表
图1.5 “或”门 逻辑符号
“或”逻辑运算也叫逻辑加。两个变量A、B的逻辑加用代数表达式可表示为:
F=A+B (1.8)
式(1.8)中,“A+B”读为“A或B”或“A加B”。“+”表示“或”运算符号(有些文献中用符号“∨”或“∪”表示),它仅表示“或”的逻辑功能,无数量累加之意。
图1.4中两个开关所有可能的组合状态和灯的状态之间的因果关系如表1.8所示。与其对应的真值表如表1.9所示。
由表1.6的真值表可知,“或”逻辑运算的规则为
0+0=0 0+1=1 1+0=1 1+1=1 (1.9)
式(1.9)这组逻辑加的运算规则,是又一组公理,也是逻辑代数的基础。需要特别注意的是,这里1+1=1,是表示逻辑加,不是数量的加。从逻辑判断来看,说明对“或”逻辑,具备多个前提条件与具备一个前提条件,所得结论是一样的。
在数字电路中,实现“或”逻辑关系的逻辑电路称为“或”门。“或”门有多个输入端,一个输出端,其逻辑符号如图1.5所示。
“或”门的逻辑功能可以概括为“有1出1,全0出0”。
3.“非”逻辑运算
“非”逻辑电路如图1.6所示。当开关A合上时,灯F不亮;而当开关A断开时,则灯F亮。这里开关A的“闭合、断开”与灯F的“亮、不亮”之间的因果关系,即为“非”逻辑关系。
用文字叙述“非”逻辑的一般定义,即假定事件F成立与否同条件A的具备与否有关。若A具备,则F不成立;若A不具备,则F成立。F和A之间的这种因果关系称为“非”逻辑关系。
“非”逻辑运算也叫逻辑否定。用代数表达式可表示为:
式(1.10)中A读为“A非”,变量A上面的短横线表示“非”运算符号。A叫做原变量,A叫做反变量,A和A是一个变量的两种形式。
图1.6的“非”逻辑电路的真值表,如表1.10所示。由表1.10可知,“非”逻辑运算的规则为
在数字电路中,实现“非”逻辑关系的逻辑电路称为“非”门(又称反相器)。“非”门只有一个输入端,一个输出端,其逻辑符号如图1.7所示。
以上介绍的逻辑代数中的三个基本逻辑运算,即“与”、“或”、“非”,也是人们在进行逻辑推理时常用的三种基本逻辑关系。和这三种基本逻辑关系相对应的门电路,也是数字电路中最基本的逻辑电路。和这三种门电路相对应的代数表达式,也是逻辑代数中最简单的逻辑函数式。
图1.6 “非”逻辑电路
图1.7 “非”门逻辑符号
表1.10 “非”逻辑真值表
1.4.2 复合逻辑运算
在实际使用中,并不只是采用“与”门、“或”门、“非”门这三种基本单元电路,而是更广泛地采用“与非”门、“或非”门、“与或非”门、“异或”门及“同或”门等多种复合门电路,它们的逻辑关系可以由“与”、“或”、“非”三种基本逻辑关系推导出,故称为复合逻辑运算,下面分别予以介绍。
1.“与非”逻辑
“与非”逻辑是由“与”逻辑和“非”逻辑组合而成的。其逻辑函数式为:
“与非”逻辑的真值表如表1.11所示,其逻辑功能可概括为“有0出1,全1出0”。
实现“与非”逻辑的逻辑电路称为“与非”门,其逻辑符号如图1.8所示。和“与”门逻辑符号相比。“与非”门输出端上多了一个小圆圈,其含义就是“非”。
表1.11 “与非”逻辑真值表
图1.8 “与非”门逻辑符号
表1.12 “或非”逻辑真值表
图1.9 “或非”门逻辑符号
2.“或非”逻辑
“或非”逻辑是由“或”逻辑和“非”逻辑组合而成的。其逻辑函数式为:
“或非”逻辑的真值表如表1.12所示,其逻辑功能可概括为“全0出1,有1出0”。
实现“或非”逻辑的逻辑电路称为“或非”门,其逻辑符号如图1.9所示。
3.“与或非”逻辑
“与或非”逻辑是“与”、“或”、“非”三种逻辑的组合。其逻辑函数式为:
“与或非”逻辑的运算次序是:组内先“与”,然后组间相“或”,最后再“非”。其逻辑功能可概括为:“每组有0出1,某组全1出0”。由此不难导出其真值表。
实现“与或非”逻辑的逻辑电路称为“与或非”门,其逻辑符号如图1.10所示。
图1.10 “与或非”门逻辑符号
4.“异或”逻辑
两个变量的异或逻辑函数式为:
式中,“⊕”表示异或运算符号。
“异或”逻辑的真值表如表1.13所示。其逻辑功能可概括为“相异出1,相同出0”,这也是“异或”的含义所在。
实现“异或”逻辑的逻辑电路称为异或门,其逻辑符号如图1.11(a)所示。
表1.13 “异或”逻辑真值表
图1.11 “异或”门和“同或”门逻辑符号
表1.14 “同或”逻辑真值表
5.“同或”逻辑
两个变量的“同或”逻辑函数式为:
式中,“⊙”表示“同或”运算符号,其逻辑符号如图1.11(b)所示。
“同或”逻辑的真值表如表1.14所示。其逻辑功能可概括为“相同出1,相异出0”,故又称为“一致”逻辑或“符合”逻辑。
从“异或”逻辑和“同或”逻辑的真值表可以看出,两者互为反函数,即
在上述的逻辑运算中,运算符的优先级是:①圆括号,②非,③与,④或。换句话说,圆括号内的表达式必须在所有其他的运算前计算,下一个优先的运算是取反,然后是与,最后是或。
为便于查阅,将门的几种表示法列于表1.15中,该表中,原部标为过去我国使用的电路符号标准,这些符号在当前出版的许多书籍中还能见到。国外流行的电路符号常见于外文书籍中,在我国引进的一些计算机辅助电路分析和设计软件中,常使用这些符号。
表1.15 门电路的几种表示法
注:表中的国标符号引用ANSI/IEEE Std.91—1984;国外流行符号引用补充ANSI/IEEE Std.91a—1991
1.4.3 正逻辑与负逻辑
除了过渡期间外,为了能演示二值逻辑的各种运算(功能),各种逻辑门的输入及输出变量(信号)也必然是二值的。也就是说,它们不是用电压V的高低来表示,就是用电流I的大小来说明。实际上,用电压表征逻辑变量的居多数,通常用较高电平VH代表逻辑1,较低电平VL代表逻辑0,这和人们的习惯比较符合,便于测试和观察。至于高、低电平是正是负,具体为何值,这要看所使用的集成电路品种和所加电源电压而定。
通常,将上述高电平VH(简写H)代表逻辑1,低电平VL(简写L)代表逻辑0的约定,简称正逻辑。前面所介绍的与、或、与非及或非等基本门电路的命名,都是在正逻辑约定下的结果。
也可以用相反的约定,即电路的高电平H代表逻辑0,低电平L代表逻辑1,称为负逻辑约定,简称负逻辑。
现在以一个具体的门电路为例,分析它在不同逻辑约定下的命名有什么不同。如表1.16所示,其中表中(a)是用输入、输出电平列出的真值表;而表中(b)则是正逻辑表示的真值表,显然它应叫做与非门;表中(c)是用负逻辑表示的真值表,很明显它变成了或非门。
由此可见,正、负逻辑是可以相互转换的。从正逻辑转化到负逻辑就是在一个门的输入和输出端将逻辑1变为逻辑0,将逻辑0变为逻辑1,反之亦然。由于这种运算产生了函数的对偶式,因此,所有终端的极性变化就导致了函数对偶式的采用。这种转化的结果使所有的与运算变为或运算,或运算变为与运算。即正逻辑的与、或、与非及或非门,在负逻辑约定的场合,便可分别用做或、与、或非及与非门,反之亦然。同样,正逻辑的异或门和同或门,分别可转换成负逻辑的同或门和异或门,反之亦然。
在实际的逻辑电路及系统中,如不附加说明,通常都采用正逻辑约定;但也有许多数字设备,其中正、负逻辑往往是混用的,因为这样往往有利于设计的优化和性能的改进。为此,在国际符号中,在需要强调逻辑低电平有效的场合,在逻辑单元框有关的输入、输出处,可标注空心箭头符号,如图1.12所示。图中上一排,是标在输入端的记号,下一排是标在输出端的记号。其中图1.12(a)的小圆圈,表示外部的逻辑0相当于单元框内部的逻辑1,这在前面已经介绍过了;图1.12(b)用空心箭头记号标注,强调外部的逻辑低电平,相应于内部的逻辑1;图1.12(c)就是用这两种记号分别在输入端或输出端时非门的四种表示法,其中上图都表示,下图都表示,它不是说明输入、输出的逻辑状态相反,就是说明输入、输出逻辑电平不同。小圆圈在输入端,强调的是输入逻辑0,经反相成逻辑1,作为输出信号;反之,若小圆圈在输出端,则强调的是输入逻辑1,经反相成逻辑0,作为输出信号。同理,空心箭头记号在输入端,强调的是输入低电平为有效电平,经反相成高电平,作为输出的有效电平;反之,若空心箭头记号在输出端,则强调的是输入高电平为有效电平,经反相成低电平,作为输出的有效电平。这样的标注方法,在设计或检测逻辑系统时,会带来方便。
表1.16 正、负逻辑转换举例
图1.12 外部逻辑的状态及电平记号
从以上叙述还可以看出,在讨论逻辑单元框内的功能时,只有逻辑状态的概念,而且总是采用正逻辑约定;只有在涉及单元框之外的输入、输出线上的逻辑信号时,才会有逻辑状态和逻辑电平两种标注法,也才有采用负逻辑概念的可能性。