第05章微处理器总线与时序

Download Report

Transcript 第05章微处理器总线与时序

8086/8088的时钟和总线周期
 时钟周期
CPU的基本时间计量单位,由主频决定
8086的主频为5MHz,1个时钟周期就是200ns
 指令周期(Instruction Cycle)
执行一条指令所需要的时间
 总线周期 (Bus Cycle)
指令周期划分为一个个总线周期。
当CPU要从存储器或输入输出端口存取一个字节就是一
个总线周期
一个最基本的总线周期由4个时钟周期组成
如果想延长总线周期,则在T3和T4之间可插入1~N个等待
周期TW来延长总线周期。
总 线 操 作
读存储器操作
(取指令、取操作数)
写存储器操作
(将结果存放到内存)
读 I/O 端口操作
(取 I/O 端口中的数)
写 I/O 端口操作
总线周期
存储器读周期
存储器写周期
I/O 端口读周期
(往 I/O 端口写数)
I/O 端口写周期
中断响应操作
中断响应周期
例1
执行 MOV BX, AX
取指令
包含:
存储器读周期
例2 执行ADD [ BX ], AX 包含:
1) 取指令
存储器读周期
2) 取 DS:[BX]内存单元操作数存储器读周期
3) 存放结果到 DS:[BX] 内存单元 存储器写周
期
总线周期
TI
T2
CLK
总线周期
空闲周期
T3,TW
//
T4
TI
TI
T2
//
T3
//
缓冲
地址/数据总线
地址/数据总线
地址输出
地址输出
浮空
数据输入
数据输出
图5-2 典型的BIU总线周期波形图
读周期
写周期
8086是16位CPU。它采用高性能的N—沟道,
耗尽型负载的硅栅工艺(HMOS)制造。由于受
当时制造工艺的限制,部分管脚采用了分时复
用的方式,构成了40条管脚的双列直插式封装
最小模式:系统中只有8086一个处理器,所有的控制信号都
是由8086CPU产生(MN/MX=1)。
最大模式:系统中可包含一个以上的处理器,比如包含协处
理器8087。在系统规模比较大的情况下,系统控
制信号不是由8086直接产生,而是通过与8086配
套的总线控制器等形成(MN/MX=0)。
(1) AD15~AD0 (Address Data Bus):
地址/数据复用信号,双向,三态。
T1状态:传送的是地址信号的低16位A15~A0,
然后在ALE信号控制下用锁存器将A15~A0锁存住;
T3 ~ T4状态:AD15~AD0 上传送的是数据信号
D15~D0。
T2状态:读总线周期为浮空状态
写总线周期传送数据信号D15~D0
(2) A19/S6~A16/S3 (Address/Status):
地址/状态复用信号,输出。
在T1状态:
访 问 存 储 器 时 作 地 址 线 A19~A16 用 , 它 们 与
A15~A0一起构成20位物理地址,可访问1MB内存单
元
访问I/O接口时,高4位地址信号无效,I/O端口仅
用A15~A0线,寻址64K个I/O端口。
在T2~T4状态:输出状态信息。
 S6=0
 S5反映中断允许标志的状态
S5=1,允许可屏蔽中断请求
S5=0,禁止可屏蔽中断请求
 S3和S4用来指示当前正在使用的段寄存器
