ImageVerifierCode 换一换
格式:PPT , 页数:216 ,大小:3.19MB ,
资源ID:2171276      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2171276.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机(本科).ppt)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

微机(本科).ppt

1、第6章 输入/输出技术,6. 1 I/O接口概述 6. 2 I/O端口地址译码 6.3 基本的并行输入/输出接口 6.4 程序控制I/O方式 6.5 中断方式 6.6 直接存储器存取(DMA)方式 习题,6. 1 I/O接口概述,6.1.1 I/O接口功能I/O接口是位于计算机系统与外设之间的连接电路,是计算机系统与外设连接的桥梁,起着沟通、协调两者关系的作用。针对不同的外设,I/O接口通常具有如下基本功能:(1) 提供信息传递通道。由于接口位于计算机系统与外设中间,为两者提供信息传递的通道。,(2) 进行数据格式转换。我们通常将外设提供或接收的信息广义地称为数据,其形式有多种,如模拟数据、数

2、字数据、并行数据、串行数据等。而计算机系统传输、处理的数据只是数字化的并行数据。因此,在两者进行信息交换时若数据格式不一致,则必须进行数据格式转换。在I/O接口中主要完成的数据格式转换有: 模/数转换。 串/并转换。 数位转换。某些外设虽然是数字化的并行设备,但其传输的并行数据数位若与计算机系统的并行数据数位不符,也需要通过接口将两者的数位作适当的变换。,(3) 进行速度匹配。低速的外设与高速的计算机之间速度的协调。一种常用的速度变换方法是在接口中设计数据缓冲器,通过数据缓冲器的“缓冲”功能,使快速的计算机系统与慢速的外设之间达到有效的信息传递。,(4) 进行负载匹配。目前的微机系统均采用总线

3、结构,外设与微机系统的连接实际上是通过将外设经过接口连接在微机的系统总线上来实现的。由于每种外设对总线呈现的负载不同,而系统总线的负载能力是有限制的,因此,当大负载外设或多外设连接到微机系统时,接口中必须设计负载匹配电路。驱动器可以作为一种能够提供大电流的电流负载匹配电路来使用。(5) 提供中断能力。当接口中包含中断请求电路时,可以支持外设以中断方式与计算机系统进行信息交换,这样可以提高I/O接口自身在多种输入/输出方式下的适应性。,6.1.2 基本I/O接口模型由于我们需要在外设和计算机系统之间建立多个通道,因此一个外设接口可能由多个端口构成。假定外设已数字化,并利用数据、状态、控制(命令)

4、三类信息与计算机系统进行信息交换,则图6.1所示的正是外设与计算机系统连接的典型I/O接口模型。接口中的数据端口提供了外设与计算机系统间数据交换的通道,命令端口传递CPU发给外设的控制命令,状态端口将外设的工作状态反映给CPU。,图6.1 典型I/O接口模型,对I/O地址有两种编排方式。一种是将内存地址与I/O地址分别编排在不同的地址间(内存地址空间与I/O地址空间)中,简称独立编址方式。例:Intel的80X86,Z80系列。 特点:1.端口与存储器分别独立编址,端口不占用内存空间。2.设有专门的I/O指令对端口进行读写,对内存操作的指令不能用于I/O端口操作。 例:MOV 00000H,

5、AL MOV DL, BXOUT 000H, AL IN AL, 0010H,另一种是将内存地址与I/O地址统一编排在同一地址空间中,简称统一编址方式;例:Motorola的M6800系列,Intel 51单片机系列。 特点:1.I/O端口相当于内存的一部分,使内存容量减小;2.对I/O端口的读/写与存储器的读/写相同,所有可对内存操作的指令对I/O端口均可使用;3.指令系统中不专设I/O指令。,6. 2 I/O端口地址译码,6.2.1 80x86 I/O地址空间80x86系统有独立的I/O地址空间。在80x86系列的PC机中,I/O地址空间为0000HFFFFH,大小为64 KB,用16位地

6、址表示。图6.2表明了PC机中I/O的映射,其中0000H03FFH之间的I/O空间为计算机系统和ISA总线预留,而位于0400HFFFFH的I/O端口对于用户应用、主板功能和PCI总线是有效的。,图6.2 PC机中I/O的映射,80287协处理器将00F8H00FFH的I/O地址用于通信,因此,Intel预留了00F0H00FFH的I/O端口。80386至Pentium使用I/O端口800000F8H800000FFH与它们的协处理器进行通信。由于数据总线位数的不同,使得80x86系统的I/O地址空间在结构上有所不同,正如内存结构一样。8088系统的I/O空间由1个字节块构成,可实现8位I/

