您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第5章处理器总线时序和系统总线.
第5章处理器总线时序和系统总线本章讲述:5.18086的引脚功能5.28086处理器时序5.3系统总线5.18086的引脚功能8086微处理器是一个双列直插式、40个引脚的器件,它的引脚功能与系统的组态有关。1.8086CPU的两种组态当8086CPU与存储器和外设构成一个计算机的硬件系统时,根据所连的存储器和外设的规模,8086可以有两种不同的组态。目前常用的是最大组态。要求有较强的驱动能力。此时8086要通过一组总线控制器8288来形成各种总线周期,控制信号由8288供给,如图5-1所示。当8086处在最大状态时的脚24~脚31的含义为:S2#、S1#、S0#(输出,三态)这些状态线的功能如表5-1所示。这些信号由8288总线控制器用以产生有关存储器访问,或I/O访问的总线周期和所需要的控制信号。在时钟周期T4状态期间,S2#、Sl#、S0#的任何变化,指示一个总线周期的开始;而它们在T3或Tw期间返回到无源状态(111),则表示一个总线周期的结束。当CPU处在DMA响应状态时,这些线浮空。RQ#/GT#0,RQ#/GT#1(输入/输出)这些请求/允许(Request/Grant)脚,是由外部的总线主设备请求总线并促使CPU在当前总线周期结束后让出总线用的。每一个脚是双向的,0比l有更高的优先权。这些线的内部有一个上拉电阻,所以允许这些引脚不连接。请求和允许的顺序如下:①由其它的总线主设备,输送一个宽度为一个时钟周期的脉冲给8086,表示总线请求,相当于HOLD信号。②CPU在当前总线周期的T4或下一个总线周期的T1状态,输出一个宽度为一个时钟周期的脉冲给请求总线的设备,作为总线响应信号(相当于HLDA信号),从下一个时钟周期开始,CPU释放总线。③当外设的DMA传送结束时,总线请求主设备输出一个宽度为一个时钟周期的脉冲给CPU,表示总线请求的结束。于是CPU在下一个时钟周期开始又控制总线。每一次总线主设备的改变,都需要这样的三个脉冲,脉冲为低电平有效。在两次总线请求之间,至少要有一个空时钟周期。LOCK#(输出,三态)低电平有效,当其有效时,别的总线主设备不能获得对系统总线的控制。LOCK#信号由前缀指令“LOCK”使其有效,且在下一个指令完成以前保持有效。当CPU处在DMA响应状态时,此线浮空。QS1、QS0(输出)QS1和QS0提供一种状态(QueueStatus)允许外部追踪8086内部的指令队列,如表5-2所示。队列状态在CLK周期期间是有效的,在这以后,队列的操作已完成。BHE#/ST(输出)在总线周期的T1状态,在bhe#/S7引脚输出信号,表示高8位数据线AD15~AD0上的数据有效;在T2、T3、T4、及Tw状态,BHE#/S7引脚输出状态信号S7。2.8086的引线A19/S6、A18/S5、A17/S4、A16/S3(输出,三态)这些引线也是多路开关的输出,在存储器操作的总线周期的T1状态时,这些线上是最高四位地址(也需要外部锁存)。在I/O操作时,这些地址不用,故在T1状态时全为低电平。在存储器和I/O操作时,这些线又可以用来作为状态信息(在T2、T3、TW状态时)。但S6始终为低;S5是标志寄存器中中断允许标志的状态位,它在每一个时钟周期开始时被修改;S4和S3用以指示是哪一个段寄存器正在被使用。在DMA方式时,这些线浮空。RD#(输出,三态)读选通信号,低电平有效。当其有效时,表示正在进行存储器读或I/O读。在DMA方式时,此线浮空。READY(输入)准备就绪信号,这是从所寻址的存储器或I/O设备来的响应信号,高电平有效。当其有效时,将完成数据传送。CPU在T3周期的开始采样READY线,若其为低,则在T3周期结束以后,插入TW周期,直至READY变为有效,则在此TW周期结束以后,进入T4周期,完成数据传送。INTR(输入)可屏蔽中断请求信号,这是一个电平触发输入信号,高电平有效。CPU在每一个指令周期的最后一个T状态采样这条线,以决定是否进入中断响应周期。这条线上的请求信号,可以用软件复位内部的中断允许位来加以屏蔽。TEST#(输入)这个检测输入信号是由“Wait”指令来检查的。若此输入脚有效(低电平有效),则执行继续,否则处理器就等待进入空转状态。这个信号在每一个时钟周期的上升沿由内部同步。NMI(输入)非屏蔽中断输入信号(NonMaskableInterrut),这是一个边沿触发信号。这条线上的中断请求信号不能用软件来加以屏蔽,所以这条线上由低到高的变化,就在当前指令结束以后引起中断。RESET(输入)复位输入信号,有效的复位信号引起处理器立即结束当前操作。这个信号必须保持有效(高电平)至少4个时钟周期,以完成内部的复位过程。当其返回为低电平时,它重新启动执行。CLK(输入)时钟输入信号,它提供了处理器和总线控制器的定时操作。8086的标准时钟频率为8MHz。VCC是5V±10%的电源脚。GND接地线。5.28086处理器时序1.时序的基本概念计算机的工作是在时钟脉冲CLK的统一控制下,一个节拍一个节拍地实现的。在CPU执行某一个程序之前,先要把程序(已变为可执行的目标程序)放到存储器的某个区域。在启动执行后,CPU就发出读指令的命令;存储器接到这个命令后,从指定的地址(在8086中由码段寄存器CS和指令指针IP给定)读出指令,把它送至CPU的指令寄存器中;CPU对读出指令经过译码器分析之后,发出一系列控制信号,以执行指令规定的全部操作,控制各种信息在机器(或系统)各部件之间传送。8086微处理器每条指令的执行有取指、译码、执行这样的阶段,但由于微处理器内有总线接口单元BIU和执行单元EU,所以在执行一条指令的同时(这在EU中操作),BIU就可以取下一条指令,它们在时钟上是重叠的。所以,从总体上来说,似乎不存在取指阶段,这种功能就称为“流水线”功能。目前,在高档微处理器中往往有多条流水线,使微处理器的许多内部操作“并行”进行,从而大大提高了微处理器的工作速度。执行一条指令的一系列动作,都是在时钟脉冲CLK的统一控制下一步一步进行的,它们都需要一定的时间(当然有些操作在时间上是重叠的)。如何确定执行一条指令所需要的时间呢?执行一条指令所需要的时间称为指令周期(InstructionCycle)。但是,8086中不同指令的指令周期是不等长的。因为,首先8086的指令是不等长的,最短的指令是一个字节,大部分指令是两个字节,但由于各种不同寻址方式又可能要附加几个字节,8086中最长的指令可能要6个字节。指令的最短执行时间是两个时钟周期,一般的加、减、比较、逻辑操作是几十个时钟周期,最长的为16位数乘除法操作约需要200个时钟周期。指令周期又分为一个个总线周期。每当CPU要从存储器或I/O端口,读写一个字节(或字)就是一个总线周期(BusCycle)。所以,对于多字节指令,取指就需要若干个总线周期;在指令的执行阶段,不同的指令也会有不同的总线周期,有的只需要一个总线周期,而有的可能需要若干个总线周期。一个基本的总线周期的时序如图5-3所示。每个总线周期通常包含4个T状态(Tstate),即图5-6中的T1、T2、T3、T4,每个T状态是8086中处理动作的最小单位,它就是时钟周期(ClockCycle)。早期的8086的时钟频率为8MHz,故时钟周期或者一个T状态为125ns。虽然各条指令的指令周期有很大差别,但它们仍然是由以下一些基本的总线周期组成的:(1)存储器读或写总线周期;(2)输入输出端口的读或写总线周期;(3)中断响应周期。8086CPU的每条指令都有自己的固定的时序。例如从存储器读一个字节(或字)的操作总线周期是由4个T状态组成,如图5-7所示。CPU在T1状态把地址信息从地址线A19~A16、AD15~AD0上输出,并且立即发出地址锁存信号ALE,把在A19~A16上出现的高4位地址和在AD15~AD0上出现的低16位地址,在外部地址锁存器上锁存。这样,20位地址信息就送至存储器。CPU也是在T1状态发出区分是存储器还是I/O操作的IO/M#信号。在T2状态,CPU发出读命令信号(若使用接口芯片8286,还有相应的控制信号DT/R和DEN)。有了这些控制信号,存储器就可以实现读出。在这些信号发出后,CPU等待一段时间,到它的T4状态的前沿(下降沿)采样数据总线AD15~AD0以获取数据,从而结束此总线周期。存储器从接收到地址信号,要经过地址译码选择,选中所需要的单元,I/O端口也如此。从接收到IO/M#信号和RD#信号(这些信号一般用作选通信号),到信息从被选中的单元读出送至数据总线也都是需要一定时间的,它是否能在T4周期的前沿之前完成,这完全取决于存储电路或I/O端口本身。所以,在CPU的时序和存储器或I/O端口的时序之间存在配合问题。CPU中设计了一条准备就绪——READY输入线,这是由存储器或I/O端口输送给CPU的状态信号线;在存储器或I/O端口对数据的读写操作完成时,使READY线有效(即为高电平)。CPU在T3状态的前沿(下降沿)采样READY线,若其有效,则为正常周期,在T3状态结束后进入T4状态,且CPU在T4状态的前沿采样数据总线,完成一个读写周期;若CPU在T3状态的前沿采样到READY为无效(低电平),则在T3周期结束后,进入TW周期(等待周期),而且在TW周期的前沿采样READY线,只要其为无效,就继续进入下一个TW周期,直至在某一个TW周期的前沿采样到READY为有效时,则在此TW周期结束时进入T4周期,在T4状态的前沿采样数据线,完成一个读写周期,其过程如图5-5所示。因此,在设计系统的硬件电路时,要根据CPU与所选的存储器的读写速度,分析能否在时序上很好地配合,若需要插入TW周期,就要设计一个硬件电路来产生适当的READY信号。有了READY信号线,就可以使CPU与任何速度的存储器相连接(当然存储器的速度还是要由系统的要求来选定)。但是,这说明了当CPU与存储器或I/O端口连接时,要考虑相互之间的时序配合问题。2.8086CPU的典型时序在最大组态下,8086的基本总线周期由4个T状态组成。在T1状态时,8086发出20位地址信号,同时送出状态信号S0#、S1#、S2#给8288总线控制器。8288对S0#~S2#进行译码,产生相应命令的输出控制信号。首先,8288在T1期间送出地址锁存允许信号ALE,将CPU输出的地址信息锁存至地址锁存器中,再输出到系统地址总线上。在T2状态,8086开始执行数据传送操作。此时,8086内部的多路开关进行切换,将地址/数据线AD0~AD15上的地址撤消,切换成数据总线,为读写数据作准备。8288发出数据总线允许信号和数据发送/接收控制信号DT/R#允许数据收发器工作,使数据总线与8086的数据线接通,并控制数据传送的方向。同样,把地址/状态线A16/S3~A19/S6切换成与总线周期有关的状态信息,指示若干与周期有关的情况。在T3周期开始的时钟下降沿上,8086采样READY线。如果READY信号有效(高电平),则在T3状态结束后进入T4状态,在T4状态开始的时钟下降沿,把数据总线上的数据读入CPU或写进地址选中的单元。在T4状态,结束总线周期。如果访问的是慢速存储器或外设接口,则应该在T1状态输出的地址经过译码选中某个单元或设备后,立即驱动READY信号到低电平。8086在T3状态采样到READY信号无效,就会插入等待周期TW,在TW状态CPU继续采样READY信号;直至其变为有效后再进入T4状态,完成数据传送,结束总线周期。在T4状态,8086完成数据传送,状态信号S0#~S2#变为无操作的过渡状态。在此期间,8086结束总线周期,恢复各信号线的初态,准备执行下一个总线周期。(1)存储器读周期和存储器写周期存储器读写周期由4个时钟周期组成,即使用T1、T2、T3和T4四个状态。(2)I/O读和I/O写周期8086微处理器的基本I/O读写总线周期时序与存储器读写周期时序是类似的。但通常I/O接口电
本文标题:第5章处理器总线时序和系统总线.
链接地址:https://www.777doc.com/doc-2110421 .html