《中断系统及中断控制器》由会员分享,可在线阅读,更多相关《中断系统及中断控制器(61页珍藏版)》请在金锄头文库上搜索。
1、第十章 中断系统 及中断控制器,10.1 中断的基本概念 10.2 可编程中断控制器8259A 10.3 8259A应用举例,第一节 中断的基本概念,1. 中断的概念: 1956年,美国,IBM公司IBM 7049机上首先使用了中断处理技术,并开始使用“中断”(interrupt)这一术语。 中断最初是作为处理器与外部设备交换信息的一种控制方式提出的。由此,最初的中断全部是对外部设备而言的,称为外部中断或硬件中断。 随着计算机技术的发展,中断的范围也随之扩大,出现了内部软件中断的概念,它是为解决机器内部运行时出现的异常以及为编程方便而提出的。,不论哪种中断都遵循同样的中断处理过程,中断:处理器
2、暂停执行当前程序,转而处理随机发生的事件,处理完毕后再返回到断点处继续执行原来程序的过程。,2.中断类型号及中断向量表,所谓中断向量,实际上就是中断服务程序的入口地址,每个中断类型对应一个中断向量。,中断类型号通过一个地址指针表与中断服务程序的入口地址相联,在实模式下,该表称为中断向量表。,中断向量表包含256个中断向量。每个中断向量包含两个字(4个字节),高地址字为中断服务程序所在代码段的段基址,低地址字为代码段中中断服务程序第一条指令的偏移量。,实模式下,中断向量表存放在内存最低端的1K单元之中,物理地址00000H003FFH,中断类型码和中断向量所在位置之间的对应关系,类型255,类型
3、32,类型0,类型4,类型3,类型2,类型1,0000:0000H0000:0003H,0000:0010H0000:0013H,0000:000CH0000:000FH,0000:0008H0000:000BH,0000:0004H0000:0007H,供用户定义的中断(224个),专用中断(5个),保留中断(27个),0000:03FCH0000:03FFH,中断类型号 * 4 = 该类型入口地址的地址,例题,类型号为20H的中断所对应的中断向量存放在0000:0080H开始的4个单元钟,如图示,则它所对应的中断服务程序的入口地址为4030:2010H。 一个系统中对应中断类型号17H的中
4、断服务程序存放在2345:7890H开始的内存区域中,则17H对应的中断向量存放于何处?,17H * 4 = 5CH,10.2 可编程中断控制器8259A,8259A是一种可编程中断控制器,有如下功能: 一片Intel 8259A可管理8个中断请求,并把当前优先级最高的中断请求送到CPU的INTR端。 当CPU响应中断时,为CPU提供中断类型码。 8个外部中断的优先级排列方式,可以通过对8259A编程进行指定。也可以通过编程屏蔽某些中断请求,或者通过编程改变中断类型码。 允许9片8259A级联,构成64级中断系统,VCC A0 IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 I
5、NT CAS2,8259A,28 27 26 25 24 23 22 21 20 19 18 17 16 15,1 2 3 4 5 6 7 8 9 10 11 12 13 14,D7 D6 D5 D4 D3 D2 D1 D0 CAS0 CAS1 GND,10.2.1 8259A的引脚及工作原理,D7D0:数据总线,双向,三态。用于与CPU之间传送命令、状态、中断类型码。 RD :读信号,输入。用来通知8259A把某个内部寄存器的值送数据线D7D0 。 WR:写信号,输入。用来通知8259A把数据线D7D0上的值写入内部某个寄存器。 CS:片选信号,输入。通过地址译码逻辑电路与地址总线相连。 A
6、0:地址线,输入。用来指出当前8259A的哪个端口被访问,选择内部寄存器的端口地址。 在标准AT机中,使用两片8259A构成主从式中断系统, 主8259A的端口地址: 20H,21H 从8259A的端口地址: A0H,A1H,INT:中断请求,输出。把IR7IR0上的最高优先级请求传送到CPU的INTR引脚,向CPU发中断请求。 INTA:中断响应,接收CPU的中断应答信号。CPU发出的中断响应信号为两个负脉冲。第一个负脉冲作为中断应答信号,第二个负脉冲到来时,8259A从数据线D7D0上发出中断类型码。 IR7IR0:外设中断请求输入。在含有多片8259A的复杂系统中,主片的IR7IR0分别
7、与从片的INT端相连,用来接收来自从片的中断请求。 CAS2CAS0:级联线,用来指出具体的从片。 SP/EN:从设备编程/缓冲器允许 1)采用缓冲方式时,作为输出,用做控制缓冲器接收和发送的信号。 2)采用非缓冲方式时,作为输入,用做决定8259A的主从设备标志。为1时,指明8259A为主设备。为0时,指明8259A为从设备。,10.2.2 8259A的内部结构,1、数据总线缓冲器,8位双向三态缓冲器,通常与数据总线的低8位相连,是8259A与CPU间数据传送的接口,CPU向8259A发送的数据、命令、控制字及8259A向CPU输入的数据、状态信息都要经过数据总线缓冲器。,2、读写控制电路,
8、接收CPU送来的读写命令、片选信号以及端口选择信号A0,以实现CPU对8259A的读写操作。 当CPU执行OUT指令时,信号有效并与A0配合,使8259A接收CPU由数据总线送来的初始化命令(ICW)和操作命令(OCW);当CPU执行IN指令时,信号有效并与A0配合,将8259A的内部状态经数据总线传送给CPU。信号对8259A的读写操作控制如下表所示。,3、级联缓冲器/比较器,该模块主要用于多片8259A级联和数据缓冲方式,4、中断请求寄存器IRR,有锁存功能的8位寄存器,用来存放外部输入的中断请求信号IR7IR0。每一位对应一个外部中断请求信号IRi,当某个IR端有中断请求,IRR中的相应
9、位置“1”,其内容可用操作命令字OCW3读出。当中断请求被响应时,IRR的相应位就复位,5、中断屏蔽寄存器IMR,8位寄存器,与8259A处理的8级中断源IR7IR0相对应,当用软件将IMR中的某一位置“0”,表示对应的中断IRi被允许,即允许IRR寄存器中相应位的中断请求进入中断优先级判别器。反之,将IMR的某一位IMR置“l”,表示对应的中断IRi被屏蔽。因此,通过IMR寄存器可以对各个中断源进行屏蔽或开放。屏蔽功能由操作命令字OCW1实现。,6、中断服务寄存器ISR,8位寄存器,与8级中断IR7IR0相对应,用来记录正在处理中的中断请求的优先级,当任何一级中断被响应后(当时它的优先级最高
10、),在第一个中断响应负脉冲到来时,ISR中的相应位置“l”,7、优先级判别器PR,也叫优先级分析器 对IRR寄存器送来的中断申请信号(只有IRR中置1且IMR中对应位置0的位才能进入PR)进行优先级判别,选出优先级最高的中断申请;当出现多重中断时,PR将新出现的中断请求和正在被服务的中断优先级进行比较,确定新的优先级是否高于正在处理的中断级,当1个中断请求被判定为具有最高的优先级时,PR通过控制电路向CPU发出中断请求信号INT,并在8259A获得第一个中断响应信号时使ISR寄存器中相应位置1。,8、控制电路,该模块是8259A的内部控制器,控制8259A芯片的内部工作过程。 实际上整个825
11、9A芯片是在控制电路的控制下构成一个有机的整体并完成中断优先级管理功能。,根据IRR存器中的置位情况和中断屏蔽寄存器IMR的设置情况,通过优先级判别器PR进行优先级判别,并根据判别结果向8259A内部各部件发出控制信号,并向CPU发出中断申请信号INT和接收CPU的中断响应信号,使中断服务寄存器ISR的相应位置“1”(第一个时),使IRR寄存器中相应位清“0”(第一个时)。当第二个中断响应信号到来时,控制8259A向数据总线送出中断类型号,以便CPU形成中断服务程序的入口地址。如果中断结束方式为“自动结束”,则在第二个负脉冲结束时使ISR寄存器中的相应位清“0”。,10.2.3 8259A的工
12、作方式,1、设置优先级方式 2、屏蔽中断源的方式 3、结束中断处理的方式 4、连接系统总线的方式 5、引入中断请求的方式,10.2.3 8259A的工作方式,1、设置优先级方式,中断请求按优先级07进行处理,0级中断的优先级最高 当一个中断被响应时,中断类型码被放到数据总线上,当前中断服务寄存器ISR中的对应位ISn被置1,然后进入中断服务程序。一般情况下(除了自动结束中断方式),在CPU发出中断结束命令(EOI)前,此对应位一直保持“1”。如果又来了新的中断,中断优先级裁决器总是将新收到的中断请求和当前中断服务寄存器中的IS位进行比较,判断新收到的中断请求的优先级是否比当前正在处理的中断优先
13、级高,如果是,则实行中断嵌套。 8259A最常用的工作方式,如果对8259A进行初始化以后没有设置其他优先级方式,那么,8259A就按一般完全嵌套方式工作。,1)一般完全嵌套方式,10.2.3 8259A的工作方式,1、设置优先级方式,该方式和全嵌套方式基本相同 只有一点不同, 同级能中断同级的中断请求 特殊全嵌套方式一般用在8259A级连的系统中,2)特殊完全嵌套方式,10.2.3 8259A的工作方式,1、设置优先级方式,一般用在系统中多个中断源优先级相等的场合。 在这种方式下,优先级队列是变化的,一个设备受到中断服务以后,它的优先级自动将为最低 在优先级自动循环方式中,初始优先级队列规定
14、为IR0、IR1、IR2IR6、IR7 , 例:如果来IR4中断请求,则处理IR4。处理完IR4后,IR5位最高优先级,依次为IR6、IR7、IR0、IR1、IR2、IR3、IR4。 系统中是否采用自动循环优先级,由8259A的操作命令字OCW2决定,3)优先级自动循环方式,10.2.3 8259A的工作方式,1、设置优先级方式,优先级特殊循环方式和优先级自动循环方式相比,只有一点不同:开始的最低优先级是由编程确定的,从而最高优先级也由此而定。 比如,确定IR5为最低优先级,那么,IR6就是最高优先级。而在优先级自动循环方式中,一开始的最高优先级一定是IR0。,4)优先级特殊循环方式,10.2
15、.3 8259A的工作方式,2、屏蔽中断源的方式,普通屏蔽方式中,8259A的每个中断请求输入端都可以通过对应屏蔽位的设置被屏蔽,从而使这个中断请求不能从8259A送到CPU。 屏蔽寄存器 :它的每一位对应了一个中断请求输入,程序设计时,可以通过设置操作命令字OCW1使屏蔽寄存器中任一位或几位置1。当某一位为1时,对应的某一级中断就受到屏蔽。 需要撤销对某些中断的屏蔽或需要撤销对所有中断的屏蔽,可以通过OCW1重新设置来实现,1)普通屏蔽方式,10.2.3 8259A的工作方式,2、屏蔽中断源的方式,设置了特殊屏蔽方式之后,再用OCW1对屏蔽寄存器中某一位进行设置时,就会同时使当前中断服务寄存
16、器中的对应位自动清0,这样,就不只屏蔽了当前正在处理的这级中断,而且真正开放了其他级别较低的中断。 在有些场合,希望一个中断服务程序能动态的改变系统的优先级结构。例如,在执行中断处理程序某一部分时,希望禁止较低级的中断请求,但是,在执行中断处理程序另一部分时,又能够开放本身的优先级较低的中断请求。,2)特殊屏蔽方式,10.2.3 8259A的工作方式,2、屏蔽中断源的方式,特殊屏蔽方式总是在中断处理程序中使用的。使用了这种方式后,尽管系统当前仍然在处理一个较高级的中断,但是,从外界看来,由于8259A的屏蔽寄存器中,对应与此中断的数位被设置为1,并且当前中断服务器中的对应位被清0,所以,好像不在处理任何中断,从而,这时即使有最低级的中断请求,也会得到响应。,2)特殊屏蔽方式,10.2.3 8259A的工作方式,3、结束中断处理的方式,中断处理的结束:,一个中断请求得到响应时,8259A都会在当前中断服务寄存器中设置相应位ISn,这