
2.1 逻辑代数的基本概念
英国数学家George Boole于1854年提出了将人的逻辑思维规律和推理过程归结为一种数学运算的代数系统,即布尔代数(Boolean Algebra)。1938年,贝尔实验室研究员Claude E. Shannon将布尔代数的一些基本前提和定理应用于继电器电路的分析与描述上,提出了开关代数的概念。随着数字电子技术的发展,机械触点开关逐步被无触点电子开关所取代,现在已经很少使用“开关代数”这个概念了。为了与数字系统逻辑设计相适应,人们现在更多地采用“逻辑代数”这个概念。逻辑代数是布尔代数的特例,它是采用二值逻辑运算的基本数学工具,主要研究数字电路输入和输出之间的因果关系,即输入和输出之间的逻辑关系。因此,逻辑代数是布尔代数应用于数字系统与数字电路的产物,是数字系统与数字电路分析和设计的数学理论基础工具,被广泛应用于计算机、通信和自动化等领域。
2.1.1 逻辑代数的定义
逻辑代数是用代数的形式来研究逻辑问题的数学工具。其变量可以用字符A、B、C、D等表示,并被称为逻辑变量。逻辑变量只有两种取值,一般用“0”和“1”来表示,而这里的“0”和“1”仅仅是一种符号的代表,没有数量的含义,也没有大小和正负的含义,只是用来表示研究问题的两种可能性,如电平的高与低、电流的有与无、命题的真与假、事物的是与非、开关的通与断。
逻辑代数L是一个封闭的代数系统,它由一个逻辑变量集K、常量0和1,以及“与”“或”和“非”3种基本运算构成,记为L={K,+,·,-,0,1}。这个代数系统满足下列公理。
公理1 交换律
对于任意的逻辑变量A、B,有
A+B=B+A A·B=B·A
公理2 结合律
对于任意的逻辑变量A、B、C,有
(A+B)+C=A+(B+C)
(A·B)·C=(A·B)·C
公理3 分配律
对于任意的逻辑变量A、B、C,有
A+(B·C)=(A+B)·(A+C)
A·(B+C)=A·B+A·C
公理4 0-1律
对于任意的逻辑变量A,有:
A+0=A A·1=A
A+1=1 A·0=0
公理5 互补律
对于任意的逻辑变量A,存在唯一的,使得

2.1.2 逻辑代数的基本运算
在数字系统与数字电路中,开关的通与断、电平的高与低、信号的有与无等两种稳定的物理状态都可以用“0”和“1”这两个逻辑值来表示,但是对于一个复杂数字系统,仅用逻辑变量的取值来反映单个开关元件的两种状态是不够的,还必须反映这个复杂数字系统中各开关元件之间的联系,为了描述这些联系,逻辑代数中定义了“与”“或”和“非”3种基本运算。
1.与运算
在逻辑问题中,某个事件受若干个条件影响,若所有的条件都成立,则该事件才能成立,这样的逻辑关系称为与逻辑。
例如,图2-1所示的电路中,灯F由开关A和开关B串联控制,开关A和开关B的状态组合有4种,这4种不同的状态组合与灯F的亮灭之间的关系如表2-1所示,由表2-1可见,只有当开关A和开关B同时闭合时,灯F才亮,否则,灯F灭。因此,灯F与开关A和开关B之间的关系就形成了与逻辑关系。

图2-1 串联开关电路
表2-1 串联开关电路功能表

在逻辑代数中,与逻辑关系用与运算来描述,与运算又称逻辑乘,其运算符号为“·”或“∧”。图2-1所示的电路可以用与运算表示为
F=A·B (或者F=A∧B)
与运算符“·”也可以省略,即F=A·B=AB。
为了用逻辑代数来分析图2-1所示的电路,假设“0”表示开关断开,“1”表示开关闭合,“0”表示灯灭,“1”表示灯亮,这样电路状态关系表2-1可变换成如表2-2所示的真值表。所谓真值表,是指把逻辑变量的所有可能的取值组成及其对应的结果构成一个二维表格,这张表称为真值表。
表2-2 与运算真值表

