微机原理与接口技术(三)

总述:本次课程主要讲解了8086架构的总线工作周期以及引脚工作方式,并讲解了基于此的中断工作方式和以及最小模式下的工作时序,完整解释了8086的工作情况。

一、8086总线的工作周期

时钟周期:芯片内部一个时钟脉冲时间,由计算机主频决定。

总线周期:CPU通过总线对存储器或外设I/O口进行一次访问用时。分四个部分T1,T2,T3,T4。

空闲周期:总线上无数据传输系统空闲的、在两个总线周期间隔的时间。

指令周期:一条指令从开始执行到执行结束用时。每次指令执行包括取指令,译码,执行等操作。

 

 

 

图1  总线周期示意图

二、8086中断系统

中断系统可以处理256种不同中断源,用中断识别号(中断类型码)0-255进行唯一标记。

中断向量: 即中断服务程序的入口地址,包括段地址(高字单元)和偏移地址(低字单元)。进入中断时通过此进入中断执行程序。每个中断处理程序有唯一中断向量。

 

 

 

图2  中断向量表

中断类型分为两大类:1.硬件中断   2.软件中断

  1. 1.    硬件中断(外部中断)

包括两条中断请求信号线:NMI(非屏蔽中断)、INTR(可屏蔽中断)。

可屏蔽中断:

1>    INTR线上的中断请求信号引起。

2>    用CPU指令CLI屏蔽(使IF=0),STI允许(IF=1)。

3>    高电平触发,且持续保持至中断指令执行结束。

4>    可屏蔽中断源的中断类型码由8259A提供,且在08H—0FH、070H—077H中。

5>    8086中断系统设计中断控制器(8259A)管理各种外设提出的中断请求。 所有外设的中断请求信号都可送至8259A的中断请求输入端IRQ0~ IRQ7任何一个, 8259A选择其中优先级最高的中断请求,送至CPU的INTR引脚,向CPU申请可屏蔽中断。

可屏蔽中断的中断过程:

(1)CPU响应可屏蔽中断的条件

① 外设提出中断申请;

② 本中断未被中断控制器屏蔽;

③ 本中断优先级最高;

④ CPU允许中断;

(2)CPU响应可屏蔽中断的过程

CPU在每条指令的最后一个T周期,检测INTR,若为高电平,且

IF=1,则CPU响应中断。

响应过程中自动依次完成以下工作:

① CPU向外设发两个/INTA ,外设收到第2个/INTA 后,立即通过数

据线给CPU送中断类型号。

② CPU从数据线上读取中断类型号

③ 将Flags内容入栈

保护现行程序的控制标志及其运行结果产生的状态标志。

④ 关中断(清IF和TF)

为了防止在进入中断处理,但并未执行中断程序这段时间内又响应新的中断。

⑤ 保护断点

将当前指令的下一条指令的CS和IP入栈, 使中断处理完成后能正确的回

到原程序处继续执行。

⑥ 转入相应的中断服务子程序;

⑦ 中断返回

从堆栈中弹出断点的地址(IP和CS)和Flags的内容,返回主程序的断点

处,继续执行主程序。

 

不可屏蔽中断:

1>    NMI线上中断请求信号引起。

2>    中断类型码为2。

3>    优先级高于INTR。

4>    上升沿触发。

5>    不受IF标志影响,CPU在当前指令执行完后,必须立即响应。

6>    由计算机内部硬件出错而引发,一般用于处理紧急事件。

  1. 2.    软件中断(内部中断)

由指令或由指令驱动状态驱动。

包括5种

1)  除法错中断。

中断类型号为0;除数为0,或所得的商超过了CPU中有关寄存器所能表示的最大值,则立即产生一个类型号为0的内部中断, CPU转去执行除法错中断处理程序。

2)  单步中断

中断类型号为1;

3)  断点中断

中断类型号为3;

4)  溢出中断

中断类型号为4;

5)  软件中断(INT n指令引起中断)

中断类型号由指令定义。

中断优先级:软件中断(除单步中断外) > 非屏蔽中断 > 可屏蔽中断 > 单步中断

对同时产生的中断:

首先处理优先级别较高的中断;若优先级别相同,则按先

来先服务的原则处理;

对非同时产生的中断:

允许低优先级别的中断处理程序被高优先级别的中断源所中断——中断嵌套。

