8259APIC(Programmable Interrupt Controller)是一种可编程序中断控制器,又称优先权中断控制器”(Priority Interrupt Controller),它具有强大的中断管理功能。
8259A的主要功能有:
(1)每一片8259A可管理8级优先权中断源,通过8259A的级联,最多可管理64级优先权的中断源。
(2)对任何一级中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直到取消屏蔽时为止。
(3)能向CPU提供可编程的标识码,对于8086/8088CPU来说就是中断类型码。这个功能使原来没有能力提供中断类型码的8255A、8253、8251A等可编程接口芯片,借助8259A同样可以采用中断I/O方式来进行管理。
(4)具有多种中断优先权管理方式,有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式五种,这些管理方式均可通过程序动态地进行变化。
所以,8259A是IBM--PC机系统中不可缺少的接口芯片,除作为中断优先权控制器外,还常常作为系统总线控制逻辑的组成部分。
一、8259A的内部结构
8259A的内部结构框图如图6-25(a)所示。由图可见,8259A由八个基本组成部分组成,它们是:
(1)8位中断请求寄存器(IRR)用来存放从外设来的中断请求信号IR0—IR7,所以是一个中断源中断请求寄存器。它有“正跳变”边沿触发和“高电平”电平触发两种触发方式。但无论采用何种触发方式,中断请求信号的高电平状态必须保持到第一个中断响应信号前一单元fix = v ns = "urn:schemas-microsoft-com:vml" />前一单元ferrelative="t" o:spt="75" coordsize="21600,21600"> 变为有效之后,否则将丢失中断请求信号。
(2)8位中断屏蔽寄存器( ).用来存放CPU送来的屏蔽信号,当它的某一位或某几位为“1”时,则对应的中断请求就被屏蔽,即对该中断源的有效请求置之不理。
(3)8位中断服务寄存器(ISR)是用来记忆正在处理中的中断级别。当CPU正为某个中断源服务时,8259A则使ISR中的相应位置“1”。当ISR为全“0”时,表示CPU正执行正常程序,无任何中断服务。
(4)优先权判别器(PR)也称优先权分析器,它是用来管理和识别各个中断源的优先级别的。其基本功能有:
1)根据CPU送人的命令来定义或修改IRo—tR,中各位的优先级别。通常IR0的优先级最高(为“0”级)、IR7的优先级别最低(为“7”级),但可通过软件加以修改。
2)当有多个中断请求同时出现时,分析出哪个中断源的优先级最高。
3)判别是否可以进入多重中断,即判别新产生的中断源的优先级别是否高于正在处理的中断级别。
4)当一个中断请求被判别为较高优先级时,通过控制逻辑向CPU发出中断请求信号INT(呈高电平)。当CPU响应中断而获得响应信号INTA,使ISR中的相应位置。
(5)控制逻辑将根据优先权判别器的请求向CPU发出中断请求信号INT,该信号连接到8086/8088CPU的可屏蔽中断INTR引脚;同时接受CPU来的中断响应信号INTA,并作出相应的处理,如置位ISR中的相应位、释放中断类型码到总线马~岛、清除INT信号等。
(6)数据总线缓冲器是8位三态双向缓冲器,通常和CPU系统总线中的DB7一DB0相连接,在读/写逻辑的控制下实现CPU与8259A之间的信息交换。
(7)读/写逻辑是根据CPU送来的读/写信号和地址信息,通过数据总线缓冲器有条不紊地完成CPU对8259A的所有写操作和读操作。它还包含有四个初始化命令寄存器和三个操作命令寄存器,用于存放四个初始化命令字ICWl~ICW'4和三个操作命令字OCWl~OCW3。
(8)级联缓冲器/比较器主要是为实现多片8259A的级联应用而设计的。在级联应用中只有一片8259A为主片,其他均为从片,但最多不能超过9片。此时各从片8259A的INT将与主片8259A的IRx相连接,而它们的三个级联信号CAS0—CAS2将分别互连起来。此时,主8259A在第一个雨开响应周期内通过CAS0~CAS2送出三位识别码,而和此识别码相符的从8259A将在第二个 响应周期内释放中断类型码到数据总线上,使CPU进入相应的中断处理程序。
级联缓冲器/比较器的第二个功能是提供一个 / 引脚信号,它是一个表示“从编程/缓冲器允许”的双功能信号。当8259A工作于缓冲方式时,它作为控制系统总线缓冲器传送方向的输出信号;当8259A工作于非缓冲方式时,作为输入信号,用于规定该片8259A是作为主片( )还是从片( ),因此一个系统中,只可能主片8259A的 / 引脚接高电平,其他从片均应接地。
以上8259A的内部结构中,IRR、IMR、ISR、PR和控制逻辑五个部分是实现中断优先权管理的核心部件。此外,8259A只有两个I/O端口地址,它们由 和A0输入的地址信息决定,一般 应连接到I/O地址译码器的输出,而A0通常是和地址总线A0或A1相连接。当8259A应用于8088CPU时,A0端常和地址总线A0相连接;当8259A应用于 8086CPU时,A0端常和地址总线A1相连接。
二、8259A的中断优先权管理方式及中断结束方式
(一)8259A的中断优先权管管理方式
8259A的中断优先权管理方式共有5种,它们是:
1.完全嵌套方式
这是一种按固定的优先级别高低来管理中断的方式。此时,当一个中断请求正在处理过程中时,不再产生同级的或较低级别的中断请求,但能产生较高级别的中断请求,即 8259A的IR0、IRl…IR7 8个中断源的中断优先权队列中固定为IR0的优先级别最高,IRl次之,而IR7为最低。这是一种最基本的中断优先管理方式,如果8259A初始化未对优 先权管理方式编程时,则8259A就自动进入此方式。
2.自动循环方式
这是一种中断源的中断优先级别将随着中断响应过程的结束而随时跟着改变的中断优先权管理方式。其改变原则是一个中断请求的中断服务结束后,其中断优先权降为最低,并且中断队列中的其余中断源的优先级别相应作循环变化。因此,队列中的任何一个中断源都有享受最高优先权的资格,所以这种自动循环方式又称为“等优先权方式”。
例如,CPU在进行IR5的中断服务过程中,产生了IR3的中断请求,因为IR3的优先级别高于IR5,所以CPU把IR5的中断处理过程暂时挂起(或者暂停),而进入IR3,的中断服务程序,显然这是一个双重中断过程。此时,8259A将对ISR和中断优先级设置为:见表)
但是当IR3的中断服务程序完成之后,复位IS3并改变IR3的中断优先级别为最低级,而其余的中断源优先级跟着作循环变化,此时ISR和优先级别设置成:(见表)
注意,此时IR5的中断优先级别从原来较低级别改变为较高的级别了。
有两种方法可使8259A工作于自动循环方式 :
(1)在中断服务程序的末尾发一条普通EOI循环命令;
(2)在主程序或中断服务程序中发置位/复位自动EOI循环命令。
3、特殊循环方式
这是一种可以通过主程序或中断服务程序中发特殊循环方式操作命令来指定某个中断源的优先级别为最低级,-而其余中断源的优先级别也随之循环变化的中断优先管理方式。例如,CPU正在处理IR7和IR2的中断过程中,8259A对ISR和中断优先级设置为:(见表)
当在IR4的中断服务子程序中发一条IR4为最低优先级的命令,则中断优先级将改变为:(见表)
由于此时IR4的优先级最低,使IR5的优先级最高,而原来优先级较高的IR2现在也改变为比较低的优先级别了。
也有两种方法可使8259A的优先权管理方法改变为特殊循环方式:
(1)在程序的任何地方执行一条置位优先权命令;
(2)在中断服务程序结束处执行一条特殊的EOI循环命令。
4.特殊屏蔽方式
在某些中断应用场合,希望一个中断服务程序能动态地改变中断系统的优先权结构。例如在执行中断服务程序的某一部分中要求禁止较低级的中断请求,但在执行中断服务程序的另一部分中又允许较低优先级别的中断请求。为了达到此目的,一般可在中断服务程序中应用中断屏蔽命令将中断屏蔽寄存器中对应当前中断级别的位置“1”,使当前中断级受到屏蔽,为开放较低级别的中断请求提供可能。但是,由于此时中断服务寄存器ISR中对应本级中断的位为“1”,并将保持到中断服务程序发出中断结束命令后,才被清除为“0”,所以在中断服务程序执行过程中,8259A仍然禁止较低级别的中断请求。8259A的特殊屏蔽方式就是为解决上述矛盾而设置的中断优先级管理方式。
在特殊屏蔽方式中,可在中断服务程序中用中断屏蔽命令来屏蔽当前正在服务的中断级别时,同时使中断服务寄存器中对应当前中断级别的位自动清“0”,这时不仅屏蔽了当前正在处理的本级中断,还真正开放了其他较低级别的中断请求。此时,CPU虽然仍在继续执行较高级别的中断服务程序,但由于本级中断已被屏蔽并且ISR中的对应位也为“0”,所以CPU好像不在执行中断服务程序一样,或者说8259A没有产生过中断请求一样,所以即使是最低级别的中断请求,8259A将及时产生INT中断请求,而CPU也会及时响应较低级别的中断请求。特殊屏蔽方式的设置或撤消均可通过操作命令OCW3来实现。
5.查询排序方式
这是一种用软件查询方法来响应与8259A相连接的8级中断请求,此时8259A的INT引脚可不连接到CPU的INTR引脚,或者CPU正处于关中状态,所以CPU不能响应从8259A来的中断请求。这时CPU若要了解有无中断请求,必须先用操作命令字发查询命令到8259A,然后再用输入指令读取IRR寄存器的状态,并识别当前有无中断请求及优先级最高的中断请求。
(二)8259A的中断结束方式
当8259A的某一中断级别的中断请求被CPU响应时,8259A中的中断服务寄存器ISR中的对应位将被置为“1”,表示CPU正在执行ISx为1的中断服务程序,要求在中断服务程序中或末尾通过适当的手段将正在执行的ISx位清除为“0”。清除ISx为0的方法有两种,其一是在中断服务程序结束之前向8259A发出EOI命令;其二是在第二个INTA响应信号的后沿之后由8259A自动清除。
1.EOI命令方式
所谓EOI命令方式是指在中断服务程序末尾向8259A发出中断结束命令,清除ISR中的相应位,表示该级的中断服务程序已经结束。EOI命令有普通EOI命令和特殊EOI命令两种。
普通EOI命令将自动清除ISR中所有已置位的位中优先级最高的那一位,因此它适用于安全嵌套方式的中断结束,因为此时正在服务的中断源必定是优先级别最高的。
当8259A不工作于完全嵌套方式时,就不能应用普通EOI命令,因为此时ISR中优先级最高的那一位不一定就是正在服务的中断级别,因而必须采用特殊EOI命令。因为特殊EOI命令中带有用于指定ISR中相应位复位的三位编码信息。所以特殊EOI命令可以作为任何优先级管理方式的中断结束命令。
2.自动EOI方式
采用此方式时,在第二个 响应信号的后沿由8259A自动执行普通EOI操作,复位ISR中已置位的中断优先级最高的位。
三、8259A的引脚信号
8259A的引脚信号排列图如图6-25(b)所示。可见,图中的引脚信号可分为三类,包括和CPU总线相连接的信号、来自外部8个中断源的中断请求信号以及多片8259A级联的级联信号。各引脚信号的名称和功能如表6-4所示。
四、中断的顺序
8259A是二种可编程序中断控制器,具有很强的中断寻址能力,可直接或间接地转移到所需的中断服务程序中去,而完全不必查询中断设备。
8259A的中断工作顺序为:
(1)一条或多条中断请求(IR0~IR7)变为高电平,使IRR相应位置“1”;
(2)8259A接受这些请求,分析它们的优先级,向CPU发出中断请求信号INT;
(3)CPU响应中断,并以 脉冲作为回答;
(4)接受来自CPU的第一 脉冲,最高优先级的ISR位置位,而相应的IRR位被复位。在该周期,8259A没有驱动数据总线;
(5)CPU启动第二个 脉冲,在该脉冲期间,8259A向CPU发出中断类型码(中断识别码);
(6)至此,已完成了整个中断响应周期。在AEOI(自动结束中断)方式中,当第二个 脉冲结束时,ISR位被复位。在其他情况下,ISR位置位,直到中断服务程序结束,在IRET指令前,发出相应的EOI命令。
这是对iAPX86系统而言的中断工作顺序。
五、8259A的应用举例
(一)8259A在IBM PC/XT中的应用
在IBM--PC/XT微型计算机中只有一片8259A,可连接8个外部中断源,其连接方法、中断源名称、中断类型码及中断服务程序入口地址如图6-26和表6-5所示。
系统分配给8259A的I/O端口地址为20H和21H,8259H采用边沿触发方式、缓冲方式,中断结束采用EOI命令方式,中断优先权管理方式采用完全嵌套方式。
(二)8259A在IBM PC/AT中的应用
在IBM--PC/AT微机系统中采用80286CPU。此系统中的外部可屏蔽中断源除PC/XT中的7个中断源外,还有实时时钟、INT0AH、80287协处理器和第二个硬磁盘等,因此外部中断源数大于8个,故系统中采用二片8259A组成中断系统,其中主片8259A的功能与图6-26中的8259A功能相同,而从片8259A则管理其他的中断源,其中断请求信号INT和主片8259A的IR2输入端相连接,二片8259A的CAS0~CAS2依次连接,不过此时主片8259A的CAS0—CAS2作为输出信号,而从片8259A则作为输入。
在IBM--PC/AT机中二片8259A的连接图如图6-27所示。若采用完全嵌套方式管理外部中断源时,优先级别队列为IRQ0>IRQl>IRQ8>IRQ9>IRQ10>……>IRQ15>IRQ3>IRQ4>IRQ5>IRQ6>IRQ7。
⊙小编提示:添加【山东自考网】招生老师微信,即可了解2023年山东自考政策资讯、自考报名流程、准考证打印方法、成绩查询时间以及领取历年真题资料、个人专属备考方案等相关信息!
(添加“山东自考网”招生老师微信,在线咨询报名报考等相关问题)
《山东自考网》免责声明:
(一)由于考试政策等各方面情况的不断调整与变化,本网站所提供的考试信息仅供参考,请以省考试院及院校官方发布公布的正式信息为准。
(二)本站文章内容信息来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决,联系邮箱:812379481@qq.com。