总线操作是微处理器与外界进行数据交换的唯一途径,微处理器对存储器、输入/输出端口的读写等操作都要通过总线操作来完成。总线操作一般由微处理器的总线接口控制,并由系统时钟定时,其基本定时单位就是总线周期。
1.总线周期
总线周期是微处理器执行一次外部访问操作的最小定时单位。当微处理器需要和片外的存储器或其他外围功能模块进行数据传输时,比如读指令、读写操作数、处理中断请求等,微处理器都必须通过执行一个或多个总线周期来完成。8086/8088微处理器规定一个基本的总线周期至少包括4个时钟周期的时间间隔,每个时钟周期的时间间隔叫做一个T状态,最短的总线周期由4个时钟周期组成,这4个时钟周期被记作T1、T2、T3和T4,共计4个T状态(见图2-14)。
图2-14 典型的8086/8088总线周期与时序
8086/8088总线周期由T1状态开始,在T1状态下,8086/8088的总线接口部件(BIU)把存储器或输入/输出端口的地址送到地址线和地址/数据复用线上,这时地址信号会被总线锁存器8282锁存,以供后续几个状态下的存储器或输入/输出端口使用。在总线写周期中,由于地址/数据复用线始终处于输出状态,不需要状态转换,所以在T2状态开始,BIU就可以把要输出的数据放到总线上并维持到状态T4。在这段时间内,总线缓冲器8286处于输出状态,将数据信号从CPU送到系统的数据总线上供存储器或输入/输出端口使用。在总线读周期中,BIU在T2状态将地址/数据总线置为浮动(高阻)状态,以便在T3、T4周期内使总线缓冲器8286和系统数据总线置于输入状态,从总线上接收从存储器或输入/输出端口读取的数据。
除了这四种状态之外,8086/8088的总线还有可能处于另外两种状态。一种情况是8086/8088既不需要从存储器或输入/输出端口读写操作数,也不需要从存储器读取指令码的时候,这时总线处于空闲状态,记做Ti。另一种情况是有时存储器或输入/输出端口的操作速度跟不上CPU的速度,这时8086/8088的BIU就必须在T3和T4之间插入等待周期来延长总线周期,等待片外功能模块操作的完成,这时插入的等待周期记做Tw。
2.总线读操作时序
图2-15给出了8086/8088的总线读操作时序(以最小模式下为例,最大模式下的读周期基本一样,只是一些信号的来源不同)。
在T1状态之前,BIU就要保持M/信号稳定的1或者0,以通知外部的数据提供者本次总线访问是针对存储器还是输入/输出接口设备,这个信号要一直稳定保持到整个总线周期的结束(T4的结束),与此同时,DT/
信号要变低以使数据总线处于接收状态,并保持到整个总线周期的结束。
在T1状态中,A19/S6~A16/S3引脚以及AD15~AD0引脚输出被访问的存储器单元或I/O端口的地址,该地址由BIU形成。T1期间地址锁存信号ALE输出一个正脉冲,作为总线地址锁存器8282的选通脉冲,将A19/S6~A16/S3引脚以及AD15~AD0引脚输出的地址码打入总线地址锁存器并在整个总线周期里维持不变(图中未表示)。信号随地址信号一同输出并锁存,控制按16位结构组织的存储器与输入/输出端口是否输出D15~D8高字节数据。
图2-15 8086/8088总线读操作时序(www.xing528.com)
在T2状态期间,AD15~AD0引脚结束地址码的输出变为高阻(浮动)状态,为在T3期间读入数据做准备。与此同时,A19/S6~A16/S3引脚和/S7引脚也结束地址码的输出而改为输出处理器的状态。在T2状态期间,
引脚上要输出一个负脉冲作为读命令提供给被访问的模块来启动数据的读取过程,该脉冲要维持到T3或Tw的结束。同时,为了打开数据总线缓冲器8286,T2期间
引脚要输出低电平并维持到T3或Tw的结束。
T3状态期间,被访问的存储单元或I/O端口设备要将数据送到数据总线上,经数据总线缓冲器8286的缓冲传递给处理器的AD15~AD0引脚。同时,存储单元或者I/O端口设备还要提供一个READY信号,以通知处理器当前数据总线上的数据是有效数据,可以被采样。READY信号是在T3的时钟上升沿被采样检测的,如果在T3的时钟上升沿未能出现有效的READY信号,处理器将在当前的T3状态结束之后插入Tw等待状态,并在每个Tw等待状态的时钟上升沿对READY信号进行采样检测,直到有效的READY信号出现为止。
有效READY信号被采样到之后,处理器进入T4状态,将数据读入处理器,并为下一个总线周期做准备。
3.总线写操作时序
图2-16给出了8086/8088的总线写操作时序(以最小模式下为例,最大模式下的写周期基本一样,只是一些信号的来源不同)。
图2-16 8086/8088总线写操作时序
8086/8088的总线写操作时序和读操作的时序基本相同,区别在以下几点。
首先,有效的信号取代了
信号,代表总线周期所做的操作是写而不是读。
然后,DT/R信号始终保持高电平,代表信号传输的方向始终是从CPU向外部芯片,保证总线缓冲器8286在整个总线周期内都处于发送状态。信号提前到T2状态以前就提供高电平,使数据总线缓冲器提早做好发送待写数据的准备。
最后,AD15~AD0引脚在T2期间不需要变为高阻(浮动)状态而直接输出待写出的数据,这是因为在整个总线周期内AD15~AD0引脚的数据流动方向始终没有改变,不需要高阻恢复期。T2一开始处理器就将要写入的数据送到AD15~AD0,并提供信号,有助于被访问的存储器或I/O端口尽早启动写入操作,减少等待的发生。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。