由表2-2可得出与运算的运算法则为
0·0=0 0·1=0
1·0=0 1·1=1
在数字系统与电路中,实现与运算的逻辑电路称为“与门”,其逻辑符号如表2-3所示。本书采用国家标准符号。
表2-3 与门逻辑符号

2.或运算
在逻辑问题中,某个事件受若干个条件影响,只要其中一个或一个以上条件成立,则该事件便可成立,这样的逻辑关系称为或逻辑。
例如,图2-2所示的电路中,灯F由开关A和开关B并联控制,开关A和开关B的状态组合有4种,这4种不同的状态组合与灯F的亮灭之间的关系如表2-4所示,由表2-4可见,只要开关A和开关B中有一个闭合或两个闭合时,灯F便亮,否则,灯F灭。这样,灯F与开关A和开关B之间的关系就形成了或逻辑关系。

图2-2 并联开关电路
表2-4 并联开关电路功能表

在逻辑代数中,或逻辑关系用或运算来描述,或运算又称逻辑加,其运算符号为“+”或“∨”。图2-2所示电路可以用或运算表示为
F=A+B (或者F=A∨B)
为了用逻辑代数来分析图2-2所示的电路,假设“0”表示开关断开,“1”表示开关闭合,“0”表示灯灭,“1”表示灯亮,这样电路状态关系表2-4可变换成如表2-5所示的真值表。因此,或运算可以用表2-5描述。
表2-5 或运算真值表

由表2-5可得出或运算的运算法则为
0+0=0 0+1=1
1+0=1 1+1=1
在数字系统与电路中,实现或运算的逻辑电路称为“或门”,其逻辑符号如表2-6所示。本书采用国家标准符号。
表2-6 或门逻辑符号

3.非运算
在逻辑问题中,某个事件的成立取决于对条件的否定,这样的逻辑关系称为非逻辑。
例如,图2-3所示的电路中,灯F和开关A并联,开关A两种不同的状态与灯F的亮灭之间的关系如表2-7所示。由表2-7可见,开关A闭合,则灯F灭,否则,灯F亮。这样,灯F与开关A之间的关系就形成了非逻辑关系。

图2-3 开关与灯并联电路
表2-7 开关与灯并联电路功能表

在逻辑代数中,非逻辑关系用非运算来描述,非运算又称逻辑反,其运算符号为“-”。图2-3所示的电路可以用非运算表示为

为了用逻辑代数来分析图2-3所示的电路,假设“0”表示开关断开,“1”表示开关闭合,“0”表示灯灭,“1”表示灯亮,这样电路状态关系表2-7可变换成如表2-8所示的真值表。
由表2-8可得出或运算的运算法则为

在数字系统与电路中,实现非运算的逻辑电路称为“非门”,其逻辑符号为如表2-9所示。本书采用国家标准符号。
表2-8 非运算真值表

表2-9 非门逻辑符号

2.1.3 逻辑代数的复合运算
在实际电路中,利用与门、或门和非门之间的不同组合可构成复合门电路,完成复合逻辑运算。常见的复合门电路有与非门、或非门、与或非门、异或门和同或门。
1.与非逻辑
与逻辑和非逻辑的复合逻辑称为与非逻辑,它可以看成与逻辑后面加了一个非逻辑,实现与非逻辑的电路称为与非门。其表达式为

与非运算的真值表如表2-10所示,与非门的逻辑符号如表2-11所示。
表2-10 与非运算真值表

表2-11 与非门逻辑符号

2.或非逻辑
或逻辑和非逻辑的复合逻辑称为或非逻辑,它可以看成或逻辑后面加了一个非逻辑,实现或非逻辑的电路称为或非门。其表达式为

或非运算的真值表如表2-12所示,或非门的逻辑符号如表2-13所示。
表2-12 或非运算真值表

表2-13 或非门逻辑符号

3.与或非逻辑
与或非逻辑是3种基本逻辑(与、或、非)的组合,也可以看成是与逻辑和或非逻辑的组合。其表达式为

与或非运算的真值表如表2-14所示,与或非门的逻辑符号如表2-15所示。
表2-14 与或非运算真值表

表2-15 与或门逻辑符号

