第7章 中断系统及8237ADMA控制器.详解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、中断嵌套管理 中断嵌套——CPU响应了一个中断请求,正在中断处理中,又 有一个中断源发出中断请求。 若发出中断请求的中断源的优先权级别更高,中断系统使CPU 暂停当前的中断服务,转而响应和处理中断优先级更高的中断请求, 处理结束后,再返回原优先级较低的中断服务。
若发出中断请求的中断源的优先权级别低于当前正在处理的中 断源,CPU不予响应,等待当前中断处理结束后,再予以响应。
2、中断系统的作用 (1)并行处理 (2)实时处理 (3)故障处理 7.1.2 中断处理系统 一个完整的中断处理系统必须实现以下功能: 中断源识别、中断优先级判断、中断嵌套管理以及CPU的中断 响应、中断服务和中断返回。 1、中断源识别 中断源——引起程序中断的事件。 在具有多个中断源的系统中,CPU需要识别哪一个中断源有中 断请求。常用的中断技术有单线中断、多线中断和向量中断三种。 单线中断通过查询中断源提供中断地址信息。 多线中断每个中断源有一根输入线,由于CPU引脚线有限而只 能管理少量的中断源。
7.2.3 中断向量表 中断向量——是中断服务程序入口地址。 中断向量表——是中断服务程序入口地址表。 中断向量地址——是中断向量在中断向量表中的位置。 中断向量地址与中断类型号之间的关系可表示为:中断向量地 址=中断类型号*4 。 8086中断系统最多可有256个中断源,每个中断有一个中断类 型号(0~255),每个类型号对应一个中断向量,每个中断向量4 个字节,前两个字节是偏移量IP,后两个字节是段基址CS,256个 中断向量占用最低1KB内存,即0~3FFH。中断向量表如图7-10所示。 8086的前5个中断向量是专用的,接下来的27个中断向量由操 作系统使用,剩下的中断向量可以由用户使用。
第 7章
中断系统及8237ADMA控制器
教学内容
7.1 中断系统 7.1.1 中断的概念及其作用 7.1.2 中断处理系统 7.2 8086CPU的中断系统 7.2.1 8086CPU的中断源 7.2.2 8086CPU的中断响应过程 7.2.3 中断向量表 7.2.4 中断程序设计 7.3 中断控制器Intel8259A 教学目标 掌握8086中断系统结构,特点及使用。
(8)中断控制逻辑 控制逻辑是8259A的内部控制器。根据中断请求寄存器IRR的置 位情况和中断屏蔽寄存器IMR设置的情况,通过优先级判别器PR判 定优先级,向8259A内部及其他部件发出控制信号,并向CPU发出中 断请求信号INT,接收CPU的中断响应信号 INTA ,使中断服务寄存 器ISR相应位置1,并使中断请求寄存器IRR相应位清0。 当CPU第二 个 INTA 信号到来,控制8259A送出中断类型号,使CPU转入中断服 务子程序。如果方式控制字ICW4的中断自动结束位为1,则在第二 个 INTA 脉冲结束时,将8259A中断服务寄存器ISR的相应位清0。
4)溢出中断——中断类型号是4。指令为INTO,如果该指令的 上一条指令使标志位OF=1,则在执行指令INTO时产生溢出中断。 5)指令中断——中断类型号是n。指令格式为INT n。指令中 断和INT、INTO一样,都能引起CPU的中断响应,但INT、INTO为单 字节指令,且中断类型号是固定的,而INT n是双字节指令,类型 号n是指令给出的。
2、可屏蔽中断 1) 中断请求与检测。CPU每执行一条指令后都会检测INTR上有 无中断请求。 2) 判断是否响应。如果IF=1,则在执行完当前指令后响应中 断请求。 3)确定中断向量地址。执行连续两个中断响应总线周期,第 一个周期通知中断源中断请求已被响应,第二个周期中断源将中断 类型号送上数据总线的低8位,CPU在T4的前沿从数据总线上获得中 断类型号。然后将中断类型号乘以4得到中断向量地址。 以下4)、 5)、 6)与内部与非屏蔽中断相同。 4)保存断点。将断点地址(即IP和CS )入栈。 5)执行中断服务程序。从中断向量表中取出中断服务程序的 入口地址送到IP和CS,在中断服务程序中要保护现场。 6)中断返回。执行IRET指令,从堆栈中取回断点地址送IP和 CS。
2.中断源屏蔽方式 (1)普通屏蔽方式 在中断屏蔽寄存器IMR中写入中断屏蔽字。1使对应中断输入被 屏蔽,0则对应中断输入被允许。 (2)特殊屏蔽方式 用于屏蔽当前已响应的中断,并将ISR中的对应位清0,以开放 其他优先权较低的中断输入。在进入中断后在中断屏蔽寄存器IMR 中将已响应的中断输入对应位置1,使当前已响应的中断被屏蔽, 其他优先权较低的中断输入被开放。注意应先设置特殊屏蔽方式, 然后建立屏蔽信息。在中断服务程序结束时应退出特殊屏蔽方式。 3.中断嵌套方式 (1)全嵌套方式 初始化后的默认工作方式。 IR0的优先级最高,IR0~IR7优先 级依次降低。只有高优先级的中断请求可以中断低优先级的中断请 求。一个中断请求被响应后,它自身(即同级)的再次请求也不能 被响应。
例7-1 某中断源的类型号为34,且已知部分中断向量表如图 7-11所示,试求中断服务程序入口的物理地址。 解: 34*4=136 即中断向量地址为: 88H 查中断向量表得中断向量为: A123H:B678H 中断服务程序入口的物理地址为: AC8A8H
7.2.4 中断程序设计 中断程序设计分为主程序设计和中断服务子程序设计两部分: 主程序用来完成相关的初始化工作,为实现中断做好准备;中断服 务子程序—用来完成相关的中断处理工作。 1、主程序设计 初始化工作分三部分: ① CPU本身工作的初始化 ② 中断控制器8259A的初始化 ③ 通用接口的初始化 2、中断服务子程序设计 中断服务子程序含有以下七个部分: (1)保护中断时的现场。 (2)若允许中断嵌套,则设置开中断。 (3)执行中断处理程序。 (4)设置关中断, (5)给中断命令寄存器送中断结束命令EOI。 (6)恢复中断时的现场。 (7)用中断返回指令IRET返回主程序。
(2)硬件排队方式 图7-5是一个用硬件编码器和比较器构成的优先权排除电路。 其中共有8个中断源,任一个中断源有中断请求时,通过“或” 门可以产生一个中断请求信号。 如果当前不在中断处理中,则“与”门2打开,中断请求“与” 门2进入CPU。
如果当前正在某一中断处理中(即已响应了一个中断请求), 但此中断源的优先级低于正在请求中断的中断源,则“与”门1打 开,中断请求“与”门1进入CPU;若正在处理中的中断源的优先级 高于正在请求中断的中断源,则这个请求中断的中断源被阻隔,暂 时无法进入CPU,将等待正在处理的中断结束后才能进入CPU。 (3)专用中断控制器
7.3.2 8259A的工作方式 8259A共有6种工作方式。 1.中断请求方式 (1)边沿触发器方式 中断请求输入端(IR0~IR7)的上升沿实现中断请求。 (2)电平触发方式 中断请求输入端(IR0~IR7)的高电平实现中断请求。要求高 电平保持到中断请求被响应,且在中断返回前撤除,否则将引起又 一次中断。 (3)中断查询方式 8259A不向CPU发INT信号,由CPU不断查询8259A,当发现有中 断请求时,就转入相应的中断服务程序。查询时,系统先关中断, 然后将查询方式命令字OCW3送到8259A,再对8259A执行一条输入指 令,8259A便将一个如下格式的查询字送上数据总线。 D7 D6 D5 D4 D3 D2 D1 D0 I W2 W1 W0 I=1表示有设备请求中断服务。W2W1W0组成的代码表示当前中 断请求的最高优先级。
1.8259A的外部引脚信号及结构
引脚信号如图7—12b,引脚信号的作用见表7—2。
2. 8259A的内部结构
(1)数据总线缓冲器
用于与CPU进行数据交换。 (2)读/写控制逻辑 用于实现读/写操作。 (3)级联缓冲/比较器
用于控制多片8259A的级联,使得中断级可以最多扩展至64级。
扩展时用一片主片,多片从片。 (4)中断请求寄存器IRR
4、中断处理过程 一般包括中断请求、 中断优先级判断、中断响 应、中断服务和中断返回5 个基本阶段。
7.2 8086CPU中断系统 7.2.1 8086CPU的中断源 8086CPU的中断系统可处理256个中断,可分为两大类:外部中 断和内部中断。
1、中断源的类型 (1)外部中断(硬件中断) 分为非屏蔽中断和可屏蔽中断两种。 1)非屏蔽中断 通过NMI引脚进入CPU。只要NMI引脚有中断请求,CPU就必须响 应,常用作处理重大故障和紧急情况。 2)可屏蔽中断 通过引脚INTR进入CPU。CPU对此中断请求是否响应由标志位IF 决定,当IF=1时才能响应。 (2)内部中断(软件中断) 1)单步中断——中断类型号是1。当标志位)除法出错中断——中断类型号是0。当除数为0或商超出了 限定范围时产生此中断。 3)断点中断——中断类型号是3。用于在程序调试时设置断点。
内部中断的特点: ① 内部中断的类型号都是固定的,或是在中断指令中给定的。 不需要进入INTA总线周期获取类型号; ② 不受中断允许标志位IF的影响; ③ 用一条指令或由某个标志位启动进入中断处理程序,这样 的中断没有随机性。
2、中断源的优先级
7.2.2
8086CPU的中断响应过程
7.2.2 8086CPU的中断响应过程 1、内部中断和非屏蔽中断的 响应及处理过程 1) 中断请求与检测。 2) 确定中断向量地址。将中 断类型号乘以4获得中断向量地址。 3)保护各标志位状态和屏蔽 INTR中断和单步中断。将标志寄 存器入栈,并清除IF、TF标志。 4)保存断点。将断点地址 (即IP和CS)入栈。 5)执行中断服务程序。从中 断向量表中取出中断服务程序的 入口地址送到IP和CS,在中断服 务程序中要保护现场。 6)中断返回。执行IRET指令, 从堆栈中取回断点地址送IP和CS。
具有锁存功能的8位寄存器,用于寄存所有外部中断请求。当8
个中断请求IR0~IR7中任何一个的输入上升为高电平时,IRR中相 应的位置1,该位在中断响应过程中被清除。
(5)中断服务寄存器ISR 8位寄存器,用于存放正在被服务的中断级。在中断响应的第 一个INTA周期将ISR相应位置1,同时对应的IRR位复位。ISR的复位 由8259A中断结束方式决定。若是自动结束方式,则由CPU在第二个 INTA周期后沿将其复位;若是非自动结束方式,则由CPU发送的中 断结命令将其复位。允许多重中断时,ISR多位同时被置成1。 (6)中断屏蔽寄存器IMR 8位寄存器,用于寄存要屏蔽的中断级。该寄存器的每一位对 应一个中断级,1表示屏蔽该级中断请求,0表示开放该级中断请求。 寄存器内容可以通过软件以屏蔽命令设置。各屏蔽位相互独立(屏 蔽高优先级的中断不会影响低优先级的中断)。 (7)优先权比较器PR 用于存放IRR中各请求信号的优先级,并排队判优,若中断允 许嵌套时,所选最高优先级还要和ISR中内容比较,以实现高优先 级的嵌套中断。
7.3 中断控制器Intel8259A
8259的功能:
1)具有8~64级的中断优先权管理功能(多于8级时,必须通 过级连扩展实现)。
2)每一级都可以通过编程实现中断屏蔽或开放。
3)在中断响应周期,8259A可以自动提供相应的中断类型号。 4)可以通过编程来选择8259A的各种工作方式及任意设定中断 类型号。 7.3.1 8259A的引脚信号及结构
向量中断由每个中断源经接口电路向CPU提供中断源的设备标
志,CPU将程序转向相应中断设备的中断处理。向量中断技术如图
7-2所示,当CPU响应中断后,由中断源提供中断地址信息,引导程 序进入中断服务程序的入口。
2、中断优先级判断 中断优先级判断的具体方法可分为:软件查询、硬件排队和专 用中断控制器。 (1)软件查询方式 在CPU响应中断后,通过用户编程采用程序查询的方法确定中 断源的优先级。查询的顺序决定了各中断源的优先级。 软件查询方法的优点是接口电路简单,且优先权次序可以按查 询的先后顺序而改变。缺点是中断源较多时,由查询转到相应中断 服务程序的时间较长,因而,此方法一般用于中断源较少、实时性 要求不高的场合。
重点内容 1 中断的概念及其作用。 2 中断处理(中断源识别、优先级判断、嵌套管理、处理过 程)。 3 8086CPU中断系统。 难点内容
8086CPU中断系统。
学时数
4学时
7.1 中断系统 7.1.1 中断的概念及其作用 1、中断的概念 中断——计算机在执行正常程序的过程中出现内部或外部某些 事件的请求时,CPU暂时停止当前程序的正常执行,转去执行请求 事件的处理操作,CPU在事件处理结束后再回到被暂时中断了的程 序继续往下执行。