7、O传输;8086、80186、80286、80386SX系统I/O空间由高、低2个字节块构成,可实现8/16位I/O传输,如图6.3 所示;类似地,80386DX、80486系统的I/O空间由4个字节块构成,可实现8/16/32位I/O传输;Pentium系列的I/O空间由8个字节块构成,可实现8/16/32位I/O传输(注:目前Pentium机中没有64位的I/O指令)。,图6.3 I/O结构,6.2.2 I/O地址译码方式80x86系列微机的I/O地址只有两种形式:8位I/O地址(称固定地址,直接存于指令中)与16位I/O地址(称可变地址,存于DX中),分别对应直接与间接寻址(也称固定于可

8、变端口)的I/O指令。8位I/O端口地址出现在A15A0的0000H00FFH空间上,使用固定端口I/O指令访问,使用时只用00HFFH表示,通常我们仅对A7A0译码,将A15A8忽略。而对16位I/O端口地址译码时,A15A0必须全部或部分使用,使用可变端口I/O指令访问。对于32位地址而言,A31A16对于I/O地址是未定义的。,80X86采用I/O端口和存储器分别独立编址。*可寻址1M个内存单元*内存范围00000H0FFFFFH*内存单元的地址有5种寻址(思考?)可寻址64K个I/O端口I/O端口范围0000H0FFFFHI/O端口的地址由一个8位二进制直接寻址或DX寄存器间接寻址。,

9、1.输入指令IN 直接寻址 IN AL,PORT; (AL) (PORT端口)IN AX,PORT; (AL) (PORT端口); (AH) (PORT+1端口)PORT为端口地址(直接寻址),大小为0255或00FFH. 间接寻址IN AL,DX; (AL) (DX)端口)IN AX,DX; (AL) (DX)端口); (AH) (DX)+1端口),2.输出指令OUT 直接寻址 OUT PORT,AL; (PORT端口) (AL) OUT PORT,AX; (PORT端口) (AL) ; (PORT+1端口) (AH) 间接寻址OUT OUT,AL; (DX)端口) (AL)OUT OUT,

10、AX; (DX)端口) (AL); (DX)+1端口) (AH),I/O端口地址译码时也可以采用两种译码方式:全地址译码与部分地址译码。全地址译码时所有I/O地址线参与译码;部分地址译码时只需部分I/O地址线(如某些高位地址线)参与译码。全地址译码不会造成I/O空间的浪费;部分地址译码会使I/O设备占据I/O地址空间的多个重叠区域,而重叠的地址区域不可以用于其他I/O设备,但其最大的优点是译码电路简单,由此可适当地降低成本,提高可靠性。,6.2.3 I/O端口地址译码举例例6.1 使用8位I/O地址5CH选择输入端口。译码电路如图6.4所示,采用全地址译码方式,由逻辑门器件实现。,图6.4 8

11、位I/O地址译码电路,例6.2 使用16位I/O地址A0D8HA0DFH选择I/O端口。译码电路如图6.5所示,采用全地址/部分地址译码方式,由译码器件实现。,图6.5 16位I/O地址译码电路,例6.3 使用8位I/O地址选择输出端口。译码电路如图6.6所示,采用部分地址译码方式(A0未参与译码),由数字比较器实现。 当开关SW0、SW2、SW5为接通状态时,由PQ端得到输出端口DAHDBH的地址译码信号。当开关SW0、SW1、SW6、SW7为接通状态时,由PQ端得到输出端口3CH3DH的地址译码信号。,图6.6 8位I/O地址译码电路,例6.4 使用ISA总线上10位I/O地址03C0H0

12、3FFH选择I/O端口。译码电路如图6.7所示,采用部分地址译码方式(A0、A1、A2未参加译码),由ROM器件实现。利用在ROM的特定单元(由待译码的I/O地址选定)中写入特定值(只有1个数据位为0,其余7位为1),其他单元全部写入FFH,使得当从ROM单元读出数据时,数据线上输出的信号即可以作为I/O地址译码信号。,图6.7 ISA总线上10位I/O地址译码电路 (a) 连接电路;(b) ROM中写入的内容;(c) ROM输入/输出真值表,例6.5 将例6.4中的译码器件改为可编程逻辑器件(PLD)16L8,译码电路如图6.8所示。,图6.8 10位I/O地址译码器,利用PLD写入器,根据

13、如下信息对16L8进行编程,即可由16L8的输出端获得所需的I/O地址译码信号: ;pins 1 2 3 4 5 6 7 8 9 10A9 A8 A7 A6 A5 A4 A3 NC NC GND ;pins 11 12 13 14 15 16 17 18 19 20NC O8 O7 O6 O5 O4 O3 O2 O1 VCC EQUATIONS /O1A9*A8*A7*A6*/A5*/A4*/A3 /O2A9*A8*A7*A6*/A5*/A4*A3 /O3A9*A8*A7*A6*/A5*A4*/A3 /O4A9*A8*A7*A6*/A5*A4*A3 /O5A9*A8*A7*A6*A5*/A4*

