8259A

可编程中断控制器8259A是Intel公司专为80x86 CPU控制外部中断而设计开发的芯片。 它将中断源优先级判优、中断源识别和中断屏蔽电路集于一体,不需要附加任何电路就可以对外部中断进行管理,单片可以管理8级外部中断,在多片级联方式下,可以管理多达64级的外部中断。

8259A内部结构及其引脚功能

可编程中断控制器8259A是28引脚双列直插式芯片,单一+5V电源供电.

其内部结构及引脚信号如图6.9所示。



内部结构

(1)数据总线缓冲器

  数据总线缓冲器为三态、双向、8位寄存器,数据线D7~D0与CPU系统总线连接,构成CPU与8259A之间信息传送的通道。

(2)读/写控制逻辑

  读/写控制逻辑用来接收CPU系统总线的读/写控制信号和端口地址选择信号,用于控制8259A内部寄存器的读/写操作。

  

(3)级联缓冲/比较器

  8259A既可以工作于单片方式,也可以工作于多片级联方式,级联方式硬件连接如图6.10所示。级联缓冲/比较器提供多片8259A的管理和选择功能,其中一片为主片,其余为从片。

(4)中断控制逻辑

  中断控制逻辑按照编程设定的工作方式管理中断,负责向片内各部件发送控制信号,向CPU发送中断请求信号INT和接收CPU回送的中断响应信号,控制8259A进入中断管理状态。

  

(5)中断请求寄存器(interrupt request register,IRR)

  IRR是一个8位寄存器,用于记录外部中断请求。其中D7~D0分别与外部中断请求信号IR7~IR0相对应,当IRi(i=0~7)有请求(电平或边沿触发)时,IRR中的相应位Di置1,在中断响应信号有效时,Di被清除。

(6)中断服务寄存器(interrupt service register,ISR)

  ISR是一个8位寄存器,用于记录CPU当前正在服务的中断标志。当外部中断IRi(i=0~7)的请求得到CPU响应进入服务时,由CPU发来的第一个中断响应脉冲将ISR中的相应位Di(i=0~7)置1,而ISR的复位则由8259A中断结束方式决定。若定义为自动结束方式,则由CPU发来的第二个中断响应脉冲的后沿将Di复位为0;若定义为非自动结束方式,则由CPU发送来的中断结束命令将其复位。

(7)中断屏蔽寄存器(interrupt mask register,IMR)

  IMR是一个8位寄存器,用来存放IR7~IR0的中断屏蔽标志。它的8个屏蔽位D7~D0与外部中断请求IR7~IR0相对应,用于控制IRi的请求是否允许进入。当IMR中的Di位为1时,对应的IRi请求被禁止;当IMR中的Di位为0时,则允许对应的中断请求进入。它可以由软件设置或清除,通过编程设定屏蔽字,可以改变原来的优先级别。

(8)优先权判决器(priority register,PR)

  优先权判决器对IRR中记录的内容与当前ISR中记录的内容进行比较,并对它们进行排队判优,以便选出当前优先级最高级的中断请求。如果IRR中记录的中断请求的优先级高于ISR中记录的中断请求的优先级,则由中断控制逻辑向CPU发出中断请求信号INT,中止当前的中断服务,进行中断嵌套。如果IRR中记录的中断请求的优先级低于ISR中记录的中断请求的优先级,则CPU继续执行当前的中断服务程序。

引脚信号

8259A引脚信号如图6.11所示:



D7~D0(bidirectional data bus):双向、三态数据线,与CPU系统总线连接。

RD¯¯¯¯¯\overline {RD}(read):读信号,输入,低电平有效。当有效时CPU对8259A进行读操作。

WR¯¯¯¯¯¯\overline{WR}(write):写信号,输入,低电平有效。当有效时CPU对8259A进行写操作。

A0(address line):端口地址选择信号,输入,由8259A片内译码,选择内部寄存器。

CS¯¯¯¯¯\overline{CS}(chip select):片选信号,输入,低电平有效。当有效时8259A被选中。

有关寄存器的端口地址分配及读/写操作功能见表6.2。



SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}(slave program/enable buffer):双向信号线,用于 从片选择总线驱动器的控制信号。当8259A工作于非缓冲方式时,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}作为输入信号线,用于从片选择。级联中的从片SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}接低电平,主片SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}接高电平。当8259A工作于缓冲方式时,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}作为输出信号线,用做8259A与系统总线驱动器的控制信号。

INT(interrupt request):中断请求信号,与CPU的中断请求信号相连。

INTA¯¯¯¯¯¯¯¯¯¯\overline{INTA}(interrupt acknowledge):中断响应信号,与CPU的中断应答信号相连。

CAS2~CAS0CAS_2~CAS_0(cascade lines):级联信号线, 作为主片与从片的连接线,主片为输出,从片为输入,主片通过CAS2~CAS0CAS_2~CAS_0的编码选择和管理从片。

