2024年1月1日发(作者:)
第4章 8086/8088的总线与时序
4.1 8086/8088的引线及功能
8086是16位微处理器;8088是准16位微处理器,它对外的数据线是8位的。它们的地址线是20位的。8086/8088均为40条引线、双列直插式封装。它们的40条引线排列如图4-1所示。为了能在有限的40条引线范围内进行工作,CPU内部设置了若干个多路开关,使某些引线具有多种功能,这些多功能引线的功能转换分两种情况:一种是分时复用,在总线周期的不同时钟周期内引线的功能不同;另一种是按组态来定义引线的功能.
用8088微处理器构成系统时,根据系统所连接的存储器和外设的规模,8088可以有两种不同的组态。在不同组态时有些引线的名称及功能不同。
最小组态:当用8088微处理器构成一个较小的系统时,所连的存储器容量不大,I/O端口也不多,若把MN/MX 引线接电源(+5V),则8088处于最小组态;
最大组态:若构成的系统较大,要求有较强的驱动能力,要通过一个总线控制器来产生各种控制信号。把引线MN/MX接地,则8088处于最大组态。
所有的微处理器都有以下几类引线用来输出或
接收各种信号:
地址线、
数据线、
控制线和状态线、
电源和定时线。
8086/8088的40条引线包括以上4种信号,下面介绍各条引线的功能。
4.1.1的地址和数据线
AD7~AD0:低8位地址/数据线(输入/输出,三态)。
8088数据线是8位的,地址线是20位的,为减少引线的数量于是在8088 内部采用一些多路开关,把低8位地址线和8位数据线分时使用这些引线。通常当CPU访问存储器或外设时,先要送出所访问单元或外设端口的地址,然后才是读写所需的数据,地址和数据在时间上是可区分的。只要在外部电路中用一个地址锁存器,把在这些线上先出现的地址锁存下来就可以了。
A15~A8:地址线(输出,三态)。这8条地址线是在8088内部锁存的,在访问存储器或外设时输出8位地址。
A19~A16/S6~S3:地址/状态线(输出,三态)。这4条引线用于输出存储器的最高4位地址A19~A16,也分时用于S6~S3状态输出。故这些引线也是多路开关的输出,
访问存储器时这些线上输出最高4位地址,这4位地址也需锁存器锁存。
访问外设时,这4位地址线不用。
在存储器的读/写和I/O操作时这些线又用来输出状态信息:
S6始终为低;S5为标志寄存器的中断允许标志的状态位;S4和S3用以指示是哪一个段寄存器正在被使用,其编码和使用的段寄存器如下:
00为ES,01为SS,10为CS,11为DS。
4.1.2 8088的控制和状态线
8088的控制和状态线可以分成两种类型:一类是与
8088的组态有关的引线,另一类是与8088的组态无关的引线。
1.最小组态下的引线
IO/M:输入输出/存储器选择信号(输出,三态)。
这条引线用以区分是访问存储器还是访问I/O端口。若此线输出低电平,则为访问存储器;若此线输出高电平,则为访问I/O端口。
WR:写信号(输出,三态)。此信号低电平有效,是8088在执行存储器或I/O端口的写操作时输出的一个选通信号。
INTA(interrupt acknowledge):中断响应信号(输出)。此信号低电平有效,是8088响应中断请求信号引线INTR来的外部中断时输出的中断响应信号,它可以用作中断向量类型码的读选通信号。
ALE(address latch enable):地址锁存允许信号(输出)。此信号高电平有效,是8088输出的一个选通脉冲,把在AD7~AD0和A19/S6~A16/S3上出现的地址锁存到地址锁存器中。
DT/R (data transmit/receiver):数据发送/接收信号(输出,三态)。此信号为高电平,则8088发送数据;此信号为低电平,则8088接收数据。在最小组态的系统中,为了增加数据总线的驱动能力,将AD7~AD0通过双向驱动器加以驱动,这时就需要用该信号来确定双向驱动器的数据传送方向。
DEN (data enable):数据允许信号(输出,三态)。该信号低电平有效。在使用双向驱动器以增强数据
总线驱动能力的最小组态系统中,该信号用作双向驱动器的输出允许信号。
SSO(system status output):系统状态输出信号(输出)。该信号与IO/M、DT/R两信号一起,反映8088所执行的操作。
HOLD、HLDA: 保持请求(输入)和保持响应信号(输出)。这两个信号均为高电平有效。它们用于直接存储器存取(DMA)操作。当系统其他总线设备要求占用总线时,就向8088发出HOLD信号,请求接管3总线。8088收到该信号后,就发出HLDA信号,同时使所有的3态总线处于高阻或浮空状态。此时由发出HOLD信号的总线设备控制总线,系统进行DMA传送。当DMA传送完后,接管总线的总线设备撤除HOLD信号。8088也撤除HLDA信号,退出保持状态,又控制3总线,接着执行原来的操作。
2. 最大组态下的引线
S2、S1、S0:3个状态信号(输出,三态)。8088在最大组态下没有、、IO/M、等对存储器和I/O端口进行读/写操作的直接控制信号输出。这些读写操作信号,由总线控制器8288根据8088提供的这3个状态信号译码后输出。3个状态信号与CPU所执行的操作如表4-1所列。
表4-1 状态信号与对应的操作
S2 S1 S0 操 作
0 0 0 中断响应
0 0 1 读I/O端口
0 1 0 写I/O端口
0 1 1 暂停(HALT)
1 0 0 取 指
1 0 1 读存储器
1 1 0 写存储器
1 1 1 无 操 作
RQ
/GT0 、RQ/GT1 (request/grant):请求/允许信号(输入/输出)。这两个信号低电平有效,是最大组态下的DMA请求/允许信号。这两个信号是双向的,即向CPU的总线请求与CPU的总线允许信号均由请求/允许信号线传送。若RQ
/GT0和RQ/GT1同时有总线请求,则RQ/GT0的请求首先被允许,即RQ
/GT0的优先权高于RQ/GT1。这两条引线的内部有一个上拉电阻,若不用DMA,可以不用连接它们。
LOCK:锁定信号(输出,三态)。低电平有效。该信号由前缀指令“LOCK”使其有效,且在下一条指令完成之前保持有效。当其有效时,别的总线设备不能取得对系统3总线的控制权。该信号被送到总线
仲裁电路,使在此信号有效期间的指令执行过程中不发生总线控制权的转让,保证这条指令连续地被执行完。
QS0、QS1(queue status):队列状态信号(输出)。这两个信号用于提供8088指令队列状态。指令队列是一个4字节的空间,它用来存放等待执行指令的代码。
3.与组态无关的引线
➢ RD:读信号(输出,三态)。该信号低电平有效,是CPU发出的读选通信号。该信号有效,表示正在进行存储器或I/O端口的读操作。IBM PC XT中未使用此信号。
➢ READY准备就绪信号(输入)。该信号高电平有效。它是CPU寻址的存储器或I/O设备送来的响应信号。8088所寻址的存储器或I/O设备若没有准备就绪就将该信号置为低电平,8088就等待,直至它们准备就绪恢复该信号,8088就完成同它们的数据传送。
➢ TEST:测试信号(输入)。该信号低电平有效。它是由WAIT指令测试的信号。若为低电平,执行WAIT指令后面的指令;若为高电平,CPU就处于空闲等待状态,重复执行WAIT指令。
➢ INTR(interrupt):中断请求信号(输入)。该信号高电平有效,它是外设发来的可屏蔽中断请求信号。CPU在每一条指令结束前均要采样该引线,以决定是否中断现行程序的执行,进入中断服务程序。该信号可以用标志寄存器中的中断允许标志位来屏蔽。
➢ NMI(non-mask interrupt):非屏蔽中断请求信号(输入)。该信号是一个边沿触发信号。这条线上的中断请求信号是不能屏蔽的,只要这条线上有由低到高的变化,就在现行指令结束之后中断现行程序的执行,进入非屏蔽中断服务程序。
➢ RESET:复位信号(输入)。该信号由低变高时,8088立即结束现行操作;当其返为低时,8088将发生以下情况:
①标志寄存器置成0000H,其结果为禁止可屏蔽中断和单步中断;
②DS、SS、ES和IP复位为0000H;
③CS置成FFFFH。8088将从存储单元FFFF0H开始取指执行。
4.1.3 电源和定时线
➢ CLK:时钟信号(输入)。该信号一般由时钟发生器8284输出,它提供8088的定时操作。8088的标
准时钟频率为5MHz。
➢ VCC:电源线。要求加5V±10%的电压。
➢ GND:地线。8086/8088有两条地线,这两条地线都要接地。
4.1.4 8086与8088的区别
8086的指令队列有6个字节,而8088仅有4个字节。它们的执行单元EU完全相同,而总线接口单元BIU却不完全相同,8086有16位数据总线,8088仅有8位数据总线。
4.2 8088的CPU系统
4.2.5 最小组态下的8088 CPU系统
它由CPU 、地址锁存器74LS373、数据总线驱动器74LS245、时钟发生器8284A组成。
地址锁存器74LS373: 锁存地址,将地址、数据或者地址状态分开。
时钟发生器8284A:产生时钟信号、复位信号、准备就绪信号
数据总线驱动器74LS245:增强8088的负载能力,双向传送。
G输出允许引线,低电平时245传送
DIR 传送方向控制:,
当DIR输入高电平时,数据从A传向B;
当DIR输入低电平时,数据从B传向A。
REDAY
8284
RESET
CLK
A B
DEN
DT/R
RD
WR
IO/M
INTAINTR
存储器读
存储器写
I/O读
373×3
ALE
G
D Q
A19~A0
A19~A8
AD7~AD0
D7~D0
+5V
245
DIR
G
RDY
RES
I/O写
IO/M
RD
WR
0
0
1
&
0
1
0
IOR
1
0
1
( I/O读)
1
1
0
RD
IO/M
WR
&
&
&
MEMR
( 存储器读)
MEMW (存储器写)
IOW (I/O写)
4.2.6 最大组态下的8088 CPU系统
它由地址锁存器74LS373、数据总线驱动器74LS245、总线控制器8288、时钟发生器8284A和中断控制器8259(8259见第7章)。
373×3
REDAY
G
A19~A8
8284 A19~A0
RESET
D Q
AD7~AD0
CLK
A
245
D7~D0
DIR
OE
INTR INTR
ALE
S0
DEN
INTA
S1
DT/DT/R
8259
S2
IOR
8288
MEMR
RDY
IOW
RES INTA
MEMW
总线控制器8288
当8088工作在最大组态方式时,8288根据8088提供的状态信号S0、S1、S2,经译码产生命令信号和总线控制信号。
1.命令信号
8288要根据8088的S0、S1、S2向存储器或I/O设备输出各种命令,进行读或写操作。这些命令都是低电平有效,它们是:
MRDC: 存储器读命令。
MWTC: 存储器写命令
IORC: I/O读命令。
IOWC: I/O写命令。
AMWC: 存储器超前写命令。此命令同,超前 1个时钟脉冲。
AIOWC: I/O超前写命令。此命令同,超前 1个时钟脉冲。
INTA: 中断响应命令。
2. 总线控制信号
8288输出的总线控制信号有
地址锁存允许信号ALE、数据允许信号DEN
数据发送接收信号DT/R
设备级联允许/外部数据允许信号MCE/PDEN
373×3
ALE
ALE
G
G
A19~A0
A19~A8
A19~A8
D
D
译码器
AD7~AD0
AD7~AD
Q
0
D7
A
B
A
~
B
D0
DEN OG
D7~D0
245
E
DT/R
DIR
DT/DIR
存储器
R
或
RD
I/O口
RD
WR
&
WR
IO/M
IO/INTA
MININTR
TAI
指令控制时序,时序控制电路工作原理
4.3 8088的时序
4.3.1 指令周期、总线周期和T状态
我们知道,计算机是在程序的控制下工作的。程序
放在存储器的某个区域, CPU就发出读指令的命令,从指定的地址(由CS和IP给定)读出指令,它被送到指令寄存器中,再经过指令译码器分析指令,发出一系列控制信号,以执行指令规定的全部操作,控制各种信息在机器(或系统)各部件之间传送。简单地说,每条指令的执行由取指令(fetch)、译码(decode)和执行(execute) 阶段构成。上述的这些操作都是在时钟脉冲CLK的统一控制按照严格的时序下一步一步进行的。它们都需要一定的时间(当然有些操作在时间上是重叠的)。
学习CPU的时序的意义:
1.利于我们深入了解指令的执行过程,从而有助于我们编写源程序时选用指令,以缩短指令的存储空间和估算指令的执行时间。
2.当CPU与存储器芯片以及输入输出接口芯片连接时,根据时序关系设计出正确的连接电路。
几个时序术语:
指令周期(instruction cycle):
执行一条指令所需要的时间。
8088中不同指令的指令周期是不等的,因为不同指令长度不等,最短的指令只需要1个字节,大
部分指令是2个字节,最长的指令可能要6个字节。指令的最短执行时间是两个时钟周期,一般的加、减、比较、逻辑操作是几十个时钟周期,最长的为16位数乘除法指令约要200个时钟周期。
总线周期(bus cycle):
指令周期由一个个总线周期组成。每个总线周期完成一个基本的操作。不同的指令有不同的总线周期,有的只需要一个总线周期,而有的可能需要若干个总线周期。
总线周期有存储器读或写周期、输入/输出端口的读或写周期和中断响应周期等。每当CPU要从存储器或输入输出端口存取一个字节就是一个总线周期;多字节指令,需要多个总线周期。
时钟周期(clock cycle)T: CPU处理动作的最小时间单位。
每个总线周期通常包含4个T周期, 8088的时钟频率为5MHz,故时钟周期或1个T状态为200ns。在IBM PC XT中,时钟频率为4.77MHz,故一个T状态为210ns。
4.3.2 最小组态下的8088时序
1.存储器读周期
存储器读周期由4个T状态组成,如图4-10所示。
T1CLKT2T3T4IO/MA19-A16 S6-S3A19-A16S6-S3A15-A8AD7-AD0A7-A0DATA INALERDDT/RDEN
图4-10 存储器读周期时序
要从存储器的指定区域读出数据,首先需要由信号来确定是与存储器通信还是与外设通信。这个信号在T1状态开始后就变为有效,若与存储器通信则
它为低,而若与外设通信则它为高。
其次,要从指定单元读数据,则必须给出此单元的地址。8088有20条地址线A19~A0,但由于封装引线的限制,这些引线的用途不是单一的,而是由多路开关,按时间的先后,分成不同的用途。但从T1状态开始,在这些线上出现的信号都是地址,地址信号由地址锁存允许信号ALE在T1状态锁存到地址锁存器中。在T2状态A19~A16线上的信号变为状态信号S6~S3。而在T2状态A7~A0变为三态,为以后读入数据作好准备。
再有,要读入数据就必须给出读命令,因此信号在T2状态起变为有效(此时信号为无效),用以控制数据传送的方向。于是所访问的存储器,已由地址信号经过译码,找到了指定的单元,由信号把指定单元的内容读出在引线AD7~AD0上。若在系统中,应用了数据发送接收芯片8286或74LS245,则必须有控制信号和。由于是读,故应为低电平信号也在T2状态有效,它作为8286或74LS245的选通信号。CPU在T3状态的下降沿采样数据线,获取数据。
若所使用的存储器或外设的工作速度较慢,不
能满足上述基本时序的要求,则可用一个产生READY信号的电路,使8088在T3状态和T4状态之间插入TW状态,来解决8088与存储器或外设之间的时间配合,如图4-11所示。
T1CLKT2T3TWT4IO/MA19-A16 S6-S3A19-A16S6-S3A15-A8AD7-AD0A7-A0DATA INALERDDT/RDENREADYWAITREADY
图4-11 具有等待状态的存储器读周期的时序
8088在T3状态的前沿(即时钟下降沿)采样READY线,若发现其为低,则在T3周期结束后,不进入T4周期,而插入一个TW状态(即一个时钟周期),以后在每一个TW周期的前沿,采样READY线,只有在发
现它为有效(高电平)时,才在这个TW周期结束以后进入T4周期。在TW周期,8088的控制和状态信号都不改变。
2.存储器写周期
存储器写周期类似于存储器读周期,也由4个T状态组成,所不同的是在T2周期CPU就把要写的数据送到了数据总线,在T3周期WR为低电平,如图4-12所示。
4.3.3 最大组态下的8088时序
在最大组态下8088的基本总线周期仍是由4个T状态组成。在T1状态时,8088发出20位地址信号,同时送出状态信号S0、S1、S2给总线控制器。总线控制器对S0~S2进行译码,产生相应的命令控制信号。
习题与思考题
4.1 8086/8088的最小组态和最大组态的区别何在?
4.2 8088的AD7~AD0是何引线? 在构成系统时,应如何处理?
4.3 RESET信号来到后,8086/8088 CPU的CS和IP分别等于多少?
4.4 简述A0和BHE在8086系统中的作用。
4.5 8086构成系统时分为哪两个存储体?它们如何与地址总线、数据总线连接?
4.6 IBM PC/XT的控制核心有哪些部件? 各自的作用是什么?
4.7 什么是指令周期、总线周期、机器周期和时钟周期?
4.8 为什么要学习和了解8086/8088 CPU的时序?
4.9 存储器读周期和存储器写周期的主要区别是什么?
4.10 I/O周期与存储器读/写周期有何异同?
8086/8088 CPU发送和接收数据受什么信号控制?
4.11 中断响应周期由几个总线周期组成? 各总线周期分别进行什么操作?
4.12 8086/8088最大组态下的时序与基本时序有何不同?


发布评论