14、/A3 /O6A9*A8*A7*A6*A5*/A4*A3 /O7A9*A8*A7*A6*A5*A4*/A3 /O8A9*A8*A7*A6*A5*A4*A3,6.3 基本的并行输入/输出接口,6.3.1 并行输入接口三态缓冲器有多种型号,74LS244是一种常用的型号,它集成了8个输入与输出同相、控制端低电平有效的三态门,可以作为8位并行输入接口。一种典型的输入接口设计如图6.9所示。这是一个8088系统中的8位输入端口,它通过控制一个8位的三态缓冲器74LS244,在执行以下指令时可以获得8个开关的状态:IN AL,80H ;从80H端口获得8个开关接通或断开的信息,将之存入AL寄存器中,图6

15、.9 三态缓冲器作8位并行输入接口,6.3.2 并行输出接口并行输出接口可以选用数据锁存器或三态数据锁存器。74LS273是常用的数据锁存器,而74LS374是常用的三态数据锁存器。图6.10是利用74LS273设计的用于8086系统中的8/16位输出端口,可以分别给两个8位输出端口加载信息,控制每个端口连接的发光二极管亮或不亮;也可以同时给两个8位输出端口加载信息,控制16个发光二极管的亮或不亮。,图6.10 利用74LS273设计的8/16位输出端口,控制程序: MOV DX,3804H MOV AL,00H OUT DX,AL ;与端口3804H连接的8个发光二极管全部不亮 MOV DX

16、,3805H MOV AL,0FFH OUT DX,AL ;与端口3805H连接的8个发光二极管全部发光 MOV DX,3804H MOV AX,0FFFFH OUT DX,AX ;与端口3804H和3805H连接的16个发光二极管全亮,图6.11 利用74LS374设计的32位输出端口,6.4 程序控制I/O方式,6.4.1 无条件传送方式1. 输入接口设计对于简单的输入设备,在硬件上只需要设计一个数据输入接口即可以将该外设与CPU连接起来。可实现数据输入接口的器件有三态门,如74LS244。 下面以开关为例,说明用无条件传送方式如何实现将外设数据输入到CPU。由于微机系统采用总线结构,系统

17、中的所有设备均通过总线相互连接,故开关只需要与微机系统总线相连,即可以通过总线与CPU连接起来。图6.12给出了开关S与微机系统连接的接口电路。,图6.12 开关K与微机系统连接的接口电路,完成如下任务:当开关接通时,CPU执行程序段ON;当开关断开时,CPU执行程序段OFF。下述指令的执行可以完成该任务:,MOV DX, 0FF7H IN AL, DX AND AL, 01H JZ ON ;假定程序段ON与本程序段在同一内存段中 JMP OFF,指令IN AL,DX执行时,产生了为低和I/O地址为FFF7H的信息,这使得图中的译码器输出低电平而打开三态门,同时CPU将三态门提供的开关信息通过

18、数据线加载至寄存器AL中,完成了将开关状态无条件传送至CPU的数据输入任务。,图6.13 三态门作为数据输入接口的一般连接模式,2. 输出接口设计作为以无条件传送方式实现数据输出的例子,下面给出CPU对发光二极管的控制。图6.14为发光二极管与微机系统连接的接口电路。锁存器作为发光二极管与微机系统数据总线连接的中间接口,接收来自CPU的输出数据。当锁存器的CP端出现上升沿信号时,数据总线上的数据被锁存于锁存器内部并输出。,图6.14 发光二极管与微机系统连接的接口电路,对于图6.14中的电路,CPU执行下述指令可以使两个发光二极管发光: MOV DX, 0000H MOV AL, 81H OU

19、T DX , AL 而CPU执行下述指令可以使两个发光二极管不发光: MOV DX,0000H MOV AL,00H OUT DX,AL,从该例子同样可看出,对于像发光二极管这样的简单输出设备,在硬件上只要提供类似锁存器这样的输出接口,软件上执行一条OUT指令,CPU就可以在任何时刻向外设输出数据。图6.15示意了利用锁存器作为数据输出接口的一般连接模式。图中,译码器输入的I/O地址应与OUT指令中使用的I/O地址一致。,图6.15 锁存器作为数据输出接口的一般连接模式,6.4.2 查询方式实际中,有许多外设与微机系统的信息交换需要在满足一定条件的情况下才能进行。假如外设的速度比较慢,对CPU

