1第二章8086系统结构8086CPU内部结构8086CPU引脚及功能8086CPU存储器组织8086CPU系统配置8086CPU时序28086CPU时序一.概述时序就是指系统中各总线信号(即地址、数据和控制信号)产生的先后次序。学习总线操作时序对接口电路设计是至关重要的:帮助我们深入了解执行指令的过程,准确地掌握CPU与存储器、CPU与I/O设备以及I/O设备之间的操作定时关系;在程序设计时了解时序有助于选择适当的指令,优化程序设计;在计算机实时控制系统设计中要利用时序完成实时操作。3①指令周期(InstructionCycle):执行一条指令所需的时间称为指令周期。不同指令的指令周期的长短是不同的。一个指令周期由几个总线周期组成。②总线周期(BusCycle):BIU完成一次访问存储器或I/O端口操作所需要的时间,称作一个总线周期。一个总线周期由几个T状态组成。③时钟周期(ClockCycle):CPU的时钟频率的倒数,也称T状态。注意:在8086/8088CPU中,每个总线周期至少包含4个时钟周期(T1~T4),一般情况下,在总线周期的T1状态传送地址,T2~T4状态传送数据。4二.系统的复位与启动①复位信号:通过RESET引脚上的触发信号来引起8086系统复位和启动,RESET至少维持4个时钟周期的高电平。②复位操作:当RESET信导变成高电平时,8086/8088CPU结束现行操作,各个内部寄存器复位成初值。标志寄存器清零指令寄存器0000HCS寄存器FFFFHDS寄存器0000HSS寄存器0000HES寄存器0000H指令队列变空其它寄存器0000H5③复位后程序执行:代码段寄存器CS=FFFFH,指令指针IP=0,从内存的FFFF0H处开始执行指令。在FFFF0处存放了一条无条件转移指令,转移到系统引导程序的入口处,这样系统启动后就自动进入系统程序。④可屏蔽中断被屏蔽:标志寄存器被清0,程序中要用指令STI来设置中断允许标志。6系统的复位动画演示7在RESET信号变成高电平后,经过一个时钟周期,所有的三态输出线被设置成高阻,并一直维持高阻状态(浮空),直到RESET信号回到低电平为止。在高阻状态的前半个时钟周期,三态输出线被置成不作用状态,当时钟信号又变成高电平时,才置成高阻状态。置成高阻状态的三态输出线包括:AD15~AD0、A19/S6~A16/S3、BHE/S7、M/IO、DT/R、DEN、WR、RD和INTA。另外有几条控制线在复位之后处于无效状态,但不浮空,它们是ALE、HLDA、RQ/GT0、RQ/GT1、QS0、QS1。8三.最小模式下的总线操作1.读总线周期(动画)91.读总线周期T1状态:①M/IO信号在T1状态有效,指出CPU是从内存还是从I/O端口读取数据。M/IO信号的有效电平一直保持到总线周期结束的T4状态。②T1状态开始,20位地址信号通过多路复用总线输出,指出要读取的存储器或I/O瑞口的地址。高4位地址从A19/S6~A16/S3地址/状态线送出,低16位从AD15~AD0地址/数据线送出。③ALE引脚上输出一个正脉冲作地址锁存信号。在T1状态结束时,M/IO信号,地址信号均已有效,ALE的下降沿用作锁存器8282的选通信号,使地址锁存。10T1状态:④BHE信号有效,作为奇地址存储体的选体信号,配合地址信号可实现存储单元的寻址,它表示高8位数据线上的数据有效。⑤系统中若接有数据总线收发器8286时,在T1状态,DT/R端输出低电平,表示本总线周期为读周期,用DT/R去控制8286接收数据。11T2状态:①地址信号消失,A19/S6~A16/S3引脚上输出状态信息S6~S3,指出当前正在使用的段寄存器及中断允许情况。②低位地址线AD15~AD0进入高阻状态,为读取数据作准备。③BHE/S7变成高电平,输出状态信息S7,S7在设计中未赋于实际意义。④RD信号有效,送到所有的存储器和I/O端口,但只选通地址有效的存储单元和I/O端口,使之能读出数据。⑤若系统中接有8286,DEN信号在T2状态有效,作为8286的选通信号,使数据通过8286传送。12T3状态:①T3状态一开始,CPU采样READY信号,若此信号为低电平表示系统中所连接的存储器或外设工作速度较慢,数据没有准备好,要求CPU在T3和T4状态之间再插入一个TW状态。READY是通过时钟发生器8284传递给CPU的。②当READY信号有效时,CPU读取数据。在DEN=0、DT/R=0的控制下,内存单元或I/O端门的数据通过数据收发器8286送到数据总线AD15~AD0上。CPU在T3周期结束时,读取数据。S3S4指出了当前访问哪个段寄存器,若S3S4=10,表示访问CS段,读取的是指令,CPU将它送入指令队列中等待执行,否则读取的是数据,送入ALU进行运算。13Tw状态:CPU在每个TW状态的前沿对READY信号采样,若为低电平继续插入TW状态。当在TW状态采样到READY信号为高电平时,在当前TW状态执行完,进入T4状态,在最后一个TW状态,数据肯定已出现在数据总线上,此时TW状态的动作与T3状态一样。CPU采样数据线AD15~AD0。T4状态:CPU在T3与T4状态的交界处采样数据。然后在T4状态的后半周期,数据从数据总线上撤除,各个控制信号和状态信号线进入无效状态,DEN无效,总线收发器不工作,一个读总线周期结束。142.写总线周期15T1状态:M/IO信号有效,指出CPU将数据写入内存还是I/O端口;CPU给出写入存储单元或I/O端口的20位物理地址;地址锁存信号ALE有效,选存储体信号BHE、A0有效,DT/R变高平,表示本总线周期为写周期。T2状态:地址撤消,S6~S3状态信号输出;数据从CPU送到数据总线AD15~AD0,WR写信号有效;DEN信号有效,作为数据总线收发器8286的选通信号。T3状态:CPU采样READY线,若READY信号无效,插入一个到几个TW状态,直到READY信号有效,存储器或I/O设备从数据总线上取走数据。T4状态:从数据总线上撤消数据,各控制信号和状态信号线变成无效;DEN信号变成高电平,总线收发器不工作。16与读总线周期几点不同之处:①在T1状态,DT/R信号为高电平,表示本总线周期为写周期,即CPU将数据写入存储单元或I/O端口。②在T2状态,地址信号发出后,CPU立即向地址/数据总线AD15~AD0发出数据,数据信号保持到T4状态的中间,使存储器或外设一旦准备好即可从数据总线取走数据。③写信号为WR(代替RD),在T2状态有效,维持到T4状态,选通存储器或I/O端口的写入。17只有在CPU和存储器或I/O接口之间传输数据时,CPU才执行总线周期,当CPU不执行总线周期时(指令队列6字节已装满,EU未申请访问存储器),总线接口部件不和总线打交道,就进入了总线空闲周期Ti。此时状态信息S6~S3和前一个总线周期一样,数据总线上信号不同,若前一个总线周期是读周期,则AD15~AD0在Ti状态处于高阻状态,若前一个总线周期是写周期,则AD15~AD0在Ti状态继续保持数据有效。在空闲周期中,虽然CPU对总线进行空操作,但CPU内部操作仍然进行。例ALU执行运算,内部寄存器之间数据传输等,即EU部件在工作。所以说,总线空操作是总线接口部件BIU对总线执行部件EU的等待。3.总线空操作18四.最小模式下的总线保持T4或TiCLKHOLDHLDA在一个系统中,CPU以外的其它主模块要求获得控制总线的使用权时,向CPU发出总线请求信号HOLD。在每个时钟脉冲的上升沿,CPU检测HOLD引脚上的信号。如果检测到HOLD为高电平,并且允许让出总线,那么在总线周期的T4状态或空闲状态Ti之后的下一个时钟周期,CPU发出总线响应信号HLDA,并且让出总线,直到HOLD信导无效,CPU才收回总线控制权。19①HOLD信号变高电平后,CPU要在下一个时钟周期的上升沿才检测到。然后用T4或Ti状态的下降沿使HLDA变成高电乎。若采样到HOLD信号时,不在T4或Ti状态,可能会延迟几个时钟周期,等到T4或Ti状态才发HLDA信号。②8086CPU一旦让出总线控制权,使地址线,数据线及控制信号RD、WR、INTA、M/IO、DEN及DT/R处于浮空状态,但ALE信号不浮空。20③HOLD信号影响8086CPU的总线接口部件BIU的工作(总线浮空),但执行部件EU继续执行指令队列中的指令,直到遇到需要使用总线的指令时,执行部件EU才停下来。④当总线请求结束,HOLD及HLDA信号变为低电平时,CPU不立刻驱动三总线,这些引脚继续浮空,直到CPU执行一条总线操作,才结束这些引脚的浮空状态。因此,为了防止总线控制切换时,因没有任何主模块的驱动而造成控制线电平飘移到最小电平以下,在控制线和电源之间要连接一个提拉电阻。218088CPUI/O端口、存储器读周期时序图CLKT1T2T3T4A19~A16/S6~S3IO/MA15~A8AD7~AD0ALERDDT/RDENS6~S3A7~A0A19~A16D7~D0高IO低M22A7~A0WRCLKA19~A16/S6~S3T1T2T3T4IO/MA15~A8DT/RDENA19~A16高IO低MS6~S3AD7~AD0ALED7~D08088CPUI/O端口、存储器写周期时序图23课堂练习要完成下述运算或控制,用什么标志位判断?其值是什么?⑴比较两数是否相等?⑵两数运算后结果是正数还是负数?⑶两数相加后是否溢出?⑷采用偶校验方式。判定是否要补“1”?(5)无符号数两数相减后比较大小?(6)中断信号能否允许?CF=0,被减数大;CF=1,被减数小。24对下列CS:IP的组合,求出要执行的下一条指令的存储器地址。a)CS:IP=1000H:2000Hb)CS:IP=2000H:1000Hc)CS:IP=1A00H:B000Hd)CS:IP=3456H:AB09H25若当前SS=3500H,SP=0800H,说明堆栈段在存储器中的物理地址,若此时入栈10个字节,SP内容是什么?若再出栈6个字节,SP为什么值?堆栈段的物理地址范围:35000H~44FFFH当前栈顶的物理地址为:35000H+0800H=35800H入栈10个字节以后:SP=0800H-000AH=07F6H出栈6个字节以后:SP=07F6H+0006H=07FCH26某程序数据段中存放了两个字,1EE5H和2A8CH,已知DS=7850H,数据存放的偏移地址为3121H及285AH。试画图说明它们在存储器中的存放情况。若要读取这个两个字,需要对存储器进行几次操作?27它们的物理地址分别是:78500H+3121H=7B621H,78500H+285AH=7AD5AH。1EE5H的偏移地址是3121H,是奇地址,需要进行两次操作;2A8CH的偏移地址是285AH,是偶地址,需要一次操作。28说明8086系统中“最小模式”和“最大模式”两种工作方式的主要区别是什么?最小模式为单机系统,系统中所需要的控制信号由CPU提供,实现和存储器及I/O接口电路的连接。29最大模式可以构成多处理器/协处理器系统,即一个系统中存在两个以上微处理器,每个处理器执行自己的程序。系统中所需要的控制信号由总线控制器8288提供,8086CPU提供信号控制8288,以实现全局资源分配及总线控制权传递。在两种模式中,CPU的24~31引脚意义不同。最小模式中引脚MN/MX接+5V,最大模式中该引脚接地。308086系统中为什么要用地址锁存器?8282地址锁存器与CPU如何连接?CPU与存储器(或者I/O端口)进行数据交换时,CPU首先要送出地址信号,然后再发出控制信号及传送数据。由于8086引脚的限制,地址和数据分时复用一组总线,所以要加入地址锁存器,先锁存地址,使在读/写总线周期内地址稳定。318282是三态缓冲的8位数据交换锁存器,由选通信号STB与CPU的地址锁存允许信号A