且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数

更新时间:2022-09-01 22:13:27

3.4 基本逻辑函数

定值、传递、取反及使能是最基本的组合逻辑函数。前两种运算,即定值和传递不用任何布尔运算符,它们只用变量和常数表示。因此不能使用逻辑门来实现这些运算。对一个变量取反只涉及一个逻辑门,而一个变量的使能则涉及一个或两个逻辑门。
3.4.1 定值、传递和取反
如果1位函数只有单个变量X,则存在4个不同的1位函数。表3-1给出了这些函数的真值表。表的第二列和最后一列指定函数的值分别为常数0或常数1,即实现定值(value fixing)。在第三列,函数就是输入变量X,即从输入到输出传递(transferring)X。在第四列,函数为X,即将输入X取反(inverting)成为输出X。
《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数

实现这4个函数的方式如图3-7所示。定值可以通过在输出端F连接常数0或常数1来实现,如图3-7a所示。图3-7b给出了逻辑示意图中的另一种表示方法。对于正逻辑,习惯用电气接地符号来表示常数0,用电源电压符号来表示常数1,后者一般用VCC或VDD标记。传递用连接X和F的一条简单的线来表示,如图3-7c所示。最后,取反用一个反相器来表示,输入为X,输出为F=X,如图3-7d所示。

《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数

3.4.2 多位函数
前面定义的函数可以按位应用于多位数的场合。我们可以认为这些多位函数是1位函数的向量。例如,假设有4个函数F3、F2、F1、F0,它们组成一个4位函数F。我们可以定义F3是4个函数的最高位,F0是4个函数的最低位,组成向量F=(F3,F2,F1,F0)。假设F由4个基本函数F3=0、F2=1、F1=A、F0=A组成,可以将F写成向量(0,1,A,A)。当A=0时,F=(0,1,0,1);而当A=1时,F=(0,1,1,0)。这个多位函数可以写成F(3:0)或者更简单地写成F,其实现方式如图3-8a所示。为了使图形更加简洁,我们经常使用一条加粗的线,并用一条斜杠穿过这条线来表示一组相关的多条线,斜杠旁边的数字表示这些线的条数,如图3-8b所示。为了使0、1、X和X与F中对应的位数相连接,我们将F拆分成4条线,每条线表示为F的一位。而且,在传送过程中,我们只希望能使用F中位的一个子集,例如F2和F1,那么图3-8c表示F中位的方法就可以用来解决这个问题了。图3-8d说明了使用F3、F1和F0这种更为复杂的情况。注意,由于F3、F1和F0没有完全在一起,所以我们就不能用范围标识F(3:0)来标注这个子向量,只能用两个子向量F(3)和F(1:0)的组合来标注,用下标标注时可以写成3,1:0。在不同的原理图绘制工具或HDL工具中,向量和子向量的实际表示方法存在很大差异,图3-8给出的只是其中的一种方法。对于某个特定的工具,具体表示方法需要参考此工具的使用文档。

《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数

定值、传递和取反在逻辑设计中有许多应用。定值就是将一个或多个变量用常量1和0来取代。定值可以是永久的,也可以是临时的。永久性定值不可以改变,而临时性定值可通过某些途径来改变,其方法与普通逻辑电路中采用的有所不同。永久性与临时性的定值主要应用于可编程逻辑器件中。在可编程器件中,任何能够实现的逻辑函数都是通过设定一组值来实现的,如例3-4所示。
例3-4 用定值控制演讲厅的照明
问题:设计一个控制演讲厅灯光照明的装置,要求控制开关是可编程的。两个开关有三种不同的工作方式。开关P在演讲厅前面的墩墙上,开关R在演讲厅的后门附近。H(房间照明)为1时,照明开启;H为0时,照明关闭。房间照明控制方式可以编程为以下三种中的任意一种,M0、M1或M2定义如下。
M0:开关P或开关R控制房间灯光的开和关。
M1:只有开关P控制房间灯光的开和关。
M2:只有开关R控制房间灯光的开和关。
解决方法:H(P,R)的真值表作为可编程模式M0、M1和M2的函数形式,如表3-2所示。M1和M2的函数形式都是直截了当的,但M0的函数形式却需要多加考虑。这个函数必须使开关P和开关R都能改变输出结果。奇偶函数具有这样的特性,两个输入的奇偶函数就是异或。因此表3-2中的M0用该函数来表示。我们的目的就是要找到这样一个电路来实现这三种编程模式,并产生输出H(P,R)。
《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数

