8259A中断控制器Word格式文档下载.docx
- 文档编号:22768477
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:24.36KB
8259A中断控制器Word格式文档下载.docx
《8259A中断控制器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《8259A中断控制器Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
CPU从DataBus上得到这个中断向量之后,就去IDT中找到相应的中断服务程序ISR,并调用它。
如果8259A的EndofInterrupt(EOI)通知被设定位人工模式,那么当ISR处理完该处理的事情之后,应该发送一个EOI给8259A。
8259A得到EOI通知之后,ISR寄存器中对应于此中断请求的Bit会被Reset。
如果8259A的EndofInterrupt(EOI)通知被设定位自动模式,那么在第2个INTA信号收到后,8259AISR寄存器中对应于此中断请求的Bit就会被Reset。
在此期间,如果又有新的中断请求到达,并被放置于IRR中,如果这些新的中断请求中有比在ISR寄存中放置的所有中断优先级别还高的话,那么这些高优先级别的中断请求将会被马上按照上述过程进行处理;
否则,这些中断将会被放在IRR中,直到ISR中高优先级别的中断被处理结束,也就是说知道ISR寄存器中高优先级别的bit被Reset为止.
中断的来源除了来自于硬件自身的NMI中断和来自于软件的INTn指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断是可屏蔽的。
这些中断也都通过PIC(ProgrammableInterruptController)进行控制,并传递给CPU。
在IBMPC极其兼容机上所使用的PIC是Intel8259A芯片。
8259A芯片的功能非常强大,但在IBMPC上,只用到比较简单的功能。
一个8259A芯片的可以接最多8个中断源,但由于可以将2个或多个8259A芯片级连(cascade),并且最多可以级连到9个,所以最多可以接64个中断源。
早期,IBMPC/XT只有1个8259A,.但设计师们马上意识到这是不够的,于是到了IBMPC/AT,8259A被增加到2个以适应更多外部设备的需要,其中一个被称作Master,另外一个被称作Slave,Slave以级连的方式连接在Master上。
如今绝大多数的PC都拥有两个8259A,这样最多可以接收15个中断源。
通过8259A可以对单个中断源进行屏蔽。
Principle
否则,这些中断将会被放在IRR中,直到ISR中高优先级别的中断被处理结束,也就是说知道ISR寄存器中高优先级别的bit被Reset为止。
IRQ2/IRQ9Redirection
为什么要将IRQ2重定向到IRQ9上?
这仍然是由于兼容性问题造成的。
早期的IBMPC/XT只有一个8259A,这样就只能处理8种IRQ。
但很快就发现这根本不能满足需求。
所以到了IBMPC/AT,又以级连的方式增加了一个8259A,这样就可以多处理7种IRQ。
原来的8259A被称作MasterPIC,新增的被称作SlavePIC。
但由于CPU只有1根中断线,SlavePIC不得不级连在MasterPIC上,占用了IRQ2,那么在IBMPC/XT上使用IRQ2的设备将无法再使用它;
但新的系统又必须和原有系统保持兼容,怎么办?
由于新增加的SlavePIC在原有系统中不存在,所以,设计者从SlavePIC的IRQ中挑出IRQ9,要求软件设计者将原来的IRQ2重定向到IRQ9上,也就是说IRQ9的中断服务程序需要去掉用IRQ2的中断服务程序。
这样,将原来接在IRQ2上的设备现在接在IRQ9上,在软件上只需要增加IRQ9的中断服务程序,由它调用IRQ2的中断服务程序,就可以和原有系统保持兼容。
而在当时,增加的IRQ9中断服务程序是由PC开发商开发的BIOS提供的,所以就从根本上保证了兼容。
Programmingthe8259As
每一个8259A芯片都有两个I/Oports,程序员可以通过它们对8259A进行编程。
Master8259A的端口地址是0x20,0x21;
Slave8259A的端口地址是0xA0,0xA1。
程序员可以向8259A写两种命令字:
InitializationCommandWord(ICW);
这种命令字被用作对8259A芯片的初始化。
OperationCommandWord(OCW):
这种命令被用来向8259A发布命令,以对其进行控制。
OCW可以在8259A被初始化之后的任何时候被使用。
下表的内容是Master8259A的I/O端口地址,以及通过它们所能操作的寄存器。
AddressRead/WriteFunction
0x20WriteInitializationCommandWord1(ICW1)
WriteOperationCommandWord2(OCW2)
WriteOperationCommandWord3(OCW3)
ReadInterruptRequestRegister(IRR)
ReadIn-ServiceRegister(ISR)
0x21WriteInitializationCommandWord2(ICW2)
WriteInitializationCommandWord3(ICW3)
WriteInitializationCommandWord4(ICW4)
Read/WriteInterruptMaskRegister(IMR)
Addresses/RegistersforMaster8259A
下表的内容是Slave8259A的I/O端口地址,以及通过它们所能操作的寄存器。
0xA0WriteInitializationCommandWord1(ICW1)
0xA1WriteInitializationCommandWord2(ICW2)
Addresses/RegistersforSlave8259A
由于8259A芯片不仅能够用于IBMPC/X86,也可以被用作MCS-80/85,对于这两者,在操作模式上有一些不一样,对于某些寄存器的设置也有所不同。
我们后面仅仅讨论X86模式相关的内容。
根据8086/8088CPU可屏蔽中断INTR的特点,为了使多个外部中断源能共享中断资源,还必须解决几个问题:
CPU芯片上只有一个INTR输入端,多个中断源应如何与INTR连接,各中断源的优先级如何判定等。
8259A就是为了解决上述诸问题设计的。
它的主要特点是:
1、1片8259A能管理8级中断,通过级边,用9片8259A可构成64级主从式中断系统。
2、可以通过编程,使8259A工作在多种不同的方式下。
3、NMOS工艺制造,只需要单一的+5V电源。
一、8259A内部结构及中断过程
1、8259A内部结构:
共包括8个主要功能部件。
数据总线缓冲器:
是一个三态8位数据缓冲器,8位数据线D0—D7与系统的数据总线相连,用来进行CPU与8259A之间的数据传输,当CPU与8259A进行读操作时,数据总线缓冲器用来传输从8259A内部CPU的数据/状态信息和中断类型码,写操作时由CPU向8259A内部定稿数据/控制字。
中断请求寄存器(InterruptRequestRegister,IRR):
用来接收外部中断请求的8位寄存器。
引脚IR0—IR7,当某一个IRi端接收中断请求信号呈高电平时,则IRR的相应在位将被置“1”(即对该中断请求作了锁存);
多个进入时,则多位被置“1”。
但此请求能否进入IRR的下一级判优电路(即优先级判别器PR),还取决于IRR的中断屏蔽寄存器IMR中相应位是否清“0”(即不屏蔽该项位请求)。
中断屏蔽寄存器(InterruptMaskRegister,IMR):
是一个8位寄存器,可用来屏蔽已被锁存在IRR中的任何一个中断请求。
对所有要中断请求组,将相应的位置“1”即可。
置“1”后不能进入系统的下一级即优先级判别器PR去判优。
(IMR中各位的值可由编程设置,这点与IRR及ISR不同。
)
优先级别判别器(PoiorityResolver,PR):
用来判别已进入IRR中的各中断请求的优先级别。
由多个中断请求高时产生并经IMR允许进入系统牾,先由PR判定当前哪一个中断请求具有最高优先级,然后由系统首先响应这一中断,并转去执行相应的中断服务程序。
出现多重中断时,则由PR判定是否允许替载电所出现的新的请求去打断当前正在处理的中断服务而被除数优先处理这时PR将同时接受并比较来自ISR中正在处理的与IRR中新请求服务的两个中断请求优先级的高低,以决定是否向CPU发出新的中断请求。
若PR判定出新进入的中断请求比当前锁存在ISR中的中断请求优先级高时,则通过相方尖碑逻辑电路使8259A的输出端INT为“1”,从而向CPU发出一个新的中断请法语。
如果这时CPU的中断允许标志位IF为“1”,那么在CPU执行完当前指令后,就可以响应中断。
这时,CPU(8086)将从INTA线上往8259A回送两个负脉冲,以便进行中断处理。
中断服务寄存器(InterruptServiceRegister,ISR):
也是一个8位寄存器,用来存放或记录正在服务中的所有中断请求优先级(如在多重嵌套时)。
当某一级中断请求被响应,CPU正在执行它的中断服务程序时,则ISR中将被置“1”,并将一直保持在该级中断处理过程结束为止。
在多重中断时,ISR中可能有多位同时被置“1”。
至于ISR某位被置“1”的过程是这样:
若有一个或多个中断源同时请求中断,它们将先由优先级判别器先出当前在IRR中置“1”的各种中断优先级别中最高者,并用INTA负脉冲选通并送入ISR寄存器对应位。
显然,当有多重中断处理服务过程中时,ISR中可同时记录多个中断请求。
控制逻辑:
这一部分是8259A全部功能的核心。
它包括一组方式控制字寄存器和一组操作命令字寄存器以及相关的控制电路。
芯片的全部工作过程完全由上述两组寄存器内容设定,而这两组寄存器以可以通过编程写入不同的参数进行预先设置。
控制中断请求处理过程:
当IRR中有中断,请求位被置位;
若该位没有被屏蔽,且优先级高于正在服务的级别(若ISR中有置“1”位),控制逻辑输出高电平的INT信号,向CPU请求中断。
在CPU响应该中断请求,输出INTA信号后,控制逻辑在第一个INTA作用下,ISR的相应位置位,在第二个INTA周期将控制逻辑中新存的中断类型号送到数据总线上。
当中断服务结束时,控制逻辑按初始化编程规定的方法进行处理。
读/写控制逻辑:
该部件接收来自CPU的读写命令由CS、RD、WR、和地址线A0共同控制,完成规定的操作,其中A0引脚功能一般直接与CPU地址总线的A0位相连,A0为0或1时,可以选择芯片内不同的寄存器进行读或写。
8259片尽管有若干个寄存器,但只占用两个端口地址,地址值由CS和A0位决定。
芯片内可写的寄存器有各种命令寄存器,可读的寄存器包括IRR、ISR、IMR等状态寄存器。
级联缓冲器/比较器:
与8259A提供级联控制信号CAS0-CAS2及双向功能信号SP/EN,以满足8259A在缓冲工作和主从工作方式(即非缓冲工作)两种方式下的功能需要。
关于这些信号的功能将在后面说明。
从对8259A编程的角度来看,8259A共有7个8位的寄存器。
这些寄存器是可编程的,即可以用指令对它们的内容进行设置。
7个寄存器分为2组:
初始化命令字和操作命令字。
初始化命令字:
这组寄存器有4个,用来存放初始化命令字,分别为ICW1-ICW4。
初始化命令字是系统启动工作时由初始化程序设置的,是8259A工作的前提条件。
初始化命令字一旦设定,一般在系统工作过程中就不会改变。
操作命令字:
这组寄存器有3个,用来存放操作命令字,分别为OCW1-OCW3。
操作命令字在应用程序中设定的。
它们用来对中断过程作动态控制,在系统运行过程中,操作命令字可以多次设置。
编程角度看8259A
用户(程序员)在使用一个可编程接口或控制芯片时,一般是从编程角度看,对8259A也是如此,它有10个可编程寄存器,可分成两组。
一组是在内部结构框图中明显表示的,它们是中断请求寄存器IRR、中断屏蔽寄存器IMR和正在服务寄存器ISR。
这3个寄存器的作用前面已经介绍了。
另一组在内部结构框图中没有被表示,属于内部寄存器,它们是4个初始化命令寄存器和3个操作命令寄存器。
初始化命令寄存器用来存放初始化命令字,4个初始化命令字分别为ICW1~ICW4(InitialCommandWord)。
在对8259A进行初始化编程时,要根据需要写入相应的初始化命令字。
一旦初始化完成,8259A就按照这些初始化命令字来管理外部的8级中断。
在8259A工作期间,可通过操作命令字对它进行必要的干预,使其改变某方面的工作方式。
操作命令字有三种:
OCW1~OCW3(OperationCommandword),它们被存放在操作命令寄存器中。
四.8259A的读操作
在PC机中8259A的端口地址为20H和21H。
常用的读操作是:
1.读出IRR的值
即先向20H端口写0AH(OCW3RR=1、RIS=0),再读20H端口
MOVAL,0AH
;
OCW3=0AH
OUT20H,AL
;
OCW3写入8259A
INAL,20H
读出IRR内容
2.读出ISR的值
先向20H端口写0BH(OCW3RR=1、RIS=1),再读20H端口
MOVAL,0BH
OCW3=0BH
读出ISR内容
3.读查询字(读出最高级别的中断请求IR)
先向20H端口写0CH(OCW3P=1),再读20H端口
MOVAL,0CH
OCW3=0CH
读出查询字内容
4.读IMR的值
随时可用奇地址读IMR的值,并对其作修改。
例1:
INAL,21H
读IMR
ANDAL,7FH
开放IR7中断
OUT21H,AL
修改IMR
例2:
INAL,21H
ORAL,80H
关闭IR7中断
OUT21H,AL
五.8259A应用举例
如图7.32所示给出了IBMPC/XT系统中8259A的连接情况。
从图中可以看出8259A的IR2端是保留端,其余都已被占用。
现假设某外设的中断请求信号由IR2端引入,要求编程实现CPU每次响应该中断时屏幕显示字符串“WELCOME!
”。
已知主机启动时8259A中断类型号的高5位已初始化为00001,故IR2的类型号为0AH(00001010B);
8259A的中断结束方式初始化为非自动结束,即要在服务程序中发EOI命令;
8259A的端口地址为20H和21H,程序如下:
DATASEGMENT
MESSDB'
WELCOME!
'
,0AH,0DH,'
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,SEGINT2
MOVDS,AX
MOVDX,OFFSETINT2
MOVAX,250AH
INT21H
置中断矢量表
INAL,21H
读中断屏蔽寄存器
ANDAL,0FBH
开放IR2中断
OUT21H,AL
STI
LL:
JMPLL
等待中断
INT2:
MOVAX,DATA
中断服务程序
MOVDX,OFFSETMESS
MOVAH,09
显示每次中断的提示信息
MOVAL,20H
发出EOI结束中断
INAL,21H
ORAL,04H
屏蔽IR2中断
MOVAH,4CH
INT21H
IRET
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8259 中断 控制器