不可屏蔽中断与软件中断执行过程:

 

 

 

图3  非屏蔽中断与软件中断执行示意图

三、8086系统总线结构

CPU设计的工作模式包括两类:最小模式和最大模式。

对外部引脚复用有两类:按时序复用、按模式复用。

8086  +5v供电,引脚共40个,分四部分:1、地址总线 2、数据总线 3、控制总线 4、其他(时钟与电源)。

 

 

 

图4  8086芯片引脚示意图

 

 

 

图5  引脚对应说明图

1. 地址、数据、状态总线

A19-A0: 20位地址总线。T1输出访问存储器或I/O的地址信息。

D15-D0: 16位数据总线。T2-T4输出与存储器和I/O设备交换数据信息。

S6-S3: T2-T4输出CPU的工作状态。1)S6为0用以指示8086当前与总线连通; 2)S5为1表明8086可以响应可屏蔽中断。 3)S4、 S3共有四个组合状态,用以指明当前使用的段寄存器;

S4

S3

当前正在使用的段寄存器

0

0

ES

0

1

SS

1

0

CS或未使用任何段寄存器

1

1

DS

实际存在AD,AS复用以下介绍:

1)AD15~ AD0(2~16, 39)

1>地址/数据复用总线;

2>双向、 三态;

3>分时输出低16位地址信号及进行数据信号的输入/输出。

4> T1输出访问存储器或I/O的地址信息。

5>D15-D0: T2-T4输出与存储器和I/O设备交换数据信息。

2)A19/S6~ A16/S3 (35~38)

1>输出、三态;

2>分时输出地址的高4位及状态信息。

3>A19-A16: T1输出访问存储器的20位地址的高4位地址A19-A16。

4>S6-S3: T2-T4输出CPU的工作状态。

3)BHE/S7(34)

1>高8位数据总线有效/状态复用引脚;

2>三态输出;

3>表示高8位数据线D15~ D8上的数据有效和S7 状态信号;

4>T2-T4状态输出S7状态信号。 8086中无定义。

偶地址单元数据通过数据总线低8位传输。

奇地址单元数据通过数据总线高8位传输。

 

BHE

A0

总线使用情况

0

0

从偶地址单元开始,在16位数据总线上进行字传送

0

1

从奇地址单元开始,在高8位数据总线上进行字节传送

1

0

从偶地址单元开始,在低8位数据总线上进行字节传送

1

1

无效

 

2. 控制总线

1)RD (32)

1>读信号;

2>三态输出;

3>低电平有效;

4>RD = 0, 表示CPU正在读存储器或I/O端口。

2)READY(22)

1> 准备就绪信号;

2> 输入;高电平有效。

3> READY=1,表示CPU访问的存储器或IO端口已准备好传送数据。若CPU在总线周期T3状态检测到READY=0,表示未准备好, CPU自动插入一个或多个等待状态TW,直到READY=1为止。

3) TEST (23)

1>测试信号, 输入。

2>当CPU执行WAIT指令时, CPU每隔5个T状态进行一次测试;

3>当测试到TEST =1,则CPU 重复执行WAIT指令,即CPU处于空闲等待状态,

4>直到测试到TEST =0时,等待状态结束, CPU继续执行后续指令。

4) RESET (21)

1>复位信号,输入,高电平有效。

2> RESET信号至少要保持4个时钟周期。

3>复位时: 标志寄存器、 IP、 DS、 SS、 ES为0, CS=FFFFH,复位后CPU从FFFF0H处开始执行。

5) INTR (18)

1>可屏蔽中断请求信号;

2>输入, 高电平有效。

3>INTR=1, 表示外设向CPU发出中断请求, CPU在当前指令周期的最后一个T状态去采样该信号, 若此时, IF=1, CPU响应中断, 执行中断服务

程序。

6) NMI (17)

1> 不可屏蔽中断请求信号,

2> 输入,上升沿触发。

3> 该请求信号不受IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后立即响应中断。

7) MN/MX (33)

1>工作模式选择信号;

2>输入。

3> MN/MX=1,表示CPU工作在最小模式系统;

 MN/MX=0,表示CPU工作在最大模式系统。

3. 其他信号

1) VCC(40) GND(1, 20)

1>电源、 接地引脚

2>输入;

3>8086采用单一的+5V电源;