20、的工作效率要求不高,那么CPU就可以用查询的方式与外设进行信息交换。 所谓查询方式,就是CPU通过执行指令不断地询问外设的工作状态,然后根据外设的状态确定对其进行I/O操作的时刻。典型的查询方式工作流程如图6.16所示。从图中清晰可见,每次的I/O操作均是在对外设状态查询并被外设允许的情况下进行的,这是查询方式的主要特点。,图6.16 典型的查询方式工作流程,1. 查询方式的实现为了使CPU能够查询到外设状态,需要外设提供一个状态信息(此状态信息将作为一个特殊的数据),然后利用图6.13中的电路设计一个状态接口,将外设的状态信息传递给CPU,供CPU查询。若CPU从外设接收数据,则CPU先读状

21、态端口以获取外设状态。当外设已处于准备好数据的状态时,CPU从数据端口读取外设数据,必要时从控制端口向外设发出数据已接收的响应信号,使外设开始下一数据的准备工作;当外设处于未准备好数据状态时,CPU只能通过不断的查询来等待外设状态的建立。,若CPU向外设输出数据,则CPU同样先读状态端口以获取外设状态。当外设已处于可以接收数据的状态时,CPU通过数据端口向外设输出数据,必要时从控制端口向外设发出数据已输出的响应信号,启动外设接收数据;当外设处于不可以接收数据的状态时,CPU仍只能通过不断的查询来等待外设状态的建立。显然,CPU在与外设以查询方式进行信息交换时,数据端口与状态端口是该方式实现的硬

22、件基础,而在I/O控制程序中设置状态查询环是该方式的软件实现中不可缺少的部分。这种方法的优点是所用硬件的数据较少,代价是软件开销较大。,图6.17 用查询方式实现I/O传送的示例 (a) 外设与微机接口电路;(b) 外设工作时序,现在欲将8086/88系统中从内存地址为D2000H开始的顺序1000个数据输出给图6.17中的外设,用查询方式编写的控制程序段如下:,DAOUT:MOV AX, 0D200H MOV DS, AX MOV BX, 0 ; 初始化内存首地址 MOV CX, 1000 ; 初始化计数器 MOV DX, 02F9H MOV AL, 01H OUT DX, AL ; 初始化

23、选通信息 NEXT:MOV DX, 02FAH,WAT: IN AL, DX AND AL, 80H JNZ WAT ; 状态查询环 MOV DX, 02F8H MOV AL, BX OUT DX, AL ; 数据输出 MOV DX, 02F9H MOV AL, 00H OUT DX, AL CALL DLY100 s ; DLY100 s为100 s的延迟子程序 MOV AL, 01H OUT DX, AL ; 产生选通信号 INC BX ; 修改内存指针 LOOP NEXT ; 输出次数的循环控制 RET,2. 多外设的查询控制在微机系统中,希望以查询方式与微机进行信息交换的外设可能有多个

24、。查询方式是一种同步机制,它以轮询的方式依次对各个外设进行服务。轮询的顺序确定了外设的优先级,而轮询的顺序又是根据外设的重要性确定的。通常是相对重要的和速度快的外设先被查询、服务,而相对不重要的和速度慢的外设后被查询、服务。可以采取多种控制方法对外设进行轮询,图6.18示意了几种轮询控制流程。这几种方法的不同之处在于对外设优先级间差异大小的规定不同。,查询方式与无条件传送方式类似,它们的实现都不需要专门的硬件,所有的输入/输出传送都是在程序的控制下完成的,只是无条件传送方式更加简单,它可以看做是查询方式的一种特例,因此两者同属于程序控制的I/O方式。由于查询与无条件传送方式实现简单,因此在许多

25、外设与系统连接的场合中得到应用。,图6.18 几种轮询控制流程,6.5 中 断 方 式,查询方式尽管很简单,但它有以下两方面的限制:(1) CPU在对外设查询时不能做其他的工作,特别是在对多个外设轮询时,无论是否必要都要查询外设状态,造成处理器时间的浪费,使CPU工作效率降低。(2) CPU在对多个外设以查询方式实现I/O操作时,如果某外设要求CPU对其服务的时间间隔小于CPU对多个外设轮询服务一个循环所需要的时间, 则CPU就不能对该外设进行实时数据交换,这可能会造成数据丢失。,6.5.1 中断的概念所谓中断,是指某事件的发生引起CPU暂停当前程序的运行,转入对所发生事件的处理,处理结束后又

