第七章 8086CPU的总线操作与时序
1.时序概念,
时钟周期 (T状态周期 )
机器周期 (总线周期 )
指令周期空闲状态周期 TI
等待周期 Tw
2.典型总线周期存储器及外设读写周期中断响应周期总线请求 /响应周期第七章 8086CPU的总线操作与时序
1,有利于我们深入了解指令的执行过程
2,有利于我们在编程时适当选用指令以缩短指令的存贮空间和指令执行时间
3,CPU与存贮器或 I/O端口连接时,要考虑如何实现时序上的配合
4,微型机用于实时控制时,必须估计或计算 CPU
完成操作所需时间,以便与控制过程配合举例第七章 8086CPU的总线操作与时序
1.时钟周期 (T状态周期 Clock Cycle)
T1 T2 T3 T4
7.1 时钟周期、总线周期和指令周期微处理器内部操作的最基本时钟单元,宽度为时钟信号相邻两上升沿之间的时钟间隔 。
第七章 8086CPU的总线操作与时序
2.机器周期 (总线周期 Bus Cycle)
微机处理器 BIU与外部电路之间进行一次数据传送操作所占用的时间,包含若干个时钟周期 。
T1 T2 T3 T4 TI T1 T2 T3 T4
总线周期 总线周期地址 数据 地址AD
CLK
数据第七章 8086CPU的总线操作与时序
3.指令周期 (Instruction Cycle)
执行一条指令所需要的时间,由一至若干个机器周期组成 。
第七章 8086CPU的总线操作与时序
7.2 系统的复位操作
8086CPU的 RESET引脚是用于系统复位的,
可完成系统复位和启动操作,复位时,CPU内部的寄存器状态为:标志寄存器 FR,指令指针
IP,段寄存器 DS,SS,ES清零,指令队列清空,
段寄存器 CS置为 FFFFH。 实际上,除了 CS外,
所有内部寄存器都清零 。 启动后,从内存的
FFFF0H开始执行程序,FFFF0H处一般存放一条无条件转移指令,转向系统程序的入口地址 。
第七章 8086CPU的总线操作与时序
8086CPU复位时序图至少四个时钟周期
CLK
REST
内部 REST
控制线
ALE、
HLDA
地址线第七章 8086CPU的总线操作与时序
7.3 总线操作与时序
Intel 8086微处理器采用总线复用操作方式
8086的 16位数据总线和地址总线的低 16位是共用的,典型的总线周期如图
T1 T2 T3 T4 TI T1 T2 T3 T4
总线周期 总线周期地址 数据 地址AD
CLK
数据第七章 8086CPU的总线操作与时序
在没有插入等待时钟周期 TW的情况下,总线周期由 4个时钟周期组成,即图中 T1,T2,T3,T4
在 T1期间 CPU把存储器或外设的地址放到总线上,
这些地址信息由 ALE控制锁存到地址锁存器中,
以便使总线上可以传送数据信息 。
T2期间分时复用的地址 /数据总线处于高阻态,以便为读入或写出数据作准备 。
在 T3和 T4期间,读或写的数据出现在总线上,以使完成读或写的操作 。
第七章 8086CPU的总线操作与时序等待周期 TW:
T1 T2 T3 TW
一个总线周期数据输入地址输出
T4
READY
地址总线
READY信号的定时波形如果在 T3周期结束之前,存储器或外设未准备好数据传送,就要启动输入 CPU的 READY线使之变低电平,从而在 T3和 T4之间插入一个或多个 TW等待周期,
直到 READY变高,转入 T4周期,完成读写操作 。
第七章 8086CPU的总线操作与时序空闲状态周期 TI:
8086执行部件 EU和总线接口部件 BIU在一定程度上独立并行工作,只有当 BIU为了填满指令队列或 EU执行指令需要与外部交换数据时,申请一个总线周期,此时 BIU才执行一个总线周期 。 因此在两个总线周期之间,可能会存在一些 BIU空闲时钟周期 。
第七章 8086CPU的总线操作与时序一,8086读总线周期
T1 T2 T3 T4
一个总线周期
CLK
A19~A16 S6~S3A19/S6 ~ A16/S3
BHE/S7
DATA INAD15 ~ AD0
ALE
低 =I/O,高 =MM/IO
RD
DT/R
DEN
A15~A0
举例第七章 8086CPU的总线操作与时序二,8086具有等待状态的读总线周期
T1 T2 T3 TW
一个总线周期
CLK
A19~A16A19/S6 ~ A16/S3BHE/S
7
DATA INAD15 ~ AD0
ALE
低 =I/O,高 =MM/IO
RD
DT/R
DEN
A15~A0
T4
READYWAIT
READY
S6~S3
第七章 8086CPU的总线操作与时序三,8086写总线周期
T1 T2 T3 T4
一个总线周期
CLK
A19 ~ A16 S6 ~ S3A19/S6 ~ A16/S3BHE/S
7
DATA OUTAD15 ~ AD0
ALE
高 =I/O,低 =MM/IO
WR
DT/R
DEN
A15~A0
第七章 8086CPU的总线操作与时序四,8086具有等待状态的写总线周期
T1 T2 T3 T4
一个总线周期
CLK
A19 ~ A16 S6 ~ S3A19/S6 ~ A16/S3BHE/S
7
DATA OUTAD15 ~ AD0
ALE
高 =I/O,低 =MM/IO
WR
DT/R
DEN
A15~A0
TW
READYWAITREADY
第七章 8086CPU的总线操作与时序五,8086最小模式下的总线保持
~~
~~
~~
~~
T4 OR TI
CLK
HOLD
HLDA
AD15 ~ AD0
A19/S6 ~ A16/S3
RT/D,DE N,IOM/
,I NT A,WR,RD
第七章 8086CPU的总线操作与时序六,8086中断响应周期
T1 T2 T3 T4 T1 T2 T3 T4
向量类型
ALE
AD0 ~ AD15
INTA
DEN
CLK
第一个中断响应周期 第二个中断响应周期第七章 8086CPU的总线操作与时序
eg,使 AX清零
MOV AX,0 三字节 4T
SUB AX,AX 二字节 3T
XOR AX,AX 二字节 3T
第七章 8086CPU的总线操作与时序
eg,MOV AX,[2000H]
设 DS=1000H,[12000H]=67H,[12001H]=45H
T1 T2 T3 T4
一个总线周期
CLK
A19~A16 S6~S3A19/S6 ~ A16/S3
BHE/S7
DATA INAD15 ~ AD0
ALE
M/IO
RD
A15~A0
0010 0000 0000 0000
0001
4567H
BHE为低
M/IO为高
AX=4567H
第七章 8086CPU的总线操作与时序
在 T1的前半周时,CPU把存储器或外设端口地址放入 AD0~AD15和 A16/S3~A19 /S6 。
M/IO信号有效,如果是存储器读,则 M/IO线为高电平;如果是外设读操作,则 M/IO为低电平 。 该信号从 T1开始维持到 T4结束,
BHE/S7信号也在 T1时刻选通,以指明高 8位数据总线上的信息是可用的 。
地址和 BHE/S7输出同时,ALE变为高电平,大约经过半个周期,在 T1后半周变为低电平,其下降沿使地址信息锁存到锁存器中 。
DT/R输出为低电平,表明此时进行了是总线读操作 。
第七章 8086CPU的总线操作与时序
RD 信号变为低电平,指示本周期进行读操作 。
DEN 信号变为低电平,该信号通常用于控制双向数据总线缓冲器的数据传输操作 。
上述 RD 和 DEN 信号维持到 T4开始 。
在 T2的前半周时,结束地址信息的输出,
AD0~AD15 变 为 高 阻 态,A16/S3~A19 / S6 和
BHE/S7输出周期状态信息,并维持到 T4。
第七章 8086CPU的总线操作与时序在基本总线周期 T3状态,内存单元或
I/O端口将数据送到数据总线上 。 CPU通过
AD15~AD0接收数据 。
第七章 8086CPU的总线操作与时序在 T4状态和前一个状态交界的下降沿处,CPU对数据总线进行采样,从而获得数据 。
第七章 8086CPU的总线操作与时序
CPU在 T3状态前沿对 READY信号进行采样,如果 READY为低,即说明存储器和外设尚未准备好,CPU就会在 T3和 T4之间自动插入一个或几个等待状态 TW,CPU在某每个 TW前沿处对 READY信号进行采样,直至 CPU接收到高电平的 READY信号后,再把 TW的状态执行完,脱离 TW,进入 T4。
第七章 8086CPU的总线操作与时序
在 T1的前半周时,CPU把存储器或外设端口地址放入 AD0~AD15和 A16/S3~A19 / S6 。
M/IO信号有效,如果是存储器写,则 M/IO线为高电平;如果是外设写操作,则 M/IO为低电平 。
该信号从 T1开始维持到 T4结束,
BHE/S7信号也在 T1时刻选通,以指明高 8位数据总线上的信息是可用的 。
地址和 BHE/S7输出同时,ALE变为高电平,大约经过半个周期,在 T1后半周变为低电平,其下降沿使地址信息锁存到锁存器中 。
DT/R输出为高电平,表明此时进行了是总线写操作 。
第七章 8086CPU的总线操作与时序
WR信号变为低电平,指示本周期进行写操作 。
DEN 信号变为低电平,该信号通常用于控制双向数据总线缓冲器的数据传输操作 。
上述 RD 和 DEN 信号维持到 T4开始 。
地址信号发出之后,CPU立即从 AD0~AD15发出要写到存储单元或 I/O端口的数据,A16/S3~A19 /
S6 和 BHE/S7输出周期状态信息,并维持到 T4
状态 。
第七章 8086CPU的总线操作与时序在 T3状态,CPU继续提供状态信息和数据,并且继续维持 WR,M/IO及 DEN信号为有效电平 。
第七章 8086CPU的总线操作与时序在 T4状态,CPU认为存储器或外设端口已经完成数据的写入,因而,数据从数据总线上被撤除,各控制信号线和状态信号线也进入无效状态 。 此时 DEN信号总是进入高电平,从而使总线收发器不工作 。
第七章 8086CPU的总线操作与时序如果系统中设置 READY电路,并且 CPU
在 T3状态的一开始未收到,准备好,信号,那么,会在状态 T3和 T4之间插入一个或几个等待周期 。 直到在某个 TW的前沿处,CPU采样到
,准备好,信号后,便将 TW状态作为最后一个等待状态 。 执行完 TW状态后进入 T4状态 。 在
TW状态,总线上所有控制信号的情况和 T3时一样,数据总线上也仍然保持要写入的数据 。
第七章 8086CPU的总线操作与时序
在每个时钟脉冲的上升沿,CPU会对 HOLD引脚信号进行采样 。
如果检测 HOLD处于高电平状态,并且在允许让出总线周期的 T4状态或者空闲状态 TI之后的下一个时钟周期,CPU把 HLDA变为有效,让出总线控制权 。
如果发出请求设备将 HOLD变为低电平,CPU
收回总线控制权 。
CPU一旦让出总线控制权,便使地址 /数据引脚,地址 /状态引脚以及控制信号引脚 RD、
WR,INTA,M/IO,DEN及 DT/R都处于浮空状态 。
第七章 8086CPU的总线操作与时序在第一个中断响应总线周期,处理器使地址 /数据线处于高阻态,并从 T2开始发出中断响应 INTA且一直维持到 T4开始,用来通知外设,处理器已响应中断请求 INTR。
第七章 8086CPU的总线操作与时序第二个中断响应总线周期仍从 T2开始到
T4发出 INTA信号,在第二个总线周期的 T2到
T4周期间,数据总线上可以放置中断矢量,
并且 DEN为低电平,允许 CPU读入数据总线上的中断矢量 。