第2章微型计算机的基本组成电路2.1算术逻辑单元2.2触发器2.3寄存器2.4三态输出电路2.5总线结构2.6存储器习题任何一个复杂的电路系统都可以划分为若干电路,这些电路大都由一些典型的电路组成。微型计算机就是由若干典型电路通过精心设计而组成的,各个典型电路在整体电路系统中又称为基本电路部件。本章就是对微型计算机中最常见的基本电路部件的名称及电路原理作一简单介绍。这些基本电路中最主要的是算术逻辑单元(arithmaticlogicalunit,ALU)、触发器(trigger)、寄存器(register)、存储器(memory)及总线结构等。在本章中,数据在这些部件之间的流通过程以及“控制字”的概念也将逐步地引出。所有这些内容都是组成微型计算机的硬件基础。2.1算术逻辑单元顾名思义,这个部件既能进行二进制数的四则运算,也能进行布尔代数的逻辑运算。第1章已讲过,二进制数的运算电路只能算加法。增加可控反相器后,又能进行减法,所以上章最后介绍的二进制补码加法器/减法器就是最简单的算术部件。但是,只要利用适当的软件配合,乘法也可以变成加法来运算,除法也可变成减法来运算。如果在这个基础上,增加一些门电路,也可使简单的ALU进行逻辑运算。所谓逻辑运算就是指“与”运算和“或”运算。为了不使初学者陷入复杂的电路分析之中,本教程不打算在逻辑运算问题上开展讨论。ALU的符号一般画成图2.1那样。A和B为两个二进制数,S为其运算结果,control为控制信号(见图1.9的控制线端SUB)。图2.12.2触发器触发器(trigger)是计算机的记忆装置的基本单元,也可说是记忆细胞。触发器可以组成寄存器,寄存器又可以组成存储器。寄存器和存储器统称为计算机的记忆装置。微型计算机所用触发器一般用晶体管元件而不用磁性元件。这是因为晶体管元件可以制成大规模的集成电路,体积可以更小些。从晶体管电路基础中,我们已经知道触发器可以由两个晶体管组成的对称电路来构成,我们也知道触发电路中有所谓单稳态触发电路和双稳态触发电路,这里不打算重复这些电路的原理图和工作特点了。下面简要地介绍一下RS触发器、D触发器和JK触发器,因为这些类型的触发器是计算机中最常见的基本元件。2.2.1RS触发器RS触发器可以用两个与非门来组成,如图2.2所示。当S=1而R=0时,Q=1(Q=0)称为置位;当S=0而R=1时,Q=0(Q=1)称为复位。为了作图方便,以后我们就只用方块来表示,如图2.3就是RS触发器的符号。S端一般称为置位端,使Q=1(=0),R端一般称为复位端,使Q=0(=1)。时标RS触发器——为了使触发器在整个机器中能和其他部件协调工作,RS触发器经常有外加的时标脉冲,如图2.4所示。图2.2图2.3图2.4此图中的CLK即为时标脉冲。它与置位信号脉冲S同时加到一个与门的两个输入端;而与复位信号脉冲同时加到另一个与门的两个输入端。这样,无论是置位还是复位,都必须在时标脉冲端为高电位时才能进行。2.2.2D触发器RS触发器有两个输入端S和R。为了存储一个高电位,就需要一个高电位输入的S端;为了存储一个低电位,就需要另一个高电位输入的R端。这在很多应用中是不很方便的。D触发器是在RS触发器的基础上引伸出来的,它只需一个输入端口,图2.5就是D触发器的原理。当D端为高电位时,S端为高电位,而通过非门后加到R端的就是低电位,所以此时Q端就是高电位,称为置位。当D端为低电位时,S端为低电位,同时R端变为高电位,所以Q端是低电位,称为复位。图2.5图2.6无时标的D触发器是不能协调运行的,图2.6所示是如何为D触发器加上时标的电路。此图和图2.4的道理是一样的,也是增加两个与门就可以接受时标脉冲CLK的控制。时标脉冲CLK一般都是方波,在CLK处于正半周内的任何瞬间,触发器都有翻转的可能。这样计算机的动作就不可能整齐划一。我们总是想由时标CLK来指挥整个机器的行动。因此,采用时标边缘触发的方式就可以得到准确划一的动作。图2.7就是边缘触发的D触发器的电路原理图。图2.7与图2.6的区别仅为增加了一个RC微分电路,它能使方波电压信号的前沿产生正尖峰,后沿产生负尖峰。这样,在D端输入信号建立之后,当时标脉冲的前沿到达的瞬间,触发器才产生翻转动作。如果D输入端的信号是在时标脉冲前沿到达之后才建立起来的,则虽然仍在时标脉冲的正半周时间内,也不能影响触发器的状态,而必须留到下一个时标脉冲的正半周的前沿到达时才起作用。这样就可以使整个计算机运行在高度准确的协调节拍之中。图2.7触发器的预置和清除:在一些电路中,有时需要预先给某个触发器置位(即置1)或清除(即置0),而与时标脉冲以及D输入端信号无关,这就是所谓预置和清除。这种电路很简单,只要在图2.7的电路中增加两个或门就可以实现,如图2.8所示。图2.8边缘触发的D触发器在计算机电路图中常用图2.9的符号来表示。图2.9图2.9(a)为正边缘触发的符号,而图2.9(b)为负边缘触发的符号。此二符号之差别在于后者增加了一个所谓汽泡“○”。这实际上是在D触发器的时标CLK的微分电路之后再串联一个非门(反相器)的简化符号。图2.9(c)与前二图之差别,也在于其增加了两个汽泡“○”,这也是代表了增加两个非门于PRESET和CLR端。这样,就必须是低电平到来才能经非门转换成高电平去进行预置和清除作用。2.2.3JK触发器JK触发器是组成计数器的理想记忆元件,这里就JK触发器的电路原理作一简要介绍。在RS触发器前面增加两个与门,并从输出(Q和Q)到输入(与门的输入端)作交叉反馈,即可得到JK触发器如图2.10所示。图中的CLK输入端串有RC电路也是为了获得正边缘触发的工作方式的。这个电路的工作过程是:图2.10(1)当J=0,K=0,即J和K都是低电平时,两个与门都被阻塞,无论此时Q和Q是什么状态,由于S和R也是低电平,所以不会改变Q和Q的状态,这种状态称为保持闭锁状态。(2)J=0,K=1,即J为低电平而K为高电平。此时上面的与门被阻塞,即S不可能为高电平,所以也无置位(即使Q=1)的可能。如果此时Q=1,则反馈至下面的与门。在下一个CLK的正脉冲边沿到达时,触发器就产生复位动作(Q=0,Q=1)。如果Q原来为低电平(Q=0,Q=1),则反馈至下面的与门而使其也被阻塞,所以即使K=1,也没有任何动作产生,触发器仍处于复位状态(Q=0,Q=1)。(3)J=1,K=0,即J为高电平而K为低电平。此时下面的与门被阻塞,即R不可能为高电平,所以也无复位(即使Q=0)的可能。如果此时Q=0,而=1,则反馈至上面的与门,在下一个CLK的正脉冲边缘到达时,触发器就产生置位动作(Q=1,Q=0)。如果Q原来为高电平(Q=1,Q=0),则反馈至上面的与门而将其阻塞,这样上下两个与门都被阻塞了,触发器就仍处于置位状态(Q=1,Q=0)。(4)J=1,K=1,即J,K同为高电平,则可能使触发器置位(Q=1,Q=0)或复位(Q=0,Q=1)。也就是说,如果原来的状态为Q=0,Q=1,在J=1及K=1而且在CLK的正边缘脉冲到达时,就会翻转到Q=1,Q=0。反之,如果原来的状态为Q=1,Q=0,在J=1及K=1而且在CLK的正边缘脉冲到达时,就会翻转到Q=0,Q=1。所谓翻转,就是触发器的状态改变的意思。下面要讲到的计数器就是利用JK触发器的翻转特性而组成的。JK触发器的符号如图2.11所示。图2.112.3寄存器寄存器(register)是由触发器组成的。一个触发器就是一个一位寄存器。由多个触发器可以组成一个多位寄存器。寄存器由于其在计算机中的作用之不同而具有不同的功能,从而被命名为不同的名称。常见的寄存器有:缓冲寄存器——用以暂存数据;移位寄存器——能够将其所存的数据一位一位地向左或向右移;计数器——一个计数脉冲到达时,会按二进制数的规律累计脉冲数;累加器——用以暂存每次在ALU中计算的中间结果。下面分别介绍这些寄存器的工作原理及其电路结构。2.3.1缓冲寄存器其基本工作原理为:设有一个二进制数,共有4位数:X=X3X2X1X0要存到这个缓冲寄存器(buffer)中去,此寄存器是由4个D触发器组成的。将X0,X1,X2,X3分别送到各个触发器的D0,D1,D2,D3端去,只要CLK的正前沿还未到来,则Q0,Q1,Q2,Q3就不受X0,X1,X2,X3的影响而保持其原有的数据。只有当CLK的正前沿来到时,Q0,Q1,Q2,Q3才接受D0,D1,D2,D3的影响,而变成:Q0=X0Q1=X1Q2=X2Q3=X3结果就是:Q=Q3Q2Q1Q0=X3X2X1X0=X。这就叫做将数据X装到寄存器中去了。如要将此数据送至其他记忆元件去,则可由Y0,Y1,Y2,Y3各条引线引出去。可控缓冲寄存器:图2.12的缓冲寄存器的数据X输入到Q只是受CLK的节拍管理,即只要一将X各位加到寄存器各位的D输入端,时标节拍一到,就会立即送到Q去。这有时是不利而有害的,因为也许我们还想让早已存在其中的数据多留一些时间,但由于不可控之故,在CLK正前沿一到就会立即被来到门口的数据X替代掉。图2.12为此,我们必须为这个寄存器增设一个可控的“门”。这个“门”的基本原理如图2.13所示,它是由两个与门一个或门以及一个非门所组成的。图2.13在X0端送入数据(0或1)后,如LOAD端(以下简称为L端)为低电位,则右边的与门被阻塞,X0过不去,而原来已存在此位中的数据由Q0送至左边的与门。此与门的另一端输入从非门引来的与L端反相的电平,即高电位。所以Q0的数据可以通过左边的与门,再经或门而送达D0端。这就形成自锁,即既存的数据能够可靠地存在其中而不会丢失。如L端为高电位,则左边与门被阻塞而右边与门可让X0通过,这样Q0的既存数据不再受到自锁,而X0可以到达D0端。只要CLK的正前沿一到达,X0即被送到Q0去,这时就叫做装入(LOAD)。一旦装入之后,L端又降至低电平,则利用左边的与门,X0就能自锁而稳定地存在Q0中。要记住,以后我们一提到“L门”,大家就要想到图2.13的电路结构及其作用:高电平时使数据装入,低电平时,数据自锁在其中。对于多位的寄存器,每位各自有一套如图2.13一样的电路。不过只用一个非门,并且只有一个LOAD输入端,如图2.14所示。图2.14可控缓冲寄存器的符号一般画成图2.15那样,LOAD为其控制门,而CLR为高电平时则可用以清除,使其中各位变为0。图2.152.3.2移位寄存器移位寄存器(shiftingregister)能将其所存储的数据逐位向左或向右移动,以达到计算机在运行过程中所需的功能,例如用来判断最左边的位是0或1等。电路原理图如图2.16所示。图2.16左移寄存器如图2.16(a)所示,当Din=1而送至最右边的第1位时,D0即为1,当CLK的正前沿到达时,Q0即等于1。同时第2位的D1也等于1。当CLK第2个正前沿到达时,Q1也等于1。结果可得下列的左移过程:CLK前沿未到Q=Q3Q2Q1Q0=0000第1前沿来到Q=0001第2前沿来到Q=0011第3前沿来到Q=0111第4前沿来到Q=1111第5前沿来到,如此时Din仍为1,则Q不变,仍为1111。当Q=1111之后,改变Din,使Din=0,则结果将是把0逐位左移:第1前沿来到Q=1110第2前沿来到Q=1100第3前沿来到Q=1000第4前沿来到Q=0000由此可见,在左移寄存器中,每个时钟脉冲都要把所储存的各位向左移动一个数位。右移寄存器如图2.16(b)所示。图2.16(b)与图2.16(a)之差别仅在于各位的接法不同,而且输入数据Din是加到左边第1位的输入端D3。根据上面的分析,当Din=1时,随着时钟脉冲而逐步位移是这样的:CLK前沿未到Q=0000第1前沿来到Q=1000第2前沿来到Q=1100第3前沿来到Q=1110第4前沿来到Q=1111由此可见,在右移寄存器中,每个时钟脉冲都要把所存储的各位向右移动一个位置。可控移位寄存器:和缓冲寄存器一样,在整机运行中,移位寄存器也需要另有控制电路,