8个中断源可以适应一些小型系统的需求,但对于规模比较大的系统,8个中断源就远远不够了。8259A在设计的时候充分考虑了这一点,可以级联扩展。当系统希望扩充8个以上中断时,需要两片以上的8259A级联工作。最多可以扩充到64个中断,通过9片8259进行级联来实现。其中一片是主片,其他8片是从片。8个从片的中断信号INT端不是连接到CPU的INTR,而是分别连接到主片的中断请求信号IR0~IR7上,从片则是通过初始化命令字ICW3的低3位(ID码)来记录与主片连接位置的。三位正好是8种情况,分别对应IR0~IR7。主片是通过级联/缓冲比较器来鉴别和选择从片的,判断方式如下:级联/缓冲比较器有4根既可以输入也可以输出的双向引脚,CAS0~CAS2和SP#/EN#。CAS0~CAS2相当于地址线,主片和从片的CAS0~CAS2互相连接,主片的这三位用于输出,从片的用于输入。主片根据发出中断请求的从片与IRi连接的情况来判断是哪一级从片,再通过CAS0~CAS2向它发出选择信号。从片的级连/缓冲比较器通过CAS0~CAS2接收主片发来的地址,把它们和初始化命令字中的ID码进行比较,相等时,便在INTA#周期将中断类型码送到数据总线上。 级连/缓冲比较器的SP#/EN#引脚也是双向的,既可以做输入信号,又可以做输出信号。到底定义SP#/EN#是输入还是输出,取决于8259A是否采用缓冲方式工作。按照8259A和系统总线的连接来分,8259A可以工作在缓冲方式和非缓冲方式,这可以通过初始化命令字来设置。在较大规模的系统中,一般都具有总线驱动器,此时,8259A需要工作在缓冲方式。把8259A的SP#/EN#端和总线驱动器的使能端相连,在缓冲方式下,SP#/EN#端被定义为输出状态,8259A输出状态字或者中断类型码的时候,从SP#/EN#输出一个低电平,用来使能数据总线驱动器。在不需要对数据总线驱动器选通的场合,8259A可以工作在非缓冲方式,在非缓冲方式下,SP#/EN#定义为输入信号。如果只有单片8259A,该端必须接高电平。如果有多片,那么可以用来确定该片8259A是主片还是从片。SP#/EN#接高电平时是主片,接低电平时是从片。 |