26、回到原程序被打断处接着执行的这样一个过程。显然,中断的产生需要特定事件的引发,中断过程的完成需要专门的控制机构。图6.19 示意了微机中实现中断的基本模型,其中的中断控制逻辑和中断优先级控制逻辑构成了中断控制器,用来控制CPU是否响应中断事件提出的中断请求、多个中断事件发生时CPU优先响应哪一个、如何对中断事件进行处理以及如何退出中断,即它控制了中断方式的整个实现过程。,图6.19 微机系统中实现中断的基本模型,图6.20显示了在有中断产生的情况下CPU运行程序的轨迹。从程序执行的角度看,中断使CPU暂停了正在执行的程序,转到中断处理程序上执行,在中断处理程序被执行完毕后,又回到被暂停程序的中

27、断断点处接着原状态继续运行原程序。,图6.20 在有中断产生的情况下CPU运行程序的轨迹,1. 中断源能够引发中断的事件被称为中断源。通常,中断源有两类:内部中断源与外部中断源。由处理机内部产生的中断事件称为内部中断源。常见的内部中断源有计算溢出、指令的单步运行、程序运行至断点处、执行特定的中断指令等。由处理机外部设备产生的中断事件称为外部中断源。常见的外部中断源有外设的输入/输出请求、定时时间到、电源掉电、设备故障等。由内部中断源引发的中断称为内中断,由外部中断源引发的中断称为外中断。,2. 中断过程中断方式的实现一般需要经历下述过程:中断请求中断响应断点保护中断源识别中断服务断点恢复中断返

28、回1) 中断请求当外部中断源希望CPU对它服务时,就以产生一个中断请求信号并加载至CPU中断请求输入引脚的方式通知CPU,形成对CPU的中断请求。为了使CPU能够有效地判定接收到的信号是否为中断请求信号,外部中断源产生的中断请求信号应符合下列有效性规定:,(1) 信号形式应满足CPU的要求。如8086/88 CPU要求非屏蔽中断请求信号(NMI)为上升沿有效,可屏蔽中断请求信号(INTR)为高电平有效。(2) 中断请求信号应被有效地记录,以便CPU能够检测到它。(3) 一旦CPU对某中断源的请求提供了服务,则该中断源的请求信号应及时撤消。后两点规定是为了保证中断请求信号的一次有效性,有许多通用

29、接口芯片或可编程中断控制器都提供了这一保证。内部中断源以CPU内部特定事件的发生或特定指令(如INT n指令)的执行作为对CPU的中断请求。,2) 中断响应CPU对内部中断源提出的中断请求必须响应,而对外部中断源提出的中断请求是否响应取决于外中断源的类型及响应条件。如CPU对非屏蔽中断请求会立即作出反应,而对可屏蔽中断请求则要根据当时的响应条件作出反应。CPU接受中断请求称为响应中断,不接受中断请求称为不响应中断。CPU对中断请求的检测时刻为每条指令执行的最后一个时钟周期。只有当可屏蔽中断请求满足一定的响应条件时,CPU才可响应其中断请求。不同的微机对可屏蔽中断请求有不同的响应条件。8086/

30、88系统的响应条件为:,(1) 指令执行结束。(2) CPU处于开中断状态(即IF1)。(3) 没有发生复位(RESET)、保持(HOLD)和非屏蔽中断请求(NMI)。(4) 开中断指令(STI)、中断返回指令(IRET)执行完,需要再执行一条指令,才能响应INTR请求。,3) 断点保护一旦CPU响应了某中断请求,它将对此中断进行服务,也即将从当前程序跳转到该中断的服务程序上。为了在中断处理结束时能使CPU回到被中断程序断点处接着执行原程序,需要对被中断程序的断点信息进行保护。不同的CPU所作的断点保护操作不同。8086/88 CPU的硬件自动保护的断点信息为断点地址(包括断点处的段地址与段内

31、偏移地址)和标志寄存器内容,它通过压栈的方法将断点信息保存在堆栈中,其他信息的保护需要通过软件在中断处理程序中完成。,4) 中断源识别当系统中有多个中断源时,一旦中断发生,CPU必须确定是哪一个中断源提出了中断请求,以便对其作相应的服务,这就需要识别中断源。常用的中断源识别方法有:(1) 软件查询法。对于外中断,该方法在硬件上需要输入接口的支持,如图6.21(a)所示。一旦中断请求被CPU响应,则CPU在中断处理程序中读中断请求状态端口,并通过图6.21(b)所示的流程依次查询外部中断源的中断请求状态,以此确定提出请求的中断源并为其服务。,图6.21 中断源识别的软件查询法 (a) 硬件接口;