用定值方式实现该电路的一种形式如图3-9a所示。在本章的后面,这个标准电路被称作4选1多路复用器。图3-9b给出了该电路紧凑形式的真值表。对应于I0到I3,P和R是输入变量,I0到I3的值可以为0或1,这取决于每一种模式所希望的函数形式。注意,H事实上是一个6变量的函数,可以给出一个完全展开的、有64行7列的真值表。但是,将I0到I3放到输出列中,我们可以缩减真值表的大小。真值表中输出H的方程为:
H(P, R, I0, I1, I2, I3)=PRI0 + PRI1 + PRI2 + PRI3
通过固定I0至I3的值,我们可以实现任何函数H(P,R)。如表3-2所示,通过使I0=0、I1=1、I2=1和I3=0,我们可以实现函数M0,H=PR+PR;通过使I0=0、I1=0、I2=1和I3=1,我们还可以实现函数M1,H=P;通过使I0=0、I1=1、I2=0和I3=1,我们还可以实现函数M2,H=R。这些函数中的任何一个都可以永久地实现,或者通过将I0=0固定,将I1、I2和I3作为变量,并根据以上三种模式来临时分配它们的值这种方式来实现。图3-9c所示的最终电路中I0=0,图3-9d给出了I0固定为0后的模式编程表。 ■
3.4.3 使能
通常情况下,使能允许信号从输入传播到输出。非使能除了可以用高阻态(将在6.8节介绍)来代替输入信号之外,还可以用固定输出值0或1来代替输入信号。这个附加的输入信号通常称为ENABLE或者EN,它用来决定输出是否被使能。例如,如果EN=1,则输入X就可以到达输出(使能),但如果EN=0,输出则被固定为0(非使能)。在这种情况下,非使能值为0,输入信号与EN信号相与得到输出,如图3-10a所示。若非使能值为1,则输入信号X与EN信号取反后相或得到输出,如图3-10b所示。在这种情况下,如果EN=1,则或门的一端输入为0,另一端输入为X,输入到达输出。但如果EN=0,则或门的一端输入为1,这会阻止输入X到达输出。也可以将图3-10中每个电路的EN取反。这样,EN=0将使X到达输出,EN=1则阻止输入X到达输出。

《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数

例3-5 用使能进行汽车电气控制
问题:几乎所有的汽车中,只要打开点火开关,车内照明、收音机和电动车窗都开始工作。在这种情况下,点火开关就相当于“使能”信号。假设我们使用下面的变量和定义来模型化这个汽车子系统:
点火开关IS:值为0时关,为1时开;
照明开关LS:值为0时关,为1时开;
收音机开关RS:值为0时关,为1时开;
电动车窗开关WS:值为0时关,为1时开;
照明灯L:值为0时关,为1时开;
收音机R:值为0时关,为1时开;
电动车窗W:值为0时关,为1时开。
解决方法:表3-3给出了这个汽车子系统的紧凑形式的真值表。注意,当点火开关IS关闭时(0),所有被控制的辅助设备都关闭(0),无论它们的开关是否开启,真值表的第一行表示这种情况。通过使用×,这个紧凑的只有9行的真值表所表示的信息与一般的有16行的真值表完全相同。与×在输出列表示无关项不同,×在输入列表示不是最小项的乘积项。例如,0×××表示乘积项IS。与最小项一样,如果真值表中输入组合某一位的值为0,则对应的变量取反;如果值为1,则无需取反;如果值为×,则变量不出现在乘积项中。当点火开关IS打开时(1),所有辅助设备都由它们各自的开关控制。当点火开关IS关闭时(0),所有辅助设备都关闭,所以IS用固定值0取代了输出L、R和W的值,它满足使能信号的定义。最终的电路如图3-11所示。 ■
《逻辑与计算机设计基础(原书第5版)》——3.4 基本逻辑函数