4.可编程中断控制器8259A
8259A是一种可编程中断控制器,能控制8级向量中断,通过级联方式最多可构成64级的向量中断系统。8259A能判断一个中断请求输入信号是否有效,是否符合信号的电气规定,是否被屏蔽,并能进行优先级的判别。CPU响应中断后,8259A还能在中断响应周期内将被响应的中断的中断类型码送给CPU。
(1)8259A的引脚功能
8259A的引脚如图6.13所示。下面将各引脚的功能做简单介绍。
1)CS片选信号。CS有效时,CPU可对该8259A进行读写操作
2)WR写信号。CS有效,且WR有效时,允许该8259A接受CPU送来的命令字。
3)RD读信号。当CS有效,且RD有效时,允许该8259A将状态信息放入数据总线供CPU检测。
4)D0~D7双向数据总线。用来传送控制、状态和中断类型号。
5)IR0~IR7,外部中断请求信号。
6)INT,中断请求信号。当IR0~IR7中任一个引脚有中断请求时,INT有效。该8259A用它来向CPU发出中断请求信号。
7)INTA中断响应信号。CPU由此发出中断响应脉冲。
8)A,地址输入信号。同CS、WR和RD一起选择8259A的内部寄存器。
9)CAS2~CAS,级联信号。双向引脚,用来控制多片8259A的级联使用。对主片来说,CAS0一CAS2为输出:对从片来说,CAS2~CAS0为输入。
10)SP/EN从片/允许缓冲器信号。这是一个双功能的引脚。当8259A处于缓冲方式时,8259A通过总线收发器和数据总线相连。此时该引脚作为输出,用于总线收发器的使能信号:当8259A处于非缓冲方式时,该引脚作为输入;SP=1表示该8259A是主片,SP=0表示该8259A是从片。
(2)8259A的内部结构
8259A的内部逻辑结构如图6.14所示。下面介绍它的各个组成部分。
1)数据总线缓冲器,这是一个双向8位3态缓冲器,由它构成8259A与CPU之间的数据接口,是8259A与CPU交换数据的必经之路。
2)读/写控制电路,用来接收来自CPU的读/写控制命令和片选控制信号。由于一片8259A只占两个I/O端口地址,因此可用末位地址码A0。来选择端口。端口的其他高位地址的译码输出作为片选信号CS输入。当CPU执行OUT指令时,WR信号与A,配合,将CPU通过数据总线D7~D0送来的控制字写入8259A中有关的控制寄存器内。当CPU执行N指令时,RD信号与A,配合,将8259A中内部寄存器的内容通过数据总线D7~D0,传送给CPU。
3)级联缓冲器/比较器。一片8259A只能接收分别从IR7一IR0输入的8级中断。当需要引入的中断超过8级时,可用多片8259A级联使用.此时一片8259A作主片,1~8片8259A作从片。级联使用时,主片和从片的CAS2~CAS0并接在一起。
4)中断请求寄存器IRR。IRR是8位的寄存器,它的7一0位分别对应于IR7~IR0。当某一个或几个IR输入端有中断信号到来时,IRR就将相应的位置成“1”。
5)中断服务寄存器ISR。这也是一个8位寄存器,用来记录当前正在处理的中断请求当CPU当前正在处理从R来的中断请求时,ISR就将第i位置“I”。由于可能产生多重中断,因此ISR中可能有多位为1。
6)中断屏蔽寄存器IMR。IMR是一个8位寄存器,它对IRR起屏蔽作用。当IMR中的i位为1时,禁止IR,来的中断请求进入系统,从而屏蔽了IR,来的这一级中断。
7)优先级判别器PR,当多个中断请求信号同时从IR,一IR输入时,由PR来判别当前优先级最高的中断请求,并让系统首先响应它。
8)控制电路。控制电路用来控制整个芯片内部各部件之间协调一致地工作