1、第 5章 8086的系统时序和微机总线 第 5章 8086的总线操作 5.1 概述 5.2 8086的两种模式 5.3 最小模式下的 8086时序分析 5.4 最大模式下的 8086时序分析 第 5章 8086的系统时序和微机总线 5.1 概 述 5.1.1 时钟周期( T状态)、总线周期和指令周期 1 时钟周期( T状态) 计算机是一个复杂的时序逻辑电路,时序逻辑电路都有 “ 时钟 ” 信号。 计算机的 “ 时钟 ” 是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为 时钟周期 ,又称为 T状态 。计算机是在时钟脉冲的统一控制下,一个节拍一个节拍地工作的。 第 5章 8086的系统
2、时序和微机总线 2总线周期 CPU访问存储器或输入输出端口时,需要通过总线进行读或写操作。与 CPU内部操作相比,通过总线进行的操作需要较长的时间。通常把 CPU通过总线进行某种操作所花费的时间称为 总线周期 ( Bus Cycle)。 根据总线操作功能的不同,有多种不同的总线周期。如存储器读周期、存储器写周期、 I/O读周期、 I/O写周期等。 8086总线周期一般由 4个时钟周期组成,习惯上分别称为 T1状态、 T2状态、 T3状态和 T4状态。 总线周期 总线周期 第 5章 8086的系统时序和微机总线 基本的总线周期的时序图 第 5章 8086的系统时序和微机总线 基本的总线周期时序分
3、析 (1)在 T1状态, CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。 (2)在 T2状态, CPU从总线上撤消地址,而使总线的低 16位浮空,置成高阻状态,为传输数据作准备。总线的最高 4位( A19 16)用来输出本总线周期状态信息。在这些状态信息用来表示中断允许状态,当前正在使用的段寄存器名等。 (3)在 T3状态,多路总线的高 4位继续提供状态信息,而多路总线的低 16位( 8088则为低 8位)上出现由 CPU写出的数据或者 CPU从存储器或端口读入的数据。 (4)在有些情况下,外设或存储器速度较慢,不能及时地配合 CPU传送数据。这时,外设或存储器会
4、通过 “ READY”信号线在 T3状态启动之前向 CPU发一个“ 数据未准备好 ” 信号,于是 CPU会在 T3之后插入 1个或多个附加的时钟周期Tw。 Tw也叫等待状态,在 Tw状态,总线上的信息情况和 T3状态的信息情况一样。当指定的存储器或外设完成数据传送时,便在 “ READY”线上发出 “ 准备好 ” 信号, CPU接收到这一信号后,会自动脱离 Tw状态而进入 T4状态。 (5)在 T4状态,总线周期结束 。 第 5章 8086的系统时序和微机总线 需要指出: 只有在 CPU和内存或 I/O接口之间传输数据,以及填充指令队列时, CPU才执行总线周期。可见,如果在一个总线周期之后,
5、不立即执行下一个总线周期,那么,系统总线就处在空闲状态,此时,执行空闲周期。 在空闲周期中,可以包含一个时钟周期或多个时钟周期。这期间,在高 4位上, CPU仍然驱动前一个总线周期的状态信息,而且,如果前一个总线周期为写周期,那么, CPU会在总线低 16位上继续驱动数据信息;如果前一个总线周期为读周期,则在空闲周期中,总线低 16位处于高阻状态。 第 5章 8086的系统时序和微机总线 一个典型的总线周期序列 第 5章 8086的系统时序和微机总线 3指令周期 每条指令的执行包括取指令 ( fetch) 、 译码 ( decode) 和执行( execute) 。 执行一条指令所需要的时间称
6、为 指令周期 ( Instruction Cycle) 。指令周期是由 1个或多个总线周期组合而成 。 8086中不同指令的指令周期是不等长的 。 由于 8086中的指令码最短的只需要一个字节 , 多的有 6个字节 。 对于多字节指令 , 取指 ( 存储器读 ) 就需要多个总线周期;在指令的执行阶段 , 寻址方式 , 需要的总线周期个数也不相同 。 对于 8086CPU来说 , 在 EU执行指令的时候 , BIU可以取下一条指令 。由于 EU和 BIU可以并行工作 , 8086指令的最短执行时间可以是两个时钟周期 , 一般的加 、 减 、 比较 、 逻辑操作是几十个时钟周期 , 最长的为 16
7、位乘除法操作 , 约要 200个时钟周期 。 第 5章 8086的系统时序和微机总线 5.1.2 8086/8088引脚信号 第 5章 8086的系统时序和微机总线 5.2 8086的两种模式 5.2.1 最小模式和最大模式的概念 当把 8086CPU与存储器和外设构成一个计算机系统时 , 根据所连的存储器和外设的规模 , 8086具有两种不同的工作模式 , 即最小模式和最大模式 。 8086到底工作在最大模式还是最小模式 ,由硬件设计决定 。 1 最小模式 当要利用 8086构成一个较小的系统时 , 在系统中只有 8086一个微处理器 , 所连的存储器容量不大 、 片子不多 , 所要连的 I
8、/O端口也不多 , 系统中的总线控制电路被减到最少 。 系统的地址总线可以由 CPU的 AD0 AD15、 A16 A19通过地址锁存器 8282(或74LS373)构成;数据总线可以直接由 AD0 AD15供给 , 也可以通过发送 /接收接口芯片 8286 (或 74LS245)供给 ( 增大总线的驱动能力 ) ;系统的控制总线就直接由 CPU的控制线供给 , 这种组态就称为 8086的最小组态 。 第 5章 8086的系统时序和微机总线 8088最小模式图 第 5章 8086的系统时序和微机总线 2最大模式 最大模式是相对最小模式而言的。最大模式用在中等规模的或者大型的 8086系统中。若
9、要构成的系统较大,就要求有较强的总线驱动能力,这样 8086要通过一个总线控制器 8288来形成各种总线周期,控制信号由 8288供给。在最大模式系统中,总是包含有两个以上总线主控设备,其中一个就是 8086或者 8088微处理器,其他的通常是协处理器,它们是协助微处理器工作的 。 第 5章 8086的系统时序和微机总线 8088最大模式图 第 5章 8086的系统时序和微机总线 5.2.2 8086 CPU引脚功能 1.与工作模式无关的引脚功能 AD15 AD0( 双向 , 三态 ) 为低 16位地址 /数据的复用引脚线。采用分时的多路转换方法来实现对地址线和数据线的复用。在总线周期的 T1
10、状态,这些引线表示作为低 16位地址线,在总线周期的 T2, T3, T 状态,这些引线作为数据总线。可见对复用信号是用时间来加以划分的,所以在 T1状态,必须用锁存器将地址加以锁存,这样在随后的 T状态,即使这些线用作数据线,而地址信息不变。在 DMA方式时,这些引线被浮空,置为高阻状态。 第 5章 8086的系统时序和微机总线 A19/S6 A16/S3( 输出 、 三态 ) 为地址 /状态复用引脚线,在总线周期的 T1状态,这些引线表示为最高 4位地址线 (在读 /写外设端口时,最高 4位地址线不用,故这些引线全为低电平 ),在总线周期的其它 T状态 (T2,T3, TW和 T4)时,这
11、些引线作为状态信息。同样需要锁存器对T1状态出现的最高 4位地址加以锁存。 状态信息 S6总是为低电平。 S5反映当前允许中断标志的状态。 S4与 S3一起指示当前哪一个段寄存器被使用。其规定如表所示。 S4 S3 当前正在使用的 段寄存器名 0 0 ES 0 1 SS 1 0 CS 1 1 DS 第 5章 8086的系统时序和微机总线 /S7(输出,三态 )为高 8位数据总线允许状态复用引脚。在 T1周期时,为 ,与 A0结合使用;在其他 T状态为 S7, 在8086中未赋实际意义。 A0 操作 所用引脚 0 0 从偶地址开始读写一个字 AD15 AD0 1 0 从偶地址开始读写一个字节 A
12、D7 AD0 0 1 从奇地址开始读写一个字节 AD15 AD8 从奇地址开始读写一个字 , 需两个总线周期: 0 1 从奇地址开始读写一个字节 AD15 AD8 1 0 从偶地址开始读写一个字节 AD7 AD0 BHEBHEBHE第 5章 8086的系统时序和微机总线 ( 输出 , 三态 ) 读信号 , 当其有效时 ( 低电平 ) 表示正在对存储器或I/O端口进行读操作 , 若 M/ 为低电平 , 表示读取 I/O端口的数据;若 M/ 为高电平 , 表示读取存储器的数据 。 T2、 T3、 TW状态有效 。 在 DMA方式时,此线被浮置为高阻。 READY( 输入 ) 为准备就绪信号。是由选
13、中的存储器或 I/O端口送来的响应信号,当有效时(高电平),表示被访问的存储器或I/O端口已准备就绪,可完成一次数据传送。 CPU在读操作总线周期的 T3状诚开始处,采样 READY信号,若发现为低电平,则在 T1状态结束后,插入等待状态 TW。 然后在 TW开始处,继续采样 READY信号,直至变为有效(高电平),才进入T4状态,完成数据传送,以结束总线周期。 RDIOIO第 5章 8086的系统时序和微机总线 (输入)为测试信号,低电平有效。 信号和 WAIT指令配合使用。当 CPU执行 WAIT指令时, CPU处于等待状态,并且每隔 5个 T对该信号进行一次测试,一旦检测到 信号为低,则
14、结束等待状态,继续执行 WAIT指令下面的指令。 WAIT指令是使 CPU与外部硬件同步的, 相当于外部硬件的同步信号。 INTR( 输入) 可屏蔽中断请求信号,高电平有效。 CPU在执行每条指令的最后一个 T状态时,去采样 INTR信号,若发现为有效,而中断允许标志 IF又为 1,则 CPU在结束当前指令周期后响应中断请求,转去执行中断处理程序。 TEST TESTTESTTEST第 5章 8086的系统时序和微机总线 RESET( 输入 ) 复位信号 , 高电平有效 。 复位时该信号要求维持高电平至少 4个时钟周期 , 若是初次加电 , 则高电平信号至少要保持50 s。 复位信号的到来 ,
15、 将立即结束 CPU的当前操作 , 内部寄存器恢复到初始状态 , 如表所示 。 当 RESET信号从高电平回到低电平时,即复位后进入重新启动时,便执行从内存 FFFF0H处开始的指令,通常在 FFFF0H存放一条无条件转移指令,转移到系统程序的实际入口处。这样只要系统被复位启动,就自动进入系统程序。 标志寄存器 清零 指令指针 (IP) 0000H CS寄存器 FFFFH 其它寄存器 0000H 指令队列 空 第 5章 8086的系统时序和微机总线 CLK( 输入 ) 时钟信号 , 它为 CPU和总线控制电路提供基准时钟 。 电源和地 VCC为电源引线 , 单一的 5V电源 。 引脚 1和 2
16、0为两条 GND线 , 要求均要接地 。 MN/ ( 输入 ) 为最小最大模式信号。它决定 8086的工作模式。将此引线接电源 5V, 则 8086工作于最小模式;若此引线接地,则8086工作在最大模式。 MX第 5章 8086的系统时序和微机总线 2. 最小模式下的引脚功能 ( Interrupt Acknowledge, 输出 ) CPU向外输出的中断响应信号 , 用于对外部中断源发出的中断请求的响应 , 中断响应周期由两个连续的总线周期组成, 在每个响应周期的 T2, T3和 TW状态 , 均为有效 ( 低电平) , 在第二个中断响应周期 , 外设端口往数据总线上发送中断类型号 , CP
17、U根据中断向量而转向中断处理程序 。 ALE( Address Lock Enable, 输出 ) 地址锁存允许信号 , 高电平有效 。 在总线周期的 T1状态 ,当地址 /数据复用线 AD15 AD0和地址 /状态复用线 A19/S6A16/S3上出现地址信号时 , CPU提供 ALE有效电平 , 将地址信息锁存到地址锁存器中 。 ALE下降沿锁存地址 。 INTAINTA第 5章 8086的系统时序和微机总线 ( Data Enable, 输出 , 三态 ) 数据允许信号 , 在使用 8286或 74LS245数据收发器的最小模式系统中 , 在存储器访问周期 , I/O访问周期或中断响应周
18、期 , 此信号有效 , 用来作为 8286或 74LS245数据收发器的输出允许信号, 即允许收发器和系统数据总线进行数据传送 。 T2 T4有效 。 在 DMA方式时 , 此线被浮置为高阻 。 DT/ ( Data Transmit/Receive, 输出 , 三态 ) 数据发送 /接收控制信号 。 在使用 8286或 74LS245数据收发器的最小模式系统中 , 用 DT/ 来控制数据传送方向 。 DT/ 为低电平 , 进行数据接收 ( CPU读 ) , 即收发器把系统数据总线上的数据读进来 。 当 CPU处在 DMA方式时,此线浮空。 DENRR R第 5章 8086的系统时序和微机总线
19、 M/ ( 输出 , 三态 ) 访问存储器或 I/O端口的控制信号 。 若 M/ 为高电平 , 则访问的是存储器;若 M/ 为低电平 , 则访问的是 I/O端口 。 ( 输出 , 三态 ) 写信号。当其有效时(低电平)表示 CPU正在对存储器或 I/O端口进行写操作,具体对谁进行写操作,由 M/ 信号决定。本信号在总线周期的 T2 T4状态有效。 HOLD( 输入 ) 总线保持请求信号。当系统中 CPU之外的总线主设备要求 使用总线时,通过 HOLD引 脚 向 CPU发出请求,如果 CPU允许让出总线,则 CPU在当前周期的 T4状态或下一总线周期的 T1状态。,由HLDA引 脚 向主设备输出
20、高电平信号作为响应。同时使地址总线、数据总线和相应的控制线处于浮空状态,总线请求主设备取得总线的控制权。一旦总线使用完毕,总线请求主设备 使 HOLD变为低电平, CPU检测到 HOLD为低后,把 HLDA也置为低电平,CPU重新 获得总线的控制权 。 IOWRIOIOIO第 5章 8086的系统时序和微机总线 HLDA( 输出 ) 总线保持响应信号。当 HLDA有效(高电平)时,表示 CPU对总线请求主设备作出响应,同意让出总线,与 CPU相连的三态引脚都被浮置为高阻态。 3. 最大模式下的引脚功能 QS1, QS0( 输出 ) 指令队列状态( Queue Status) 信号。 QS1和
21、QS0的组合提供了总线周期前一个 T状态中指令队列的状态(队列状态只在队列操作执行以后的时钟周期有效),允许外部设备跟踪 8086内部指令队列状况。 QS1和 QS0的组合所代表的指令队列状态输出如下表所示。 第 5章 8086的系统时序和微机总线 QS1 QS0 含 义 0 0 无操作 0 1 从指令队列的第一个字节中取走代码 1 0 队列空 1 1 除第一个字节外 ,还取走了后续字节中的代码 , , 的组合及其对应的操作如下表所示 。 当 CPU处在 DMA传送方式时 , 这三根引线浮置为高阻 。 在总线周期的 T3和 TW状态并且 READY为高电平时, , , 都成为高电平,此时,一个
22、总线操作过程就要结束,另一个新的总线周期还未开始,通常称无源状态。 2S1S0S2S1S0S第 5章 8086的系统时序和微机总线 2S 1S 0S操作过程 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 发中断响应信号 读 I/O端口 写 I/O端口 暂停 取指令 读内存 写内存 无源状态 第 5章 8086的系统时序和微机总线 ( 输出 , 三态 ) 总线封锁信号 。 当本信号有效 ( 低电平 ) 时 , 封锁了系统中别的总线主设备对系统总线的占有 。 输出信号由前缀指令LOCK产生 , 且保持有效直至 LOCK指令的下面一条指令执行后 。
23、在 8086的中断响应时 , 在两个连续响应周期之间 , 信号亦变为有效 , 以防止一个完整的中断过程被外部主设备占用总线而破坏 。 在 DMA操作时, 引脚被浮空。 LOCKLOCKLOCKLOCK第 5章 8086的系统时序和微机总线 / , / ( Request/Grant, 双向 ) 总线请求 /允许信号 。 为两个信号端 , 每个信号端可供 CPU以外的一个总线主设来发出使用总线请求信号 , 以及接收来自 CPU的允许总线请求响应信号 。 类似于最小系统中的 HOLD和 HLDA信号 , 但此两个引脚都是双向的 , 即在同一引脚上送总线请求信号 ( 对 CPU为输入 ) , 后传送允许信号 ( 对 CPU为输出 ) 。 / 的优先权高于 / 。 RQ 0GT RQ 1GTRQ 0GT RQ 1GT第 5章 8086的系统时序和微机总线 5.3 最小模式下的 8086时序图 5.3.1 最小模式下的读周期时序 第 5章 8086的系统时序和微机总线 5.3.2 最小模式下的写周期时序