S4
S3
当前正在使用的段寄存器
0
0
ES
0
1
SS
1
0
CS或未使用任何段寄存器
1
1
DS
(3) RD# (Read)
读信号, 三态输出,
当CPU执行读存储器或I/O端口操作的指令时,RD#变
为有效的低电平
到底是读内存还是I/O端口的数据,取决于M/IO#信号
M/IO# =1,读存储器
M/IO#=0,读I/O 端口
例,MOV CX,[BX];指令执行时,
RD#=0,M/IO#=1,读存储器
IN AL,40H;
指令执行时,
RD#=0,M/IO#=0,读I/O端口
(5) WR# (Write)
写信号,三态输出,低电平有效,表示当前CPU正
在写存储器或I/O端口。
(6)M/IO# (Memory/IO )
存储器或I/O端口访问信号,三态输出
M/IO#=1,表示当前CPU正在访问存储器,
M/IO#=0,表示当前CPU正在访问I/O端口。
(7)RESET 复位信号。
由外部输入,高电平有效,至少要保持4个时钟周期。
复位时:
CPU立即中止所有操作,总线无效。
使IP、DS、ES、SS和FLAG清0,CS=FFFFH
指令队列清空
当RESET回到低电平时,系统又进入正常工作状态
由于复位时,CS:IP=FFFFH:0000H,故复位后CUP
将从FFFF0H处开始执行程序,在该处可安排一条转移
指令JMP ,执行检测内存等操作。
(8)INTR( Interrupt Request) 可屏蔽中断请求
信号,由外部输入,电平触发,高电平有效。
INTR为高电平时,表示外部设备向CPU发出中
断请求,
CPU在每条指令的最后一个时钟周期对INTR进
行采样,若INTR=1,并且当中断允许标志IF=1
时,则暂停执行下条指令转入中断响应周期。
NMI( Non—Maskable Interrupt Request)
不可屏蔽中断请求信号。由外部输入,边沿触
发,正跳沿有效。
CPU一旦测试到NMI有效时,待当前指令执行完
进入类型为2的不可屏蔽中断
这类中断不受IF标志的影响,不能用软件屏蔽
(9)INTA# (Interrupt Acknowledge) 中断响应信号
当外设从INTR引脚向CPU发出中断请求信号,CPU响应后就
进入中断响应总线周期
在中断响应周期的T2~T4状态,CPU从INTA#引脚向外设连
续发出两个负脉冲(即INTA#信号)
第一个INTA#信号通知外设,CPU已响应中断
第二个INTA#信号将中断类型码置于数据总线上,以便转
入相应中断服务程序
(10)ALE(Address Latch Enable)
地址锁存使能信号,输出,高电平有效。
用作地址锁存器8282/8283的选通信号
T1状态ALE为高电平,允许AD15~AD0,
A19/S6~A16/S3输出地址信号
ALE的下降沿将20位地址锁存住,使上述复用总线
可传送数据或状态信号,从而使地址/数据信号分离
,地址/状态信号分离
(11)READY 准备就绪信号。
由外部输入,高电平有效,表示CPU访问的存储器或I/O
端口己准备好传送数据。当READY无效时,要求CPU插
入一个或多个等待周期Tw,直到READY信号有效为止。
(12)BHE# /S7 (Bus High Enable/Status):
数据总线高8位使能和状态复用信号,输出。
在总线周期T1状态,BHE#有效,表示数据线上
高8位数据有效。在T2~T4状态BHE # /S7 输出状
态信息S7。S7在8086中未定义。
8086系统的存储体结构
8088系统的存储体结构
(13)DEN# (Data Enable)
数据允许信号,输出,三态,低电平有效。用于
数据总线驱动器的控制信号。
(14) DT/R#(Data Transmit/Receive):
数据驱动器数据流向控制信号,输出,三态。在
8086系统中,通常采用8286或8287作为数据总线
的驱动器,用DT/R#信号来控制数据驱动器的数据
传送方向。
当DT/R#=1时,CPU向外部发送数据;
DT/R#=0时,CPU接收外部送来的数据。
M/IO RD
WR
DT/R
总线操作
指令举例
0
0
1
0
读I/O接口
IN AL,DX
1
0
1
0
读存储器
MOV AX,[1000H]
0
1
0
1
写I/O接口
OUT DX,AL
1
1
0
1
写存储器
MOV [2000H],AL
X
0
1
1
非法操作
无
X
1
0
0
非法操作
无
X
1
1
X
无读写操作
无
(15)HOLD(Hold Request)
总线请求信号。由外部输入,高电平有效器向
CPU请求使用总线。
(16)HLDA(Hold Acknowledge)
共享总线的处理总线请求响应信号。向外部输出,
高电平有效。
(17)TEST#
测试信号。由外部输入,低电平有效。
当CPU执行WAIT指令时(WAIT指令是用来使处理器
与外部硬件同步),每隔5个时钟周期对TEST进行一
次测试,若测试到该信号无效,则CPU继续执行
WAIT指令,即处于空闲等待状态;当CPU测到
TEST输入为低电平时,则转而执行WAIT的下一条
指令。由此可见,TEST对WAIT指令起到了监视的
作用。
(18)MN/MX#(Minimum/Maximum Mode Control):
最大最小模式控制信号,输入。
MN/MX#=1(+5V),CPU工作在最小模式。
MN/MX#=0(接地),CPU则工作在最大模式。
(19) GND 地。
(20) VCC
电源,接+5V。

当8086CPU工作在最大模式系统时,有8个管脚
重新定义 。
(1)S2#、S1#、S0#(Bus Cycle Status,最小模式为
M/IO#、D/TR#、DEN#):
总线周期状态信号,输出。这三个信号的组合表示当前
总线周期的类型。在最大模式下,由这三个信号输入给总
线控制器8288,用来产生存储器、I/O的读写等相关控制信
号。如下表:
S2#
0
0
0
0
1
1
1
1
S1# S0#
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
CPU状态
8288命令
INTA#
中断响应
IORC#
读I/O端口
写I/O端口 IOWC# AIOWC#
暂停
无
MRDC#
取指令
MRDC#
读存储器
写存储器 MWTC# AMWC#
无作用
无
(2)LOCK# 封锁信号。
三态输出,低电平有效。LOCK有效时表示CPU
不允许其它总线主控者占用总线。这个信号由软件
设置。当在指令前加上LOCK前缀时,则在执行这
条指令期间LOCK保持有效,即在此指令执行期间,
CPU封锁其它主控者使用总线。
(3)QS1、QS0(Instruction Queue Status,最小
模式为ALE、INTA#):
指令队列状态信号,输出。QS1,QS0组合起来表
示前一个时钟周期中指令队列的状态,以便从外部
对芯片的测试。
QS1
QS0
编码含义
0
0
无操作
0
1
从队列中取第一个字节
1
0
队列已空
1
1
从队列中取后续字节
(4)RQ#/GT0# ,RQ#/GT1# (Request/Grant)
总线请求信号请求/允许信号。双向,低电平有
效,当该信号为输入时表示其它主控者向CPU请求
使用总线;当为输出时表示CPU对总线请求的响应
信号。两条线可同时与两个主控者相连,同
时,RQ#/GT0#优先级高于RQ#/GT1#。
VCC
8284 时钟
RES
RDY
GND
CLK
READY
RESET
MN/ MX
M/ IO
INTA
RD
WR
VCC
等待状态
发生器
DT/ R
DEN
8086 CPU
ALE
GND
AD0~AD15
A16~A19
BHE
STB
OE
地址总线
8282
锁存器
(3)
ADDR/DATA
T
OE
数据总线
8286
收发器
(2)
(a) 8086 系统
8086最小模式下的基本配置
DATA
8088最小模式下的基本配置
VCC
8284 时钟
RES
RDY
GND
CLK
READY
RESET
MN/ MX
IO/ M
INTA
RD
WR
VCC
等待状态
发生器
DT/ R
DEN
8088 CPU
ALE
GND
AD0~AD7
A8~A19
ADDR/DATA
STB
OE
地址总线
8282
锁存器
(2或3)
T
OE
数据总线
8286
收发器
(1)
(b) 8088 系统
DATA
8086 读/写控制信号对应的总线操作类型
M/IO
RD
WR
DT/R
总线操作
指令举例
0
0
1
0
读I/O接口
IN AL,DX
1
0
1
0
读存储器
MOV AX,[1000H]
0
1
0
1
写I/O接口
OUT DX,AL
1
1
0
1
写存储器
MOV [2000H],AL
X
0
1
1
非法操作
无
X
1
0
0
非法操作
无
X
1
1
X
无读写操作
无
8088 读/写控制信号对应的总线操作类型
总线操作
1
SS0
0
0
1
1
读I/O接口
1
1
0
写I/O接口
1
1
1
暂停
0
0
0
取指令
0
0
1
读存储器
1
0
0
写存储器
1
0
1
无操作
DT/R
M/IO
0
中断响应
1.8282地址锁存器
DI0
DI0
DI1
DI2
DI3
DI4
DI5
DI6
DI7
OE
GND
1
2
3
4
5
6
7
8
9
10
8282
20
19
18
17
16
15
14
13
12
11
图5-5
VCC
DO0
DO1
DO2
DO3
DO4
DO5
DO6
DO7
STB
DO0
DQ
CLK
DI1
DI2
DI3
DI4
DI5
DI6
DI7
DO1
DO2
DO3
DO4
DO5
DO6
DO7
STB
OE
8282地址锁存器引脚图与逻辑图
8282用来作为地址锁存器,用ALE信号作为8282的选通脉冲STB输入,这样
就能在总线周期的第一个时钟周期从地址/数据、地址/状态总线将地址信息锁
存于8282中,从而保证了整个总线周期内存储器和I/O接口芯片能获得稳定的
地址信息。
2.8286总线收发器
A0
B0
A0
A1
A2
A3
A4
A5
A6
A7
OE
GND
1
2
3
4
5
6
7
8
9
10
8286
20
19
18
17
16
15
14
13
12
11
VCC
B0
B1
B2
B3
B4
B5
B6
B7
T
A1
A2
A3
A4
A5
A6
A7
OE
图5-6
B1
B2
B3
B4
B5
B6
B7
T
操作
0
1
数据从A0~A7到B0~B7
0
0
数据从B0~B7到A0~A7
1
X
A0~A7,B0~B7均三态
OE
T
8286总线收发器引脚图与逻辑图
8286用作数据总线驱动器,其T端同 DT/R连接,用于控制数据传送方向
,而 OE 端同 DEN要连接,以保证只在CPU需要访问存储器I/O端口时
才允许数据通过8286。
VCC
8284 时钟
RES
RDY
GND
CLK
READY
RESET
MN/ MX
S0
S1
S2
等待状态
发生器
GND
未接
LOCK
CLK
MRDC
S0
MWTC
S1
AMWC
S2 8288
IORC
DEN
IOWC
DT/ R
AIOWC
ALE
INTA
未接
未接
8086 CPU
GND
AD0~AD15
A16~A19
BHE
ADDR/DATA
STB
OE
地址总线
8282
锁存器
(3)
T
OE
数据总线
8286
收发器
(2)
(a) 8086 系统
8086最大模式下的基本配置
DATA
VCC
8284 时钟
RES
RDY
GND
CLK
READY
RESET
MN/ MX
S0
S1
S2
等待状态
发生器
GND
未接
LOCK
CLK
MRDC
S0
MWTC
S1
S2 8288 AMWC
IORC
DEN
IOWC
DT/ R
AIOWC
ALE
INTA
未接
未接
8088 CPU
GND
AD0~AD7
A8~A19
ADDR/DATA
STB
OE
地址总线
8282
锁存器
(2或3)
T
OE
数据总线
8286
收发器
(1)
(b) 8088 系统
8088最大模式下的基本配置
DATA
S 0 ,S1
,S 2 总线周期状态信号用来指示当前总线周期所进行
的操作类型
S0
S1
S2
总线操作类型
0
0
0
中断响应
INTA
0
0
1
读I/O端口
IORC
0
1
0
写I/O端口
IOWC 、 AIOWC
0
1
1
暂停
无
1
0
1
取指令
1
0
1
读存储器
MRDC
MRDC
1
1
0
写存储器
MWT C 、 AMWC
1
1
1
无效状态
无
8288命令信号
8288总线控制器
S0
S1
S2
命令
信号
发生器
状态
译码器
MRDC
MWTC
AMWC
IORC
IOWC
AIOWC
INTA
IOB
CLK
S1
DT/R
ALE
AEN
CLK
AEN
CEN
IOB
控制
信号
发生器
控制
逻辑
DT/R
DEN
MCE/ PDEN
ALE
MRDC
AMWC
MWTC
GND
(a)
1
2
3
4
5
6
7
8
9
10
8288
(a)
图5-8
8288总线控制器逻辑图与引脚图
(a) 逻辑图;(b)引脚图
20
19
18
17
16
15
14
13
12
11
VCC
S0
S2
MCE/ PDEN
DEN
CEN
INTA
IORC
AIOWC
IOWC
系统的复位和启动操作
总线操作
暂停操作
中断操作
总线保持或总线请求/允许操作
复位时各寄存器值
CLK
RESET输入
CPU复位时各寄存器值
内容
标志位
清除
指令指针(IP)
0000H
CS寄存器
FFFFH
DS寄存器
0000H
SS寄存器
标志位
ES寄存器
0000H
指令队列
空
内部RESET
浮空
总线
不作用状态
图5-9
复位时序
在复位状态下,CPU内部的各寄
存器被置为初态。代码段寄存器
CS和指令指针寄存器IP分别被初
始化为FFFFH和0000H
8086复位后重新启动时,便从内
存的FFFF0H处开始执行指令。
1.最小模式下的总线读操作
2.最小模式下的总线写操作
3.最大模式下的总线读操作
4.最大模式下的总线写操作
5.总线空操作
TW(1~n)
CLK
M / IO
A19/S6~
A16/S3
BHE/S 7
AD15~AD0
T1
T2
T3
//
高电平为读内存,低电平为读I/O
地址输出
状态输出
BHE 输出
地址输出
数据输入
ALE
RD
D T /R
DEN
采样
WAIT
READY
图5-10
READY
8086总线读周期时序(最小模式)
T4
 T1状态:
 CPU根据执行的是访问存储器还是访问I/O端口的指令,首先
在 M/IO 线上发有效电平。
 从地址/数据复用线AD15~AD0和地址/状态复用线A19/S6~
A16/S3发存储器单元地址(20位)或发I/O端口地址(16位)。
 锁存地址信号,CPU在T1状态从ALE引脚上输出一个正脉冲
作8282地址锁存器的地址锁存信号。
 为实现对存储体的高位字节库(即奇地址库)的寻址,CPU
在T1状态通过 BHE/S7引脚发面有效信号(低电平)。
 为了控制数据总线传输方向,使 DT /R 变为低电平,以控制
数据总线收发器8286为接收数据。
T2状态:
 (1)地址信号消失,此时AD15~AD0进入高阻缓冲期,
以便为读入数据作准备。
 (2)A19/S6~A16/S3及BHE/S7线开始输出状态信息S7
~S3,持续到T4。前面已指出,在8086系统中,S7是未
赋实际意义的。
 (3)DEN 信号开始变为低电平(有效),此信号是用来开放
8286总线收发器的。这样,就可以使8286提前在T3状态
,即数据总线上出现输入数据前获得开放。DEN维持到T4
的中期结束有效。
 (4)RD 信号开始变为低电平(有效)。此信号被接到系
统中所有存储器和I/O端口。用来打开数据输出缓冲器,
以便将数据送上数据总线。
 (5)DT /R 继续保持低电平有效的接收状态。
T3状态:
 经过T1、T2后,存储器单元或I/O端口把数据送上数据总
线AD15~AD0,以供CPU读取。
TW状态:
 当系统中所用的存储器或外设的工作速度较慢,不能在基
本总线周期规定的四个状态完成读操作时,它们将通过
8284A时钟产生器给CPU送一个READY信号。
 CPU在T3的前沿(下降沿)采样READY。
• 当采到的READY=0时(表示“末就绪”),就会在T3和T4之间插入
等待状态TW,TW可以为1个或多个。
T4状态:
 在T4状态和前一状态交界的下降沿处,CPU对数据总线
上的数据进行采样,完成读取数据的操作。
CLK
M / IO
A19/S6~
A16/S3
BHE/S 7
AD15~AD0
T1
T2
TW(1~n)
T3
//
高电平为读内存,低电平为读I/O
地址输出
状态输出
BHE 输出
地址输出
数据输出
ALE
WR
DT/R
DEN
采样
WAIT
READY
图5-11
READY
8086总线写周期时序(最小模式)
T4
 8088和8086的总线周期时序波形基本上是一致的,
所不同的只有以下几点:
 (1)由于8088只有8位数据总线,因此,地址线A15
~AD8不是分时复用线。这些线上的地址信号在整个
读/写周期中均保持。
 (2)地址/数据的分时复用线只有AD7~AD0,其操
作时序同8086的AD15~AD0。
 (3)由于8088的34号引脚不是 BHE/S7,而是 SS 0 ,
因此8088从T1开始就往 SS 0 线上送出低电平有效信
号,一直维持到T4。
CLK
S2 ~ S0
A19/S6~A16/S3
BHE/S 7
AD15~AD0
T1
T2
T3
TW(1~n)
//
T4
无源状态
S2 ~ S0
BHE A19 ~ A16
S7~S3
地址输出
数据输入
8288输出ALE*
MRDC或 IORC *
DT/ R *
DEN *
采样
WAIT
READY
图5-12
READY
8086总线读周期时序(最大模式)
DT /R ,MRDC或 IORC和DEN
 图中带*号的信号――ALE,
都是由8288根据CPU的 S 0 ,S 1 ,S 2 的组合产生的
T1
CLK
S2 ~ S0
T2
TW(1~n)
T3
//
无源状态
S2 ~ S0
A19/S6~A16/S3
BHE A19 ~ A16
BHE/S 7
AD15~AD0
S7~S3
数据输出
地址输出
8288输出ALE*
AMWC或AIOWC *
MWTC或IOWC *
DT/ R *
高电平
DEN *
采样
WAIT
READY
图5-13
READY
8086总线写周期时序(最大模式)
T4
CPU只有在和存储器或I/O端口之间交
换数据,或装填指令队列时,才由总
线接口部件BIU执行总线周期,否则,
BIU将进入总线的空闲周期TI。
当CPU执行一条暂停指令HLT(Halt)时,就停
止一切操作,进入暂停状态。暂停状态一直保持
到发生中断或对系统进行复位时为止。在暂停状
态下,CPU可接收HOLD线上(最小模式下)或
RQ/ GT 线上(最大模式下)的保持请求。当保持
请求消失后,CPU回到暂停状态。
第一个中断响应周期
T1
T2
T3
三个空闲状态
T4
TI
TI
第二个中断响应周期
TI
T1
T2
T3
T4
CLK
ALE
INTA
AD7~AD0
中断向量
图5-14
中断响应周期时序
 第一个中断响应周期
 CPU从 INT A 引脚上向外设端口(一般是向8259A中断控制器)先发一个负
脉冲,表明其中断申请已得到允许,插入3个或2个空闲状态TI(对8088
则不需插入空闲周期)
 第二个中断响应周期
 从 INT A 发第二个负脉冲 ,接收外设的中断类型码
 当一个系统中具有多个总线主模块时,除CPU之
外的其它总线主模块为了获得对总线的控制,需
向CPU发出总线保持请求情号,当CPU接到此请
求信号,并在同意让出总线时,就向发该请求的
主模块发响应信号。
1.最小模式下的总线保持请求/保持响应操作
T4或TI
//
CLK
//
HOLD
//
HLDA
A15~AD 0,
A19/S6~A 16/S3,
//
RD、WR、INTA、
M/ IO、DEN、DT/ R
图5-15
总线保持请求/保持响应时序
//
RQ/ GT
请
求
RQ
A15~AD0,
//
允
许
//
释
放
GT
//
A19/S6~A16/S3,
//
//
三态
//
S0~S2,RD,
LOCK,BHE/S7
图5-16
最大模式下的总线请求/允许/释放时序