IR7~IR0IR_7~IR_0(interrupt requests):中断请求输入信号,由外设输入。

VCC:+5V电源输入信号。   GND:电源地

8259A的工作方式

8259A的中断管理功能很强,单片可以管理8级外部中断,在多片级联方式下最多可以管理64级外部中断,并且具有中断优先权判优、中断嵌套、中断屏蔽和中断结束等多种中断管理方式。

中断优先权方式

8259A中断优先权的管理方式有固定优先权方式和自动循环优先权方式两种。

1)固定优先权方式

  在固定优先权方式中,IR7~IR0的中断优先权的级别是由系统确定的。

  它们由高到低的优先级顺序是:IR0, IR1, IR2, …, IR7, 其中,IR0的优先级最高,IR7的优先级最低。当有多个IRi请求时,优先权判决器(PR)将它们与当前正在处理的中断源的优先权进行比较,选出当前优先权最高的IRi,向CPU发出中断请求INT,请求为其服务。

(2)自动循环优先权方式

  在自动循环优先权方式中,IR7~IR0优先权级别是可以改变的。

  其变化规律是:当某一个中断请求IRi服务结束后,该中断的优先权自动降为最低,而紧跟其后的中断请求IR(i+1)的优先权自动升为最高,IR7~IR0优先权级别按如下所示的右循环方式改变。

 



  假设在初始状态IR0IR_0有请求,CPU为其服务完毕,IR0IR_0优先权自动降为最低,排在IR7IR_7之后,而其后的IR1IR_1的优先权升为最高,其余依次类推。这种优先权管理方式,可以使8个中断请求都拥有享受同等优先服务的权利。

  在自动循环优先权方式中,按确定循环时的最低优先权的方式不同,又分为普通自动循环方式和特殊自动循环方式两种。

  普通自动循环方式的特点是:IR7~IR0IR_7~IR_0中的初始最高优先级由系统指定,即指定IR0IR_0的优先级最高,以后按右循环规则进行循环排队。

  而特殊自动循环方式的特点是:IR7~IR0IR_7~IR_0中的初始最低优先级,由用户通过置位优先权命令指定。

中断嵌套方式

8259A的中断嵌套方式分为完全嵌套和特殊完全嵌套两种。

(1)完全嵌套方式

  完全嵌套方式是8259A在初始化时自动进入的一种最基本的优先权管理方式. 

  其特点是:中断优先权管理为固定方式,即IR0优先权最高,IR7优先权最低,在CPU中断服务期间(即执行中断服务子程序过程中),若有新的中断请求到来,只允许比当前服务的中断请求的优先权“高”的中断请求进入,对于“同级”或“低级”的中断请求禁止响应。

(2)特殊完全嵌套方式

  特殊完全嵌套方式是8259A在多片级联方式下使用的一种最基本的优先权管理方式。

   其特点是:中断优先权管理为固定方式,IR7~IR0的优先顺序与完全嵌套规定相同;与完全嵌套方式不同之处是在CPU中断服务期间,除了允许高级中断请求进入外,还允许同级中断请求进入,从而实现了对同级中断请求的特殊嵌套。

  在级联方式下,主片通常设置为特殊完全嵌套方式,从片设置为完全嵌套方式。当主片为某一个从片的中断请求服务时,从片中的IR7~IR0的请求都是通过主片中的某个IRi请求引入的。因此从片的IR7~IR0对于主片IRi来说,它们属于同级,只有主片工作于特殊完全嵌套方式时,从片才能实现完全嵌套。

  

中断屏蔽方式

中断屏蔽方式是对8259A的外部中断源IR7~IR0实现屏蔽的一种中断管理方式,有普通屏蔽方式和特殊屏蔽方式两种。

(1)普通屏蔽方式

  普通屏蔽方式是通过8259A的中断屏蔽寄存器(IMR)来实现对中断请求IRiIR_i的屏蔽。由编程写入操作命令字OCW1OCW_1,将IMR中的DiD_i位置1,以达到对IRiIR_i(i=0~7)中断请求的屏蔽。

(2)特殊屏蔽方式

  特殊屏蔽方式允许低优先级中断请求中断正在服务的高优先级中断。这种屏蔽方式通常用于级联方式中的主片,对于同一个请求IRiIR_i上连接有多个中断源的场合,可以通过编程写入操作命令字OCW3来设置或取消。

  在特殊屏蔽方式中,可在中断服务子程序中用中断屏蔽命令来屏蔽当前正在处理的中断,同时可使ISR中的对应当前中断的相应位清0,这样一来不仅屏蔽了当前正在处理的中断,而且也真正开放了较低级别的中断请求。

  在这种情况下,虽然CPU仍然继续执行较高级别的中断服务子程序,但由于ISR中对应当前中断的相应位已经清0,如同没有响应该中断一样。所以,此时对于较低级别的中断请求,8259A仍然能产生INT中断请求,CPU也会响应较低级别的中断请求。