32、(b) 软件查询流程,(2) 中断矢量法。该方法是将多个中断源进行编码(该编码称为中断矢量),以此编码作为中断源识别的标志。中断源在提出请求的同时,向CPU提供此编码供识别之用。在8086/88中断系统中,识别中断源采用的就是中断矢量法。,5) 中断服务中断服务完成对所识别中断源的功能性处理,是整个中断处理的核心,也是对各种中断源进行处理的之差别所在。由于中断源不同,要求CPU对其进行的处理不同,因此中断服务的内容、复杂度也不同。如有的中断服务只做简单的I/O操作,有的中断服务可能要监测控制一条生产线,还有的中断服务将完成与其他系统的协调工作。总之,中断服务可以完成的任务是多种多样的。,6)

33、断点恢复中断服务结束后,应恢复在中断处理程序中由软件保护的信息。若在中断处理程序开始处,按一定顺序将需要保护的信息压入堆栈,则在断点恢复时,应按相反的顺序将堆栈中的内容弹回到信息的原存储处。7) 中断返回中断返回实际上是CPU硬件断点保护的相反操作,它从堆栈中取出断点信息,使CPU能够从中断处理程序返回到原程序继续执行。一般中断返回操作都是通过执行一条中断返回指令实现的。,3. 中断优先级及嵌套若中断系统中有多个中断源同时提出中断请求,那么CPU先响应谁呢? 中断优先级就是为解决这个问题而提出的。由于中断源种类繁多、功能各异,因此它们在系统中的地位、重要性不同,它们要求CPU为其服务的响应速度

34、也不同。按重要性、速度等指标对中断源进行排队,并给出顺序编号,这样就确定了每个中断源在接受CPU服务时的优先等级(即中断优先级)。,在多中断源的中断系统中,解决好中断优先级的控制问题是保证CPU能够有序地为各个中断源服务的关键。中断优先级控制逻辑要实现以下功能:(1) 不同优先级的多个中断源同时提出中断请求时,CPU应首先响应最高优先级的中断源提出的请求。(2) CPU正在对某中断源服务时,若有优先级更高的中断源提出请求,则CPU应对高优先级的中断作出响应,即高优先级的中断请求可以中断低优先级的中断服务。,目前采用的解决中断优先级控制的方案有:(1) 软件查询。采用软件识别中断源的方法(如图6

35、.21所示),以软件查询的顺序确定中断源优先级的高低,即先查询的优先级高,后查询的优先级低。(2) 硬件链式优先级排队电路。(3) 硬件优先级编码比较电路。(4) 利用可编程中断控制器(PIC)。这是目前使用得最广泛,也是最方便的方法,是80x86系统中采用的方法。,图6.22 中断嵌套示意图,中断嵌套可以在多级上进行。要保证多级嵌套的顺利进行,需要做以下几个方面的工作:(1) 在中断处理程序中要有开中断指令。大多数微机在响应中断时硬件会自动关中断,因此,中断处理程序是在关中断的情况下运行的。若要实现中断嵌套,对于可屏蔽中断而言,一定要使中断处理程序处于允许中断的状态。(2) 要设置足够大的堆

36、栈。当断点信息保存在堆栈中时,随着中断嵌套级数的增加,对堆栈空间的需求也在增加,只有堆栈足够大时,才不会发生堆栈溢出。(3) 要正确地操作堆栈。在中断处理程序中,涉及堆栈的操作要成对进行,即有几次压栈操作,就应有几次相应的弹出操作,否则会造成返回地址与状态错误。,6.5.2 8086/88中断系统1. 中断源类型256个中断源分为两大类:内部中断和外部中断。1) 内部中断内部中断由CPU内部事件及执行软中断指令产生。已定义的内部中断有:(1) 除法错中断。执行除法指令时,如果商超过8位或16位所能表达的最大值(如除以0时),则无条件产生该中断。该中断的向量码为0。,(2) 单步中断。这是在调试

37、程序过程中为单步运行程序而提供的中断形式。当设定单步操作(即状态寄存器中陷阱标志TF1)后,CPU执行完一条指令就产生该中断。该中断的向量码为1。 (3) 断点中断。这是在调试程序过程中为设置程序断点而提供的中断形式。设置断点或执行INT 3指令可产生该中断。INT 3指令功能与软件中断相同,但是为了便于与其他指令置换,它被设置为1字节指令。该中断的向量码为3。,(4) 溢出中断。在算术运算程序中,若在算术运算指令后加入一条INTO指令, 则将测试溢出标志OF。当OF1(表示算术运算有溢出)时,该中断发生。该中断的向量码为4。 (5) 软件中断。执行软件中断指令INT n即产生该中断。指令中的

