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最大组态下的时序与基本时序有何不同?