中断结束方式

中断结束方式是指CPU为某个中断请求服务结束后,应及时清除中断服务标志位,否则就意味着中断服务还在继续,致使比它优先级低的中断请求无法得到响应。中断服务标志位存放在中断服务寄存器(ISR)中,当某个中断源IRi被响应后,ISR中的Di位被置1,服务完毕应及时清除。

8259A提供了以下三种中断结束方式:

(1)自动结束方式

  自动结束方式是利用中断响应信号INTA¯¯¯¯¯¯¯¯¯¯\overline{INTA}的第二个负脉冲的后沿,将ISR中的中断服务标志位清除。

  这种中断服务结束方式是由硬件自动完成的,需要注意的是:ISR中为“1”位的清除是在中断响应过程中完成的,并非中断服务子程序的真正结束,若在中断服务子程序的执行过程中有另外一个比当前中断优先级低的请求信号到来,因8259A并没有保存任何标志来表示当前服务尚未结束,致使低优先级中断请求进入,打乱正在服务的程序,因此这种方式只适合用在没有中断嵌套的场合,即,这种中断方法仅仅适用于单级中断。

(2)普通结束方式 (非自动中断结束方式EOI)

  普通结束方式是通过在中断服务子程序中编程写入操作命令字OCW2,向8259A传送一个普通EOI(end of interrupt)命令(不指定被复位的中断的级号)来 清除ISR中当前优先级别最高位

  由于这种结束方式是清除ISR中优先权级别最高的那一位,适合使用在完全嵌套方式下的中断结束。因为在完全嵌套方式下,中断优先级是固定的,8259A总是响应优先级最高的中断,保存在ISR中的最高优先级的对应位,一定对应于正在执行的服务程序。

(3)特殊结束方式 (非自动中断结束方式EOI)

  特殊结束方式是通过在中断服务子程序中编程写入操作命令字OCW2,向8259A传送一个特殊EOI命令(指定被复位的中断的级号)来清除ISR中的指定位。

  如果采用了循环优先级方式工作,则中断源的优先级在动态变化,且此时的正在服务的中断服务程序的优先级可能不是最高的,因此,必须使用指定中断结束命令来明确ISR中的待清理的位置。

  由于在特殊EOI命令中明确指出了复位ISR中的哪一位,不会因嵌套结构出现错误。因此,它可以用于完全嵌套方式下的中断结束,更适用于嵌套结构有可能遭到破坏的中断结束。

中断触发方式

8259A中断请求输入端IR7~IR0的触发方式有电平触发和边沿触发两种,由初始化命令字ICW1中的LTIM位来设定。

当LTIM设置为1时,为电平触发方式,8259A检测到IRi(i=0~7)端有高电平时产生中断。在这种触发方式中,要求触发电平必须保持到中断响应信号有效为止,并且在CPU响应中断后,应及时撤销该请求信号,以防止CPU再次响应,出现重复中断现象。

当LTIM设置为0时,为边沿触发方式,8259A检测到IRi端有由低到高的跳变信号时产生中断。

总线连接方式

8259A数据线与系统数据总线的连接有缓冲和非缓冲两种方式。

 (1)缓冲方式

  如果8259A通过 总线驱动器系统数据总线连接,此时,8259A应选择缓冲方式,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}引脚作为输出端,用于精致外接总线驱动器输入/输出的方向。当定义为缓冲方式后,即为输出引脚。在8259A输出中断类型号的时候,输出一个低电平,用此信号作为总线驱动器的启动信号。

 (2)非缓冲方式

  8529A的数据总线具有双向、三态缓冲功能,因此,它不需要外加总线驱动器就可直接挂到数据总线上使用。总线驱动器是起缓冲和隔离作用,所以这种连接方式成为非缓冲方式。在这种方式下,SP¯¯¯¯¯/EN¯¯¯¯¯¯\overline{SP}/\overline{EN}引脚为输入引脚,在级联方式下,用高/低电平通知8259A工作在主/从片方式下。

8259A初始化编程

在8259A内部有两组寄存器,一组为命令寄存器,用于存放CPU写入的初始化命令字ICW1~ICW4(initialization command words);另一组为操作命令寄存器,用于存放CPU写入的操作命令字OCW1~OCW3(operation command words)。

初始化命令字ICW的格式

当地址线A0为1时,8259A提供了4个(ICW1~ICW4)初始化命令字,并规定了严格的初始化步骤。

  8259A是中断系统的核心器件,对它的初始化编程要涉及中断系统的软、硬件的许多问题,而且一旦完成初始化,所有硬件中断源和中断处理程序都必须受其制约。

(1)ICW1的格式

  ICW1的格式如图6.12所示。

  


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值