第2章计算机的逻辑部件2.1逻辑组合电路加法器2.2时序逻辑电路2.3阵列逻辑电路0.预备知识:三种基本逻辑操作布尔代数有三种基本逻辑操作——“与”(逻辑乘,符号·)、“或”(逻辑加,符号+)、“非”(求反,符号-)。它们的逻辑含义如下:“与”逻辑操作:当且仅当X,Y均为“1”时,其逻辑乘X·Y才为“1”,否则为“0”。“或”逻辑操作:只要X,Y任一(或者同时)为“1”时,其逻辑加X+Y即为“1”,否则为“0”。“非”逻辑操作:当X为“1”时,X即为“0”;当X为“0”时,X即为“1”。有了这三种基本逻辑操作,就可以构造出任何逻辑函数来。逻辑门的实现:•任何复杂的逻辑运算都可通过基本逻辑操作“与”、“或”、“非”来实现。•实现这三种基本逻辑操作的电路是三种基本逻辑门电路:“与”门、“或”门、“非”门(反相门)。•把这三种基本逻辑门串联组合,可形成实现“与非”、“或非”、“与或非”、“异或”、“同或”(异或非)功能的与非门、或非门、与或非门、异或门、同或门(异或非门)。各种逻辑门的图形符号1、计算机中常用的组合逻辑电路如果逻辑电路的输出状态仅和当时的输入状态有关,而与过去的输入状态无关,称这种逻辑电路为组合逻辑电路。常见的组合逻辑电路有:•异或门•加法器•三态门•译码器•数据选择器•算术逻辑单元(1)异或门功能表:异或门的作用:•可空原/反码输出电路•半加器•数码比较器•奇偶检测电路(2)加法器加法器是计算机基本运算部件之一。不考虑进位输入时,两数码Xn,Yn相加称为半加。下图是其功能表:由表写出半加和Hn的表达式如下:Hn=Xn·+·Yn=XnYnnYnX半加器可用反相门及与或非门来实现,也可用异或门来实现。Xn,Yn及进位输入Cn-1相加称全加。下图是全加功能表:由表可得全加和Fn和进位输出Cn的表达式:Fn=Xnnn-1+nYnn-1+nnCn-1+XnYnCn-1或Fn=XnYnCn-1Cn=XnYnn-1+XnnCn-1+nYnCn-1+XnYnCn-1CYXCYXCYX全加器的功能表及逻辑图n位加法器:将n个全加器相连可得n位加法器,如下图所示:但这种加法时间较长。这是因为其位间进位是串行传送的,本位全加和Fi必须等低位进位Ci-1来到后才能进行,加法时间与位数有关。只有改变进位逐位传送的路径,才能提高加法器工作速度。解决办法之一是采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。我们称这种加法器为超前进位加法器。需要指出的是,这里的“超前”是指:无需串行地产生C1、C2、C3、C4,而是并行的产生C1、C2、C3、C4。我们发现:•只要满足下述两条件中任一个,就可形成C1:(1)X1,Y1均为“1”;(2)X1,Y1任一个为“1”,且进位C0为“1”。由此,可写得C1的表达式为C1=X1Y1+(X1+Y1)C0•只要满足下述条件中任一个即可形成C2:(1)X2,Y2均为“1”;(2)X2,Y2任一为“1”,且X1,Y1均为“1”;(3)X2,Y2任一为“1”,同时X1,Y1任一为“1”,且C0为“1”。由此可得C2表达式为C2=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)C0可以看出C2的产生并不依赖于C1。同理,可有C3,C4表达式如下:C3=X3Y3+(X3+Y3)X2Y2+(X3+Y3)(X2+Y2)X1Y1+(X3+Y3)(X2+Y2)(X1+Y1)C0C4=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+(X4+Y4)(X3+Y3)(X2+Y2)X1Y1+(X4+Y4)(X3+Y3)(X2+Y2)(X1+Y1)C0接下来要做的事情,就是对C1-C4进行化解。引入进位传递函数Pi和进位产生函数Gi的概念,定义为:Pi=Xi+YiGi=Xi·YiPi的意义是:当Xi,Yi中有一个为“1”时,若有进位输入,则本位向高位传送进位,这个进位可看成是低位进位越过本位直接向高位传递的。Gi的意义是:当Xi,Yi均为“1”时,不管有无进位输入,定会产生向高位的进位。将Pi、Gi代入C1~C4式,便可得:C1=G1+P1C0C2=G2+P2G1+P2P1C0C3=G3+P3G2+P3P2G1+P3P2P1C0C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0试分析C2、C3?由功能表可知,当全加器的输入均取反码时,它的输出也均取反码。据此,可把它们以“与非”、“或非”、“与或非”的形式进行改写,形式如下:C1=1+10C2=2+21+210C3=3+32+321+3210C4=4+43+432+4321+43210注意与非运算和或非运算!PGCPGCPGCPGPGCPGPGGPGPGPGGGGGGGGGG四位超前进位加法器(3)三态门三态门,三态电路是一种重要的总线接口电路。这里的三态,是指它的输出既可以是一般二值逻辑电路的正常的“0”状态和“1”状态,又可以保持特有的高阻抗状态,第三种状态——高阻状态的门电路(高阻态相当于隔断状态)。处于高阻抗状态时,其输出相当于断开状态,没有任何逻辑控制功能。(4)译码器译码器有n个输入变量,2n个(或少于2n个)输出(即对输入进行解释),每个输出对应于n个输入变量的一个最小项。当输入为某一组合时,对应的仅有一个输出为“0”(或为“1”),其余输出均为“1”(或为“0”)。译码器的用途是把输入代码译成相应的控制电位,以实现代码所要求的操作。下图给出了二输入四输出译码器的逻辑图。译码器中常设置“使能”控制端,当该端为“1”时,译码器功能被禁止,此时所有输出均为“1”。使能端的一个主要功能是用来扩充输入变量数。二输入四输出译码器用两片三输入八输出译码器扩展成一个四输入十六输出译码器的实例。(5)数据选择器数据选择器又称多路开关,它从多个输入通道中选择某一个通道的数据作为输出,起到选择信号的作用。可使用E来扩展选择器的通道数。(6)算术逻辑单元算术逻辑单元简称ALU,是一种功能较强的组合逻辑电路。它能进行多种算术运算和逻辑运算。ALU的基本逻辑结构是超前进位加法器,它是通过改变加法器的Gi和Pi来获得多种运算能力(算术运算和逻辑运算)的。我们通过介绍国际流行的美国SN74181型四位ALU中规模集成电路来介绍ALU的原理。四位ALU逻辑图M是状态控制端,当M=H时逻辑运算;M=L时算术运算。S0~S3是运算选择控制端,决定执行哪种算术运算或逻辑运算。A3~A0,B3~B0是参加运算的两个数,Cn是ALU的最低位进位输入,F3~F0是运算结果,注脚3表示最高位。S3S2S1S0正逻辑M=H逻辑运算M=L算术运算Cn=1Cn=0LLLLAAA+1LLLHA+BA+B(A+B)加1LLHLA·BA+B(A+B)加1LLHH“0”减1“0”LHLLA·BA加(A·B)A加(A·B)加1LHLHB(A·B)加(A+B)(A·B)加(A+B)加1LHHLABA减B减1A减BLHHHA·B(A·B)减1A·S3S2S1S0正逻辑M=H逻辑运算M=L算术运算Cn=1Cn=0HLLLA+BA加(A·B)A加(A·B)加1HLLHABA加BA加B加1HLHLB(A·B)加(A+B)(A·B)加(A+B)加1HLHHA·B(A·B)减1A·BHHLL“1”A加AA加A加1HHLHA+BA加(A+B)A加(A+B)加1HHHLA+BA加(A+B)A加(A+B)加1HHHHAA减1A位的扩展:用4片74181电路可组成16位ALU。图中片内进位是快速的,但片间进位是逐片传递的,因此形成F0~F15的时间还是比较长。用4片ALU构成的16位ALU如果把16位ALU中的每四位作为一组,用类似四位超前进位加法器“位间快速进位”的形成方法来实现16位ALU(由四片ALU组成)中的“组间快速进位”,那么就能得到16位快速ALU。和前面讲过的一位的进位产生函数Gi的定义相似,四位一组的进位产生函数GN为“1”的条件有以下四个中的任一个:(1)X3,Y3均为“1”,即G3=1;(2)X3,Y3中有一个为“1”,同时X2,Y2均为“1”,即P3G2=1;(3)X3,Y3中有一个为“1”,同时X2,Y2中有一个为“1”,同时X1,Y1均为“1”,即P3P2G1=1;(4)X3,Y3中有一个为“1”,同时X2,Y2中有一个为“1”,同时X1,Y1中有一个为“1”,同时X0,Y0均为“1”,即P3P2P1G0=1。由此,可得GN的表达式为:GN=G3+P3G2+P3P2G1+P3P2P1G0四位一组的组进位传递函数PN为“1”的条件为:(1)X3,Y3中有一个为“1”。(2)同时X2,Y2中有一个为“1”。(3)同时X1,Y1中有一个为“1”。(4)同时X0,Y0中有一个为“1”。依此,可得PN的表达式为PN=P3P2P1P0Cn+X=GN0+PN0Cn=GN0+PN0Cn=N0N0+N0nCn+Y=GN1+PN1GN0+PN1PN0Cn=GN1+PN1(GN0+PN0Cn)=N1·(N1+N0·PN0Cn)=N1N1+N1N0N0+N1N0nCn+Z=GN2+PN2GN1+PN2PN1GN0+PN2PN1PN0Cn=GN2+PN2(GN1+PN1(GN0+PN0Cn))=N2·(N2+N1(N1+GN0+PN0Cn))=N2N2+N2N1N1+N2N1N0N0+N2N1N0nCPGCPGCPGGPGPGPGPGPGGGPGGGGGGGGG把第0片ALU向第Ⅰ片、第Ⅰ片向第Ⅱ片、第Ⅱ片向第Ⅲ片传送的进位分别命名为Cn+X、Cn+Y、Cn+Z。把第0片ALU向第Ⅰ片、第Ⅰ片向第Ⅱ片、第Ⅱ片向第Ⅲ片的进位传递表示为PN0、PN1、PN2。GN0、GN1、GN2也是同理。和74181型ALU连用的超前进位产生电路图中已把PN0,PN1,PN2,GN0,GN1,GN2分别用P0,P1,P2,G0,G1,G2表示。16位快速ALU