第2章 逻辑代数和硬件描述语言基础
本章介绍分析和设计数字逻辑电路的数学方法。首先介绍逻辑代数的基本概念、逻辑函数及其表示方法、基本公式、常用公式和重要定理,然后介绍逻辑函数的简化方法,最后介绍硬件描述语言的基本知识,作为数字逻辑电路的设计基础。
2.1 逻辑代数基本概念
1849年,英国数学家乔治·布尔(George Boole)首先提出了描述客观事物逻辑关系的数学方法——布尔代数。后来,由于布尔代数被广泛地应用于开关电路和数字逻辑电路的分析和设计上,所以也把布尔代数叫做开关代数或逻辑代数。逻辑代数是分析和设计数字逻辑电路的数学工具。
2.1.1 逻辑常量和逻辑变量
逻辑代数最基本的逻辑常量是“0”和“1”,一般用来代表两种逻辑状态,如电平的高和低、电流的有和无、灯的亮和灭、开关的闭合和断开等。在后续的章节中,还会见到其他逻辑常量,如高阻“z”、未知“x”等。其中的未知“x”也只有“0”和“1”两种值选择,只是人们不知道它是“0”还是“1”罢了。
逻辑代数中的逻辑变量是由字母或字母加数字组成的,分为原变量和反变量两种表示形式。原变量的名称上没有加“”(非)号,例如 A、B、C、A1是原变量;反变量的名称上加有“”(非)号,例如是反变量。原变量和反变量都是用来存放逻辑常量的,但原变量中的值与反变量中的值总是相反的,若A中的值是1,则中的值为0,反之亦然。一般把A和之间的关系称为互非或互补。
2.1.2 基本逻辑和复合逻辑
1. 基本逻辑
逻辑代数中的基本逻辑有与、或、非三种。
(1)与逻辑
与逻辑概念可以用图2.1所示的指示灯控制电路来说明,在此电路中,只有当两个开关A、B 同时闭合时,指示灯 P 才会亮。电路的功能表明,只有决定事物结果的全部条件同时具备时,结果才发生。这种因果关系叫做“逻辑与”。
在逻辑代数中,可以用真值表、逻辑函数表达式和逻辑符号来表示各种逻辑关系。若用A、B作为输入变量来表示开关,用符号“1”表示开关闭合,“0”表示开关断开;用P作为输出变量表示灯,用“1”表示灯亮,“0”表示灯灭。则可以列出用0、1表示的与逻辑关系的图表,如表2.1所示,这种图表称为真值表。
图2.1 用于说明与逻辑的电路
表2.1 与逻辑的真值表
在逻辑代数中,可以用运算符号把各种逻辑的输出与输入之间的关系连接起来,形成逻辑函数表达式。与逻辑的运算符号是“ ⋅”,因此逻辑与也称为逻辑乘。A和B进行逻辑乘运算时可以写成:
逻辑乘运算符号在使用中可以省略,因此与逻辑表达式也可以写成:P = AB。
由表2.1中可以看出,与逻辑的运算规则是:
0⋅0 = 0 0⋅1 = 0 1⋅0 = 0 1⋅1 = 1
与逻辑的运算规则是:只有全部输入为1时输出才为1,否则输出为0。
为了方便数字逻辑电路的分析与设计,各种逻辑还可以用逻辑符号来表示。图2.2 列出了目前国家标准规定的与逻辑符号,也列出了常见于国内外一些书刊和资料上的与逻辑符号。其中,国内常用符号来源于原电子工业部部颁标准。
图2.2 与逻辑符号
(2)或逻辑
或逻辑概念可以从图2.3所示的指示灯的控制电路来说明,在此电路中,只要两个开关A、B 中的任何一个闭合,指示灯 P 就会亮。电路的功能表明,在决定事物结果的诸多条件中只要有任何一个满足,结果就会发生,这种因果关系叫做“逻辑或”。
图2.3 用于说明或逻辑的电路
或逻辑的真值表如表2.2所示。或逻辑的运算符号是“ + ”,因此或逻辑也称为逻辑加。A和B进行逻辑加运算时可以写成:
表2.2 或逻辑的真值表
由表2.2可知,或逻辑的运算规则是:
0+0=0 0+1=1 1+0 =1 1+1=1
或逻辑的运算规则是:只有全部输入为0时输出才为0,否则输出为1。
或逻辑的国标符号以及国内外常见逻辑符号如图2.4所示。
图2.4 或逻辑符号
(3)非逻辑
非逻辑概念可以从图2.5所示的指示灯的控制电路来说明,在此电路中,开关A闭合时,指示灯P不会亮;开关断开时,灯反而亮。电路的功能表明,只要条件具备了,结果便不会发生,而条件不具备时,结果一定发生,这种因果关系叫做“逻辑非”。
图2.5 用于说明非逻辑的电路
非逻辑的真值表如表2.3所示。非逻辑的运算符号是“¯”,因此非逻辑也称为逻辑反。对A进行逻辑非运算时可以写成
表2.3 非逻辑的真值表
由表2.3可知,非逻辑的运算规则是:
非逻辑的国标符号和常用逻辑符号如图2.6所示。尽管各种逻辑非的逻辑符号有所不同,但每种符号的输出端都有一个小圆圈,因此小圆圈代表非运算。
图2.6 非逻辑符号
2. 复合逻辑
实际的逻辑问题往往比与、或、非基本逻辑复杂,不过它们都可以用与、或、非组合成的复合逻辑来实现。常用的复合逻辑有与非、或非、与或非、异或、同或等。
(1)与非逻辑
与非逻辑的逻辑符号如图2.7所示,真值表如表2.4所示。由表可见,与非逻辑是将A、B 进行与运算,然后将其结果求反得到的,因此可以把与非运算看作是与运算和非运算的组合,并用逻辑符号上的小圆圈代表非运算。A、B与非运算的表达式为:
图2.7 与非逻辑符号
表2.4 与非逻辑的真值表
与非逻辑运算规则由表2.4给出,即:只有全部输入为1时,输出才为0,否则输出为1。
(2)或非逻辑
或非逻辑的逻辑符号如图2.8所示,真值表如表2.5所示。由表可见,或非逻辑是将A、B 进行或运算,然后将其结果求反得到的,因此可以把或非运算看作是或运算和非运算的组合。A、B或非运算的表达式为:
或非逻辑运算规则由表2.5给出,即:只有全部输入为0时,输出才为1,否则输出为0。
图2.8 或非逻辑符号
表2.5 或非逻辑的真值表
(3)与或非逻辑
与或非逻辑的逻辑符号如图2.9所示。在与或非逻辑中,A、B之间以及C、D之间都是与关系,然后把它们与的结果进行或运算,最后再进行非运算,得到A、B与C、D的与或非运算结果。因此,可以把与或非运算看作是与运算、或运算和非运算的组合。A、B和C、D的与或非运算的表达式为:
图2.9 与或非逻辑符号
(4)异或逻辑
异或逻辑的逻辑符号如图2.10所示,真值表如表2.6所示。异或逻辑的关系是:当A、B不同时,输出P = 1;而A、B相同时,输出P = 0。“⊕”是异或运算符号,异或逻辑也是与、或、非逻辑的组合,其逻辑表达式为:
由表2.6可知,异或运算的规则是:
0⊕0=0 0⊕1=1 1⊕0 =1 1⊕1=0
图2.10 异或逻辑符号
表2.6 异或逻辑的真值表
(5)同或逻辑
同或逻辑的逻辑符号如图2.11所示,真值表如表2.7所示。同或逻辑的关系是:当A、B相同时,输出P = 1;而A、B不同时,输出P = 0。“⊙”是同或运算符号,同或逻辑的逻辑表达式为:
图2.11 同或逻辑符号
表2.7 同或逻辑的真值表
由表2.7可知,同或运算的规则是:
0⊙0 = 1 0⊙1 = 0 1⊙0 = 0 1⊙1 = 1
由异或运算和同或运算结果可以看出,异或运算与同或运算的结果相反,因此同或是异或的反函数,同理异或也是同或的反函数。
2.1.3 逻辑函数的表示方法
从上面讲述的各种逻辑关系中可以看到,如果以逻辑变量作为输入,以运算结果作为输出,那么当输入变量的取值确定之后,输出的取值便随之而定。因此,输出与输入之间乃是一种函数关系,这种函数关系称为逻辑函数,写作:
P = F(A,B,C,…)
其中,P表示输出,A,B,C,…是输入变量。这是一种以表达式形式表示逻辑函数的方法。由于逻辑函数的输入变量和输出的取值只有0和1两种,所以把它称为二值逻辑函数。
在数字电路中,除了逻辑函数表达式以外,还可以用真值表、卡诺图和逻辑图来表示逻辑函数。
1. 真值表和逻辑函数表达式
真值表是用0和1表示输出和输入之间全部关系的表格。一个具体的因果关系一般都可以用真值表来表示,通过真值表还可以推导出这个因果关系的逻辑函数表达式。下面介绍建立因果关系的真值表和推导逻辑函数表达式的方法。
【例2.1】 楼上楼下开关电路如图2.12所示,该电路让用户在楼上或楼下均可控制楼道电灯的亮和灭。
图2.12 楼上楼下开关电路
解:该例输入变量是楼上开关A和楼下开关B,设开关A、B的扳上状态为1,扳下状态为0;输出为灯P,设灯亮状态为1,灯灭状态为0。根据电路不难看出,当A、B两个开关同时扳上(AB = 11)或同时扳下(AB = 00)时,灯亮(P = 1),其他状态下(AB = 01或AB = 10),灯灭(P = 0),由此得出的真值表如表2.8所示。
表2.8 图2.12所示电路的真值表
由真值表可以用最小项法和最大项法推导出相应的逻辑函数表达式。
(1)最小项推导法。最小项推导法是把使输出为1的输入组合写成乘积项的形式,其中取值为1的输入用原变量表示,取值为0的输入用反变量表示,然后把这些乘积项加起来。由表2.8可知,使输出为1的输入组合是AB = 00和AB = 11,它们对应的乘积项分别是A B⋅和AB,把它们加起来后即得到楼上楼下开关电路的逻辑函数表达式:
这种表达式称为标准与或式(积之和式),也称为最小项表达式。
(2)最大项推导法。最大项推导法是把使输出为0的输入组合写成和项的形式,其中取值为0的输入用原变量表示,取值为1的输入用反变量表示,然后把这些和项乘起来。由表2.8可知,使输出为0的输入组合是AB = 01和AB = 10,它们对应的和项分别是(A+B)和(A+B),把它们乘起来后即得到楼上楼下开关电路的逻辑函数表达式:
这种表达式称为标准或与式(和之积式),也称为最大项表达式。
【例2.2】 设计3人表决器电路,列出电路的真值表和表达式。
解:3人表决器电路示意图如图2.13所示,A、B、C是电路的输入,并用“1”表示赞同,用“0”表示反对;输出F表示表决结果,当多数人赞同时,用F = 1表示通过;当少数人赞同或无人赞同时,用F = 0表示否决。表示3人表决器的因果关系的真值表如表2.9所示。
图2.13 表决器电路示意图
表2.9 三人表决器的真值表
由真值表用最小项法推导出的3人表决器电路的逻辑函数表达式为:
由真值表用最大项法推导的3人表决器电路的逻辑函数表达式为:
2. 逻辑函数表达式和逻辑图
任何一个具体的因果关系都可以用逻辑函数表达式来表示,逻辑函数表达式包含与、或、非基本逻辑运算以及复合逻辑运算,而且每一种逻辑运算都有对应的逻辑符号。逻辑图就是用逻辑符号实现逻辑函数表达式中的各种运算而画出的部件图,也称为电路原理图。逻辑图是一种逻辑函数的表示方法,它是数字电路设计时画出的设计图纸,在传统设计中,依靠逻辑图来搭建实际的硬件电路,在电子设计自动化中,可以直接把原理图转换为硬件设计结果。
由逻辑函数表达式画出对应的逻辑图时,应遵守“先括号,然后乘,最后加”的运算优先次序。即先用逻辑符号(与逻辑或者或逻辑)表示括弧内的逻辑运算,其次用与逻辑符号表示与运算,最后用或逻辑符号表示或运算。图2.14 给出了逻辑函数 F1 = A + BC 和F2 = (A + B)(C + D)对应的逻辑图。
图2.14 函数F1和F2对应的逻辑图
对于F1 = A + BC来说,BC运算次序优先,就先用一个与逻辑表示B与C运算,A + BC运算在后,因此再用一个或逻辑把BC相与的结果与A相加,得到F1 = A + BC的结果。
而在F2 = (A + B)(C + D)中,(A + B)和(C + D)运算在先,因此先用两个或逻辑表示(A + B)和(C + D)运算,(A + B)(C + D)运算在后,因此再用一个与逻辑把(A + B)和(C + D)相或的结果相乘,得到F2 = (A + B)(C + D)的结果。
由图2.14对应的逻辑图可以看出,优先级越高的运算对应的逻辑符号越靠近输入端,优先级越低的运算越靠近输出端。
2.1.4 逻辑函数的相等
假设,F (A1,A2,…An)是变量A1,A2,…,An的逻辑函数,G (A1,A2,…,An)是变量A1,A2,…,An的另一逻辑函数,如果对应于A1,A2,…,An的任一组状态组合,F和G的值都相同,则称F和G是等值的,或者说F和G相等,记作F = G。
换而言之,如果F = G,那么它们就应该有相同的真值表。反过来,如果F和G的真值表相同,则 F = G。因此要证明两个逻辑函数相等,只要把它们的真值表列出来,如果真值表相同,则两个函数就相等。
【例2.3】 设函数F(A,B,C) ( )=A B+C,G(A,B,C)=AB+AC,试证明F = G。
解:为了证明F = G,先根据F和G的函数表达式,列出它们的真值表,如表2.10所示。真值表是将输入变量的各种取值组合代入逻辑函数表达式,进行逻辑运算后得到的。例如,将ABC = 000带入函数F = A(B + C)进行逻辑运算,得出的结果是0并填入真值表中;依此类推,可得出各种输入取值组合的运算结果,得到该逻辑函数的真值表。
由表2.10可知,对应于A、B、C的任何一组取值组合,F和G的值均相同,所以F = G,即F = A(B + C) = AB + AC。在“相等”的意义下,F = A(B + C)和G = AB + AC是同一逻辑的两种不同的表达式。F和G的逻辑图如图2.15所示。虽然逻辑图不同,但它们的逻辑功能是相同的。
图2.15 函数F和G的逻辑图
表2.10 例2.3的真值表