从功能上来讲,中断控制器需要对来自多个不同外围设备的中断请求进行管理和优先级判别,并与微处理器配合完成中断请求-响应过程。对多个不同外围设备中断请求的管理需要中断控制器能够对来自设备的中断请求和中断服务状态进行寄存,并且提供屏蔽不同来源中断请求的能力。中断优先级判别的需求需要中断控制器提供中断请求优先级判别的能力和相关的管理电路。中断控制器与微处理器之间读写和中断响应交互的需求需要中断控制器具有数据总线缓冲和读写控制的能力。多片级联扩展的需求则要求中断控制器必须提供级联控制的能力。为此,中断控制器应当包含由中断请求寄存器IRR、中断屏蔽寄存器IMR、中断服务寄存器ISR、优先级判别电路、数据总线接口、读写逻辑、级联逻辑以及控制这些部件共同运行的控制逻辑等部件组成。
Intel8259A是Intel为配合8086/8088微处理器工作而设计的可编程中断控制器,它使用28个引脚的双列直插封装方式,可以被视为由以下几个部分组成(见图6-2)。
图6-2 8259A内部结构
●中断请求寄存器IRR(Interrupt Request Register):存放来自设备的中断请求。某位为l表示相应的中断请求线IR有请求,为0表示该引脚无请求。将IRR某位置1的方式称为触发方式,8259A支持两种触发方式:边沿触发和电平触发。
●中断屏蔽寄存器IMR(Interrupt Mask Register):存放8个中断屏蔽位信息,某位为0表示对应的中断源未被屏蔽,为1表示对应的中断源被屏蔽。被屏蔽的中断源的请求不能参与中断判优,也就不可能向CPU提出中断请求。
●中断服务寄存器ISR(In-Service Register):存放当前正在服务的所有中断级,某位为1表示相应的中断正在服务中。ISR中可能有多位为1,这表明当前出现了中断嵌套。例如,经过优先级判别电路的判断,IR4中断被选中,8259A向CPU发起中断请求,在收到CPU发来的第一个信号时,ISR4位置1,IRR4位清0,表明IR4已经被CPU响应并且正在处理之中。如果这时IR1的中断请求中断了IR4的中断服务程序,那么ISR1也被置1,而ISR4仍旧保持为1,表明IR1和IR4的中断服务程序都没有执行结束。从这个角度来讲,ISR的每一位都可以用来表示对应中断源的中断处理是否已经完成,只有当ISR中的置1位被清0时,才代表对应中断源的中断处理程序已经结束。
●优先权判别电路:对保存在IRR中的各种中断请求以及IMR的内容进行判断,确定出最高优先级,如果当前没有正在服务的中断或者它比当前正在服务的级别高,则在CPU中断响应期间把它选通至ISR。简言之,在中断响应期间,优先权判别电路找出应该服务的中断,将ISR相应位置位,以服务对应的设备。(www.xing528.com)
●数据总线缓冲器:双向三态缓冲器,8259A与系统数据总线的接口。所有CPU对8259A编程时的控制命令字都是通过它写入的。且8259A的状态信息以及中断响应期间的中断向量也是通过它提供给CPU的。任何一个与系统数据总线直接相连的芯片都必须设置数据总线缓冲器,其作用是在该芯片被选中时提供与系统数据总线的传送通道,并且在该芯片未被选中时使芯片内部的数据线与系统数据总线“脱开”(呈现高阻抗),避免影响CPU与其他芯片的数据传送。
●读写逻辑:接收CPU的读/写命令,完成命令字的写入和状态字的读出等操作。一片8259A在系统中占用两个相邻端口地址(端口2n和2n+1),用地址线A0选择端口,其他地址线用来译码产生片选信号。以80286及以上的CPU为核心的微机使用两片8259A,其中主8259A使用端口地址20H和21H,从8259A使用端口地址A0H和A1H。
●控制逻辑:含一组初始化命令寄存器ICW1~4和一组操作命令寄存器OCW1~3以及相关的控制逻辑电路。通过对这些寄存器的操作,可以按预置的工作方式(初始化命令字)或通过程序员的干预(操作命令字)来管理8259A的全部工作。
●级联缓冲器/比较器:该模块使用在多片8259A以主-从方式进行级联的情况下,用来存放和比较系统中各从片标识(ID)。在一个系统中最多可以将9片8259A级联,但只能有一片是主片,其INT线接至CPU的INTR端,其他都为从片,INT线接到主片的IR输入端。CAS0-2对于主片为输出线,对于从片为输入线。另外,SP/EN管脚为从片编程/允许缓冲器信号,这是一个多功能引脚,当8259A工作在非缓冲方式的情况下,该管脚信号为输入,用来指明芯片是主片还是从片。在外围设备出现中断请求的时候,中断控制器(如8259A)处理这个中断请求的过程如下。
1)当中断请求输入管脚(8259A的IR0~7)上出现来自设备的中断请求时,这些中断请求被寄存到中断请求寄存器IRR中对应的位IRRi。
2)优先级判别电路根据当前的优先级设置对于那些没有被屏蔽掉的中断请求(8259A的中断屏蔽寄存器IMR对应位为0)进行判优。当前级别最高的中断源被选定后,中断控制器向CPU发出中断请求。(8259A通过管脚INT发出中断请求)
3)CPU响应中断请求时,中断控制器将中断服务寄存器被选中的中断源对应位置位,并将选中的中断对应的类型码发送给CPU,以完成对该中断请求的响应。在基于X86系列微处理器的微型计算机中,CPU从管脚发出两个负脉冲来响应中断请求,在第一个负脉冲到达时,8259A将中断服务寄存器ISR中被选中的中断源对应位置1,并将IRR中相应位清0。在第二个负脉冲到达时,8259A将选中的中断对应的中断源类型码n通过数据总线缓冲器传送给CPU,CPU就可以根据这个中断类型码找到中断向量,进而执行中断服务程序了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。