38、n为该中断的中断向量码。用户可以通过设置不同的中断向量码n来形成自己定义的软件中断事件。需要注意的是,8086/88中断系统对各类中断源以统一的向量码标识,所以用户使用的中断向量码不得与微机系统中已使用的中断向量码冲突。,2) 外部中断外部中断是由外部中断源产生对CPU的请求引发的。8086/88中断系统将外部中断源又分为以下两种。(1) 非屏蔽中断。当某外部中断源产生一个有效的上升沿信号作为中断请求信号,并被加载至CPU的NMI引脚上时,产生非屏蔽中断。非屏蔽中断不受中断允许标志位IF限制,这种中断一旦产生,CPU必须响应它,因此,它的优先级必然高于可屏蔽中断。为了及时响应该中断,CPU内部

39、自动提供了该中断的向量码(n2)。在对重要事件(如电源掉电、关键设备出现故障等)进行处理时,经常使用该中断。,(2) 可屏蔽中断。当某外部中断源产生一个有效的高电平信号作为中断请求信号,并被加载至CPU的INTR引脚上时,可能产生的中断即为可屏蔽中断。这是普通的外部中断,只有这种中断才能用IF屏蔽。在IF1时,CPU可对可屏蔽中断请求作出响应。由于大多数外部中断源都被归结在可屏蔽中断类中,而8086/88 CPU只有一个可屏蔽中断请求输入引脚,因此,在8086/88中断系统中,在CPU之外又设计了一个中断控制器(如8259)。这个中断控制器不仅能够对多个可屏蔽中断源进行优先级控制,而且可以为这

40、些中断源提供中断向量码。,2. 中断响应过程在8086/88系统中,中断控制是由CPU与中断控制器共同完成的,这使得中断过程简化为: 中断请求; 中断响应; 中断处理: i. 断点保护; ii. 中断服务; iii. 断点恢复; iv. 中断返回。,其中,步骤为外部中断源动作,步骤是CPU硬件自动完成的动作,步骤是中断处理程序应该完成的工作。CPU从检测出中断请求到转移至中断处理程序之前所做的工作即为中断响应过程,其流程如图6.23所示。,图6.23 中断响应过程,INTA周期结束之后,或者在产生内部中断、NMI中断时,CPU将标志寄存器、CS、IP的内容压入堆栈,关中断,然后根据中断向量码n

41、(它可以是由CPU硬件规定的,或由软中断指令确定的,或由中断控制器8259提供的)查找中断向量表(即内存地址4n处),从中获取中断源n的中断处理程序首地址(也称入口地址),并使CPU转而执行中断处理程序。如果同时有几类中断发生,则CPU按图6.24的顺序进行查询,再作出响应。这个查询顺序决定了8086/88中断系统中几类中断源的优先顺序,即内部中断(INT)优先级高于非屏蔽中断,非屏蔽中断(NMI)优先级高于可屏蔽中断(INTR)。单步中断是一个特例,它是所有中断源中优先级最低者,而且还受IF屏蔽。,图6.24 中断响应时CPU查询中断源的顺序,3. 中断向量表8086/88微机系统在内存的最

42、低端开辟了1 KB的存储区作为中断向量表。该表以四字节为一组构造而成,共分为256组,按中断向量码的序号排列,如图6.25所示。在微机系统初始化时,利用程序将各中断源的中断处理程序首地址填写在该表中起始地址为4n(n为中断向量码)的连续4字节的字节组中(前两字节放中断处理程序首地址之段内偏移地址,后两字节放中断处理程序首地址之段地址)。这样,在中断响应时,CPU就可以根据中断向量码n查找中断向量表,从表中起始地址为4n的连续4字节单元里获取中断源n的中断处理程序首地址。,中断向量表建立了不同的中断源与其相应的中断处理程序首地址之间的联系,它使CPU在中断响应时可以依据中断向量码自动地转向中断处

43、理程序,它是8086/88中断系统中特有的、不可缺少的组成部分。在8086/88微机系统中,只有这个中断向量表和复位后开始执行的地址FFFF0HFFFFFH是接受特殊处理的存储区域。,图6.25 中断向量表,6.5.3 可编程中断控制器82591. 8259内部结构8259内部结构如图6.26所示,它的工作过程如下:(1) 中断请求输入端IR0IR7接收外部中断源的请求信号。(2) 外部中断源的请求状态锁存在中断请求寄存器IRR(8位)的相应位(即置1),将它与中断屏蔽寄存器IMR(8位)相“与”后送给优先级判决电路。,(3) 优先级判决电路从提出请求的中断源(记录在IRR中)中检测出优先级最

44、高的中断请求位,将其与在内部服务寄存器ISR(8位)中记录的正在被CPU服务的中断源进行优先级比较,只有当提出请求服务的中断源优先级高于正在服务的中断源优先级时,判优电路才向控制电路发出中断请求有效信号。(4) 控制电路接收到中断请求有效信号后,向CPU输出INT信号。(5) CPU接收INT信号,在中断允许(IF1)的情况下,发出INTA响应信号。(6) 8259接收INTA信号,在第1个INTA周期先设置ISR的相应位,并恢复IRR的相应位,然后主控8259送出级联地址CAS0CAS2,加载至从属8259上。,(7) 单独使用的8259或是由CAS0CAS2选择的从属8259,在第2个IN

