1 / 82

第 4 章 微型计算机的中断系统

第 4 章 微型计算机的中断系统. 4.1 中断原理 4.2 8086 CPU 中断系统 4.3 可编程中断控制器8259 A 4.4 中断方式输入输出. 4.1 中断原理. 4.1.1 中断的基本概念. 1. 中断 由于某个事件的发生, CPU 暂停当前正在执行的程序,转而执行处理该事件的一个程序。 该程序执行完成后, CPU 接着执行被暂停的程序。 这个 过程 称为中断。. 2. 中断源 引发中断的事件称为中断源 内部中断(在 CPU 内部的中断源): 程序异常(运算溢出等),

gannon
Download Presentation

第 4 章 微型计算机的中断系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4章 微型计算机的中断系统 4.1 中断原理 4.2 8086 CPU中断系统 4.3 可编程中断控制器8259A 4.4 中断方式输入输出

  2. 4.1 中断原理 4.1.1 中断的基本概念 1. 中断 由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。 该程序执行完成后,CPU接着执行被暂停的程序。 这个过程称为中断。

  3. 2. 中断源 • 引发中断的事件称为中断源 • 内部中断(在CPU内部的中断源): • 程序异常(运算溢出等), • 陷阱中断(例如,单步运行程序等), • 软件中断(执行特殊指令)等。 • 外部中断(发生在CPU外部的中断): • 外部故障(电源故障,存储器读写校验错) • 外部事件(定时时间到,外部特殊信号) • IO事件(外部设备完成一次IO操作,请求数据传输)

  4. 3. 中断类型 用若干位二进制表示的中断源的编号。 4. 中断断点 由于中断的发生,某个程序被暂停执行。 该程序中即将执行,由于中断没有被执行的那条指令的地址称为中断断点,简称断点。

  5. 5. 中断服务程序 • 处理中断事件的程序段称为中断服务程序。 如:故障中断服务程序,输入输出中断服务程序。 • 不同类型的中断需要不同的中断服务程序。 • 中断服务程序不同于一般的子程序: • 子程序由某个程序调用,它的调用是由程序设定的, 它的执行时间是确定的。 • 中断服务程序由某个事件引发,它的执行一般是随 机的,不确定的。

  6. 6. 中断系统 为实现计算机的中断功能而配置的相关硬件、软件的集合称为中断系统。

  7. 1. 并行处理能力 • 实现CPU和多个外设同时工作,提高CPU效率。 • 2. 实时处理能力 • 计算机应用于实时控制时,对外部事件及时响应。 • 故障处理能力 • 及时处理故障,不影响其他程序的运行。 • 4. 多道程序或多重任务的运行 • 在操作系统的调度下,运行多道程序或多重任务。 4.1.2 中断工作方式的特点

  8. 1. 对中断全过程的控制 • 中断源发出中断请求时,CPU能决定是否响应这一中断。 • 若允许响应这个中断请求,CPU在保护断点后,将控制转移到相应的中断服务程序去 • 中断处理完,CPU返回到断点处继续执行被中断的程序。 4.1.3 中断管理

  9. 2. 中断源的识别 • 软件识别: • 响应中断后, CPU进入中断处理程序。 • 在这个程序里,CPU逐个查询各中断源的状态,确 定是哪一个设备申请了中断。 • 硬件识别: • 响应中断后, CPU进入一个“中断响应周期”。 • 在这个周期里,申请中断的设备向CPU发送它的中断类型。

  10. 3. 中断的优先权 优先权:有多个中断源同时提出中断请求时,CPU响应中断的优先次序。 (1)软件查询法 (2)分类申请法 (3)链式优先权排队——菊花链法 (4)可编程中断控制器——“向量”优先权排队

  11. 菊花链中断优先级排队电路 图4-1

  12. 4. 中断嵌套 • CPU在处理中断过程中,如果出现了级别更高的中断 请求,CPU停止执行低级中断的处理程序而去优先处 理高级中断。 • 等高级中断处理完毕后,再接着执行低级的未处理完 的程序。 • 这种中断处理方式称为多重(级)中断或中断嵌套。 • CPU在响应中断时已将IF清零,一定要在中断处理程 序中加入开中断指令,才有可能进行中断嵌套。

  13. 中断嵌套

  14. 1.中断源请求中断 • (1)外部中断源由外部硬件产生可屏蔽或不可屏蔽中断的请求信号; • (2)内部中断源在程序运行过程中发生了指令异常或其他情况。 • (3)中断屏蔽CPU用程序的方法允许某些中断源发出中断请求,而禁止某些中断源请求中断 • 在外设的接口内增设一个中断屏蔽触发器 • Q=0时,中断请求不能发往INTR; • 适当地设定中断屏蔽触发器的状态,可以控制中断 请求信号是否能够送到INTR端 4.1.4 中断过程

  15. 2. 中断响应 (1) 响应可屏蔽中断必须同时具备以下条件: • CPU处于允许中断状态(IF=1); • 没有不可屏蔽中断请求和总线请求; • 当前指令执行结束。 (2) 响应不可屏蔽中断必须同时满足以下条件: • 没有总线请求; • 当前指令执行结束。 (3) 响应内部中断的条件: • 当前指令执行结束。

  16. 中断响应周期 CPU接受中断请求后转入中断响应周期: (1)识别中断源,取得中断源的中断类型; (2)将标志寄存器FLAGS和CS、IP(断点)先后压入 堆栈保存; (3)清除自陷标志位TF和中断允许标志位IF; (4)获得相应的中断服务程序入口地址,转入中断服务 程序。

  17. 中断过程 图4-3

  18. 3. 中断服务 (1)保护现场: 保护中断服务时要使用的寄存器(压栈); (2)开中断: 中断服务时能响应更高级的中断请求; (3)中断处理:执行输入输出或非常事件的处理; (4)关中断: 恢复现场时不被新的中断打扰; (5)恢复现场: 将堆栈中保存的内容弹出; (6)中断返回 :通过中断返回指令,弹出IP,CS,FLAGS, 程序回到被中断的地址,恢复中断前的状态。

  19. 4.2 8086 CPU中断系统 4.2.1 8086的中断类型 中断类型:用8位二进制表示,可以有256个不同的中断; 中断请求输入引脚:NMI、INTR; 中断优先级: INT 0(除法溢出)→溢出中断(INTO)→INT n指令→NMI → INTR → 单步中断。

  20. 8086 CPU中断 图4-4

  21. 1. 可屏蔽中断 • IF= 0时,CPU不响应INTR的中断请求;IF= 1时,CPU响应INTR的中断请求。 • 用STI指令使IF=1,称为开中断; 用CLI指令使IF=0,称为关中断。 • 系统复位后,或CPU响应了任何一种中断后,都会使IF=0。 • 应使用STI指令使IF=1,确保中断开放。 • 可屏蔽中断源由8259A统一管理,每片8259A可以接 受8个外部设备的中断请求。

  22. 2. 不可屏蔽中断 • NMI接收上升沿触发的中断请求信号; • 输入脉冲应大于两个时钟周期; • CPU对NMI中断请求的响应,不受中断允许 标志位IF控制; • NMI中断类型码固定为2。

  23. 3. 内部中断 (1)除法溢出中断(n=0): 除数为零或商超过寄存器所能表达的范围。 (2)单步中断(n=1) :TF=1,每执行完一条指令产生一次中断。 用于实现单步操作,是强有力的调试手段。 (3)断点中断 (n=3) : INT 3指令产生一个中断类型码为3的断点中断。 (4)INTO指令 (n=4) :OF=1,则INTO指令引起类型码为4的内部中断;OF=0,此指令不起作用,程序顺序执行。 (5) INT n指令

  24. 4.2.2 8086的中断向量表 中断向量:中断服务程序的入口地址; • 8086的中断向量表从内存00000H开始存放; • 每个中断向量占用4个字节; • 中断服务程序入口的偏移地址存入两个低地址字节, 入口的段基址存入两个高地址字节; • 256个中断向量占用00000H~003FFH共1024个字节。

  25. 8086的中断向量表 图4-5

  26. AH=35H AL=中断类型 INT 21H →把原有的中断向量送ES:BX AH=25H AL=中断类型 DS:DX=中断向量 INT 21H →把新的中断向量送中断向量表

  27. 4.2.3 8086对外部中断的响应 1. 不可屏蔽中断NMI • 不受CPU内部中断允许标志IF的约束,优先权高于INTR; • 中断类型号2;采用边沿触发(上升沿)方式 (1)标志寄存器压入堆栈 (2)清除IF标志和TF标志 (3)保存断点,把断点处的CS和IP内容先后压入堆栈 (4)取出中断服务程序的入口地址,送入IP和CS (5)进入中断服务程序 用途:主板上RAM奇偶错, I/O通道中的奇偶校验错, 8087协处理器异常中断。

  28. 2.可屏蔽中断INTR • 外设的中断请求首先送到8259A,按照中断优先权排队; • 电平触发方式,高电平有效。 响应过程: • 第一个INTA总线周期,通知外部做好准备; • 第二个INTA总线周期,从外部获取中断类型号; • 执行总线写周期,把FLAGS压入堆栈,并清除IF,TF; • 执行总线写周期,把CS内容压栈; • 执行总线写周期,把IP内容压栈; • 执行总线读周期,中断服务程序入口偏移地址送入IP; • 执行总线读周期,中断服务程序入口段基址送入CS。

  29. 4.3 可编程中断控制器8259A • 接收8路外部中断请求,通过级联可以扩展至64级; • 优先权排队和控制,优先权方式可选; • 中断嵌套功能; • 向CPU提供中断类型号; • 对每一级编程进行屏蔽或开放。 4.3.1 8259A的基本功能

  30. 4.3.2 8259A引脚及内部结构 DB7~DB0:双向三态数据总线; IR7~IR0: 外设向8259A发出的中断请求信号,输入。 A0: 地址线,输入,用于选择内部端口。 CS#: 片选信号,输入、低电平有效。 RD#: 读信号,输入、低电平有效。 WR#: 写信号,输入、低电平有效。 INTA#: 中断响应信号,输入、低电平有效。 INT: 中断请求信号,输出、高电平有效。 CAS2~CAS0:双向的级联线。 SP/EN: 主从设备设定/缓冲器读写控制,双向双功能

  31. 8259A引脚 图4-6

  32. 8259A的内部结构 图4-7

  33. 2. 中断请求寄存器IRR • 锁存外部设备送来的IR7~IR0中断请求信号; • 中断请求线变为高电平时,IRR中与之对应的一位被置1; • 寄存器的内容可以被CPU读出。 3. 中断屏蔽寄存器IMR • 记录对每一级中断的屏蔽信号; • 置1时,对应的外部中断请求线被屏蔽; • 设置IMR起到改变中断请求优先级的效果。

  34. 4. 中断服务状态寄存器ISR • 记录当前正在被服务的所有中断级; • CPU响应IRi中断请求,ISR中对应第i位置1; • 中断处理结束前,要使用指令清除这一位; • 寄存器可以被CPU读出。 5.优先权处理器 • 识别和管理各中断请求信号的优先级别; • 多个中断请求信号同时出现时,优先权处理器根据 控制逻辑规定的优先级规则和IMR的内容来判断这 些请求信号的最高优先级。

  35. 6.控制逻辑 初始化命令字寄存器ICW1~ICW4: 在系统初始化时置入,工作过程中保持不变。 操作命令字寄存器OCW1~OCW3: 工作过程中根据需要设定。 7. 数据总线缓冲器 8位的双向三态缓冲器,是8259A与系统数据总线的接口。

  36. 8.读/写控制逻辑 接收、执行CPU的读/写命令。 9.级联缓冲/比较器 在级联方式的主/从结构中,用来控制8259A的级联。 缓冲器: SP/EN输出低电平时,开启双向缓冲器。 级联比较器: 主8259A:用CAS2~CAS0输出被选中从片代码; 从8259A: 接收主器件送来的从片选择代码

  37. 4.3.3 8259A的工作方式 1. 8259A的工作过程 (1)中断源在IR0~IR7上产生中断请求; (2)中断请求被锁存,经IMR“屏蔽”,送优先权电路判优; (3)控制逻辑接收中断请求,向CPU输出INT信号; (4)CPU接受8259A的INT信号,进入连续两个INTA周期 (5)优先权电路将最高优先权对应ISR中的位置位; (6)第二个INTA周期把中断类型号输出到数据总线; (7)CPU读取中断类型号,转移到相应的中断处理程序。 (8)中断处理结束前,向8259A发送EOI(中断结束)命 令,使ISR相应位复位,本次中断到此结束。

  38. 2. 8259A的优先权管理 (1)固定优先级 中断源的优先级由它所连接的引脚编号决定; 全嵌套方式 : 中断优先权级别固定,IR0优先权最高,IR7最低。 特殊全嵌套 : 接收同一引脚上的第二次中断请求。 (2)循环优先级 各个中断申请具有大体相同的优先级; 有优先权自动循环方式和优先权特殊循环方式。

  39. 3. 中断屏蔽方式 (1)普通屏蔽方式 • 通过将中断屏蔽字写入IMR实现; • 写入某位为“1”,对应的中断请求被屏蔽;为“0”开放。 (2)特殊屏蔽方式 • 采用特殊屏蔽方式并用屏蔽字对IMR中某一位置“1”, 会同时使ISR中对应位清“0”。 • 对屏蔽位的设置部分地改变了中断优先权。

  40. 4. 中断结束方式 中断结束命令(EOI): 将ISR中的相应位清“0”,表示中断处理结束。 (1)自动中断结束方式(AEOI) • 8259A在第二个中断响应周期INTA信号的后沿,自动 将ISR中被响应中断级的对应位清“0”。 (2)非自动中断结束方式(EOI) • 从中断服务程序返回前,在程序里向8259A输出一个中 断结束命令(EOI),把ISR对应位清“0”。 一般的中断结束方式:由8259A自动选择优先权最高的位。 特殊的中断结束命令:指令内指明要清除ISR中的某一位。

  41. 注意! 在非自动中断结束方式下,如果在程序里忘了发送中断结束命令,那么,8259A将不再响应这个中断以及比它级别低的中断请求。

  42. 5. 8259A查询工作方式 • 工作在程序查询方式时,8259A不向CPU发INT信号; • CPU通过查询8259A了解有无中断; • 如果有中断发生,转入相应的服务程序。 设置查询方式的过程: • 关闭中断; • 用输出指令把“查询方式命令字”送到8259A; • 对8259A执行一条输入指令,读取查询字 • 查询字格式为: I XXXXW2WlW0 I=1,有中断请求,W2WlW0为最高优先级编码。

  43. 4.3.4 8259A的编程 初始化命令字: • 在系统初始化时写入; • 用来设定8259的基本工作方式。 操作命令字: • 在初始化后的任何时刻写入8259A; • 用来动态地控制8259A的操作。

  44. 1. 初始化命令字ICW (1)初始化命令字ICW1 图4-8

  45. 注意! 向8259A送入一条A0=0、D4=1的命令(ICW1): • 启动8259A的初始化过程, • 相当于RESET信号的作用,自动完成下列操作: • 清除中断屏蔽寄存器IMR; • 设置以IR0为最高优先级,IR7为最低优先级的全嵌 套方式; • 固定中断优先权排序。

  46. (2)初始化命令字ICW2 图4-9

  47. (3)初始化命令字ICW3(主片) 图4-10

  48. (3)初始化命令字ICW3(从片) 图4-11

  49. (4)初始化命令字ICW4 图4-12

  50. (5)8259A初始化 按以下顺序对8259A初始化: 单片8259A:ICW1、ICW2、ICW4 级联方式:ICW1、ICW2、ICW3、ICW4 注意:级联方式下,每一片8259A都要独立地按上 面顺序写入初始化命令字。

More Related