4>但有两个接地引脚。

2) CLK(19)

1>时钟信号输入引脚。

2>要求时钟信号的占空比为33%;

3>即1/3周期为高电平, 2/3周期为低电平。

四、       最小模式架构

总线是计算机各部之间信息传递通路。

主设备:可以独自启动总线周期。

从设备:只能被动响应。

DMA:信息传递通道,传输数据时完全接管总线,CPU不访问总线。

最小模式特点:

1)  MN/MX引脚接5v

2)  用1片8284作为时钟信号发生器。

3)  3片74LS373做地址锁存器。

4)  2片74LS245做总线收发器。

 

图6 最小模式结构图

具体芯片介绍:

  1. 1.     时钟发生器:

8284A的功能:

1>产生恒定的时钟信号, 对准备好信号和复位信号进行同步;

2>外界控制信号RDY和RES可以在任何时候到来, 8284A把它们同步在时钟下降沿时输出READY和RESET信号到CPU。

  1. 2.     地址锁存器:

1>当地址锁存允许信号ALE被送到373的选通端G上时, 373就锁存送到它的数据输入端的数据。

2>当把一个低电平有效的信号送给输出允许端OC(OE)时, 373就把锁存的数据从数据输出端输出。

  1. 3.     总线收发器:

1>作用:增大计算机带负载能力。

2>G: 控制驱动器A端和B端何时接通

3>DIR: 当DIR输入高电平时。 数据从A传到B;当DIR输入低电平时。 数据从B传到A。

最小模式引脚信号:

1) INTA (24)

1> 中断响应,输出;

2> 低电平有效;

3> 当CPU响应INTR时, INTA=0,表示响应中断。

2) ALE(25)

1>地址锁存允许信号,输出;

2>高电平有效;

3>在任一总线周期的T1期间输出一个正脉冲,用于输出地址锁存信号。

3)DEN (26)

1>数据允许信号;三态、输出;

2>低电平有效;

3>DEN通常作为数据收发器的选通信号;仅当DEN=0时,才允许收发器收发数据。

4)DT/R (27)

1>数据发送/接收信号,三态、输出;

2>DT/R=1时,表示CPU输出(发送)数据;DT/R=0时,表示CPU输入(接收)数据。

5)M/IO (28)

1>存储器或IO端口访问信号,三态、输出;

2>M/IO=1时,表示CPU当前正在访问存储器,M/IO=0时,表示CPU当前正在访问I/O端口。

6)WR (29)

1>写信号,输出、三态;

2>低电平有效。

3>WR=0,表示CPU当前正在写存储器或 I/O 端口。最小模式下,信号M/IO, RD,和WR组合起来决定了系统中数据传输的方式。

7) HOLD (31)

1>总线请求,输入;

2>高电平有效;

3>用于其它主控器(处理器、 DMA等)向本CPU 请求占用总线。

8)HLDA (30)

1>总线请求响应,输出;

2>高电平有效;

3>表示CPU认可其他总线部件提出的总线占用请求,准备让出总线控制权

五、       8086处理器时序

复位与重启:RESET端上的高电平维持4个时钟周期,可使CPU复位。如果是初

次加电引起的复位,则要求维持不小于50us的高电平。复位信号RESET从高电平到低电平的跳变会触发CPU内部的复位逻辑电路, 当RESET由高电平变低电

平7个机器周期后, CPU开始从FFFF0处执行程序。

 

图7  总线复位示意图

读写操作时序:

 

 

T1:

1>.确定读取位置。

2>获取逻辑地址

3>锁存地址

4>确定数据传送方向。

T2:

1>地址状态信息撤销成高阻态。

2>确定读、写方式。

T3:

1>读取数据信息

Tw:

若外设未准备好则等待时间。(T3后T4前)

T4:

所有信号撤销,等待下次周期。

总线保持请求与响应时序:

若其他模块(DMA等)占用总线要给CPU发送信号,CPU交出总线,使用结束再交还总线,并发送信号号告知CPU。

HOLD:外部告知CPU总线请求(高电平)与交还(低电平)。

HOLA:CPU内部告知各部调整状态至高阻态,让出总线。

 

 

图8  总线保持示意图

posted @ 2020-10-11 20:07  莓道理  阅读(1760)  评论(0编辑  收藏  举报