45、TA周期将中断向量码输出至数据总线。(8) CPU读取中断向量码并转移到相应的中断处理程序。(9) 中断结束时,通过在中断处理程序中向8259送一条EOI(中断结束)命令,使ISR相应位复位。或者当8259选择自动结束中断方式时,由8259在第2个INTA信号的后沿自动将ISR相应位复位。,图6.26 8259内部结构图,2. 8259引脚功能8259是具有28个引脚的集成芯片,如图6.27所示,各引脚功能如下:,图6.27 8259内部引脚图,3. 8259工作方式1) 中断结束方式8259中的内部服务寄存器ISR用来记录哪一个中断源正在被CPU服务,当中断结束时,应恢复ISR的相应位,以清

46、除其正在被服务的记录。8259有两种中断结束方式: 非自动结束方式和自动结束方式。(1) 非自动结束方式。非自动结束方式利用在中断处理程序中提供一条EOI(中断结束)命令,使8259中的ISR相应位被清除。EOI命令是通过CPU将相关信息写入8259的操作命令字OCW2而生成的。,EOI命令有两种形式: 一般中断结束命令(EOI)。该命令可对正在服务的中断源的ISR进行复位。例如,当CPU响应8259的IR3引脚上的中断源请求时,在第1个INTA周期,ISR3被置位,表示IR3;正在被CPU服务。在IR3的中断处理程序中编写一条一般EOI命令(通常放置在中断返回指令之前)并执行之,则当前正在被

47、服务的中断源在8259中的记录被清除,即ISR3被清零,表示现在8259中已没有IR3正在被CPU服务的标记。 特殊中断结束命令(SEOI)。该命令可对指定中断源的ISR进行复位。例如,CPU正在执行IR3的中断处理程序,此时ISR中有ISR31、ISR51,则在IR3的中断处理程序中可以利用一般EOI命令清除ISR3,也可以利用特殊EOI命令指定清除ISR5。,(2) 自动结束方式。这种方式不需要EOI命令,8259在第2个信号的后沿自动执行(一般)EOI操作。注意: 这种方式尽管不需要EOI命令,但是在中断服务过程中,因ISR相应位已复位,所以有可能响应优先级更低的中断。因此,当允许中断嵌

48、套时,不要采用自动结束方式。,2) 缓冲方式缓冲方式用来指定系统总线与8259数据总线之间是否需要进行缓冲。(1) 非缓冲方式。在指定非缓冲方式时,/SP/EN作为输入,用来识别8259是主控制器还是从属控制器。(2) 缓冲方式。在指定为缓冲方式(有数据缓冲器)时,/SP/EN为输出。当为低时表示8259输出中断向量码,它被用于CPU等待信号产生及数据总线缓冲器的控制中。,3) 嵌套方式嵌套方式用于8259的优先级控制,它有两种形式:(1) 一般嵌套方式。一般嵌套规定: IRj输入端接受一次中断之后,在EOI命令使ISRj复位之前,IRj拒绝接受自身新的中断请求,同时8259还自动屏蔽比IRj

49、优先级低的中断源请求。这是通常采用的优先级控制原则,即高优先级中断能够中断低优先级中断服务,低优先级中断不能够中断高优先级中断服务,同等优先级中断不能够相互中断。这种方式一般用在单片使用的8259或级联方式下的从属8259上。,(2) 特殊全嵌套方式。在8259以级联方式工作时,要求主控8259在对一个由从属8259来的中断进行服务的过程中,还能够对由同一个从属8259上另外一个高优先级IR输入端来的中断请求进行服务。特殊全嵌套方式就是为实现这种多重中断而专门设置的。它与一般嵌套方式的惟一不同就在于,它允许某中断可以中断与它有相同优先级的另一个中断服务。这种方式一般用在级联方式下的主控8259上。,4) 屏蔽方式屏蔽方式也用于8259优先级控制,它也有两种形式:(1) 一般屏蔽方式。正常情况下,当IR端中断请求被响应时,8259自动禁止同级及更低优先级的中断请求,这就是一般屏蔽方式。这种方式有可能使某些优先级较低的中断长时间得不到服务。(2) 特殊屏蔽方式。特殊屏蔽方式解除了对低级中断的屏蔽,在这种方式中,除了由ISR 设置的位和由IMR屏蔽的位表示的中断外,其他级别的中断都有机会得到响应。,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报