4.异或逻辑
异或逻辑是指当两个输入逻辑变量取值不同时输出为1,相同时输出为0。实现异或逻辑的电路称为异或门。其表达式为

异或运算的真值表如表2-16所示,异或门的逻辑符号如表2-17所示。
表2-16 异或运算真值表

表2-17 异或门逻辑符号

5.同或逻辑
同或逻辑是指当两个输入逻辑变量取值相同时输出为1,不同时输出为0,偶数个变量的同或逻辑和异或逻辑互为反运算。实现同或逻辑的电路称为同或门。其表达式为

同或运算的真值表如表2-18所示,同或门的逻辑符号如表2-19所示。
表2-18 同或运算真值表

表2-19 同或门逻辑符号

2.1.4 逻辑函数的表示法和逻辑函数的关系
1.逻辑函数的定义
逻辑函数中函数的定义与普通代数中函数的定义极为相似,同时逻辑函数具有其自身的特点。
1)逻辑变量和逻辑函数的取值只有0和1两种可能。
2)逻辑函数和逻辑变量之间的关系是由“与”、“或”和“非”3种基本运算决定的。
从数字电路的角度看,逻辑函数可以定义为设某一逻辑电路的输入变量为A1,A2,…,An,输出变量为F,当A1,A2,…,An的取值确定后,F的值就被唯一确定下来,则称F是A1,A2,…,An的逻辑函数,记为
F=f(A1,A2,…,An)
2.逻辑函数的关系
与普通代数一样,逻辑函数也存在相等的问题。
如果函数F1和F2都是n个变量的逻辑函数即
F1=f1(A1,A2,…,An)
F2=f2(A1,A2,…,An)
若对于这n个逻辑变量的2n种组合中的任意一组取值,F1和F2都相等,则称函数F1和F2相等,记为F1=F2。
判断两个逻辑函数是否相等,通常有两种方法。一种方法是列出逻辑变量的所有可能的取值组合,并按逻辑运算计算出各种取值组合下两个函数的对应值,然后进行比较,判断两个逻辑函数是否相等。另一种方法是用逻辑代数的公理、定理、公式和规则等进行数学证明。
3.逻辑函数的表示法
逻辑函数的表示方法有很多种,如逻辑表达式、逻辑电路图、真值表、卡诺图、波形图和硬件描述语言等。本节重点讨论逻辑表达式、逻辑电路图、真值表和波形图,卡诺图和硬件描述语言将在后面的章节介绍。
(1)逻辑表达式
逻辑表达式是逻辑变量和“与”“或”“非”3种运算符所构成的式子。将逻辑函数输入和输出之间的关系写成逻辑表达式,就得到了逻辑函数的逻辑表达式。例如,逻辑函数
F=f(A,B,C)=AB+C
是一个由A、B、C这3个变量进行逻辑运算所构成的逻辑表达式。
(2)逻辑电路图
将逻辑函数的逻辑表达式中各变量之间的与、或、非等逻辑关系用逻辑门电路的图形符号表示出来,就得到了逻辑函数的逻辑电路图。
逻辑函数F=f(A,B,C)=AB+C的逻辑电路图如图2-4所示。

图2-4 逻辑函数F=f(A,B,C)=AB+C的逻辑电路图
(3)真值表
前面曾经提到过真值表,即将n个输入变量所有2n个取值组合所对应的输出值计算出来,列成表格,就得到了逻辑函数的真值表。
逻辑函数F=f(A,B,C)=AB+C的真值表如表2-20所示。
表2-20 逻辑函数F=f(A,B,C)=AB+C的真值表

(4)波形图
用逻辑电平的高、低变化来动态表示逻辑函数的输入变量与输出变量之间的关系,按时间顺序依次排列出来,就得到了逻辑函数的波形图,也称为时序图。由于波形图是一种动态图形语言,非常直观,在数字系统分析和测试中可以利用计算机仿真工具和逻辑分析仪等来分析逻辑函数。
逻辑函数F=f(A,B,C)=AB+C的波形图如图2-5所示。

图2-5 逻辑函数F=f(A,B,C)=AB+C的波形图