710 likes | 903 Views
第7章 输入/输出和中断 . 数据端口 状态端口 控制端口. 端 口. 7.1 外设接口的一般结构. I/O 接口: 将外设连接到总线上的一组逻辑电路的总称。 用以实现外设与主机之间的 信息交换 I/O 端口: 接口中的寄存器,可以由 CPU 读或写. 7. 二进制——数 ASCII 码表示的数或字符. 数字量. 三种类型. 模拟量. 开关量. CPU 同外设间交换的信息由三类: 1. 数据信息. 2.状态信息: 表示外设当前所处的工作状态。.
E N D
数据端口 状态端口 控制端口 端 口 7.1 外设接口的一般结构 • I/O接口: 将外设连接到总线上的一组逻辑电路的总称。 用以实现外设与主机之间的信息交换 • I/O端口: 接口中的寄存器,可以由CPU读或写
二进制——数 ASCII码表示的数或字符 数字量 三种类型 模拟量 开关量 CPU同外设间交换的信息由三类: 1. 数据信息 2.状态信息: 表示外设当前所处的工作状态。 3.控制信息: 由CPU发出的,用于控制I/O接口的工作方式以及外设的启动和停止等。
无条件传送方式 • 查询传送方式 • 中断传送方式 7.2 CPU与外设交换数据的方式 7.2.1 程序控制传递方式 特点:(1)以CPU为中心,控制来自CPU,通过预先编写好的I/O程序实现数据的传送。 (2)速度较低,传送路径经过CPU内部寄存器同时数据I/O响应也比较慢。
1.无条件传送方式 (同步传送方式) 外设的工作时间已知,必须在CPU限定的指令时间内准备就绪,并完成数据的接收或发送。 方法:把I/O指令插入到程序中,当程序执行到该指 令时,外设已作好准备,于是在此指令时间内完成数据传送任务。 优点:软件及接口硬件简单 缺点:CPU效率低,只适用于简单外设,适应范围较窄
2. 查询传送方式(异步传送方式) 当CPU同外设不同步且不知道外设工作速率时,可采用此方式传送。传送前,CPU必须先对外设进行状态检测。 适用场合: • 外设并不总是准备好 • 对传送速率和效率要求不高 对外设及接口的要求: • 外设应提供设备状态信息 • 接口应具备状态端口
完成一次传送过程的步骤如下: (1) 通过执行一条输入指令,读取所选外设的当前状态 (2) 根据该设备的状态决定程序去向 外设 “忙”或“未准备就绪” —重复检测外设状态 外设 “空”或“准备就绪” —发出I/O指令,进行一次数据传送。
优点:软件比较简单 • 缺点:CPU效率低,数据传送的实时性差,速 度较慢
3.中断传送方式 无条件传递和查询传送的缺点是:CPU和外设只能串行工作。 为提高系统的工作效率,充分发挥CPU的高速运算能力,引入了“中断”系统,利用中断来实现CPU与外设之间的数据传送,这就是中断传送方式。 特点:外设在需要时向CPU提出请求,CPU再去为 它服务。服务结束后或在外设不需要时,CPU可执行自己的程序。 中断使CPU和外设以及外设之间能并行工作。
工作过程: 在中断传送方式中,通常在程序中安排好某一时刻启动某一台外设,然后CPU继续执行其主程序,当外设完成数据传送的准备后,向CPU发出中断请求信号,在CPU可以响应中断的条件下,现行主程序被“中断”,转去执行“中断服务程序”,在“中断服务程序”中完成一次CPU与外设之间的数据传送,传送完成后仍返回被中断的主程序,从断点处继续执行。 • 优点:CPU效率高,实时性好,速度快 • 缺点:程序编制较为复杂
以上三种I/O方式的共性 均需CPU作为中介: • 软件: 外设与内存之间的数据传送是通过CPU执行 程序来完成的 • 硬件: I/O接口和存储器的读写控制信号、地址信号 都是由CPU发出的 • 缺点:程序的执行速度限定了传送的最大速度
7.2.2 DMA(直接存储器存取)传递方式 外设和内存之间直接传送数据的方式,即DMA传送方式。在DMA传送方式中,对这一数据传送过程进行控制的硬件称为DMA控制器(DMAC)。 特点: • 外设直接与存储器进行数据交换 ,不需要CPU干预也不需软件介入。 • 总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。
1. DMA操作的基本方法 (1)周期挪用(Cycle Stealing) (2)周期扩散 (3)CPU停机方式 最常用,最简单的传送方式
2. DMA的传送方式 (1)单字节传送方式 每次DMA传送只传送一个字节就立即释放总线。 (2)成组传送方式 DMAC在申请到总线后,将一组数据传送完后才释放总线,而不管中间DREQ是否有效。 (3)请求传送方式(查询传送方式) 成组传送,但每传送一个字节后,DMAC查DREQ,有效传,无效挂起。
3.DMAC(DMA控制器)的基本功能 (1)能接收外设的请求,向CPU发出DMA请求信号。 (2)当接到CPU发出DMA响应信号后,DMAC接管对总线的控制,进入DMA方式。 (3)能寻址存储器,即能输出地址信息和修改地址。 (4)能向存储器和外设发相应的读/写控制信号。 (5)能控制传送的字节数,判断DMA是否结束。 (6)在DMA传送结束后,能结束DMA请求信号,释放总线,使CPU恢复正常工作。
7.3 中断技术 7.3.1 概述 中断——外设随机地(指主程序运行到任何一条指令时)或程序预先安排产生中断请求信号,暂停CPU正在运行的程序,转入执行称为中断服务的子程序,中断服务完毕后,返回到主程序被中断处继续执行的过程。 中断源——引起中断的事件
通常中断源有以下几种: (1) 输入、输出设备: 如键盘、显示器和打印机等; (2)数据通道; (3)实时控制过程中的各种参数; (4)故障源: 如掉电保护等; (5)控制系统的现场测试信号以及软件中断。 中断系统应具有以下功能: 1. 能实现中断响应、中断服务和中断返回 2. 能实现中断优先级排队 3. 能实现中断嵌套
7.3.2 中断过程 1.中断过程 一个完整的中断基本过程包括:中断请求、中断判优、中断响应、中断处理及中断返回等五个基本过程。 (1)中断请求 当某一外部中断源要求CPU中断时,首先要向CPU发出中断请求,该请求信号被存放在中断源接口电路的中断请求触发器中暂存,并通过INTR或NMI信号线引入CPU 。
(2)中断判优 由于中断请求是随机的,在某一瞬间有可能出现两个或两个以上中断源同时提出请求的情况。这时必须根据中断源的轻重缓急,给每个中断源确定一个中断级别—— 中断优先权 。 另一个作用能实现中断嵌套 。
(3)中断响应 CPU每执行完一条指令后,查询是否有中断请求。当查询到有中断请求且此时CPU允许中断(即IF=1,开中断),CPU响应中断。 响应中断后系统做的工作: ①自动关中断;通过使IF清零来实现 ②保存FR和断点; ③形成中断入口地址。通过中断矢量,查询中断地址表实现。
(4)中断处理 执行中断服务程序 ①中断服务开始要用压栈指令(PUSH)将要用到的寄存器内容压入堆栈,以便返回到主程序时能正确运行。——保护现场 ②中断服务程序结束后,用POP指令把所保存的有关寄存器的内容从堆栈弹出,以便恢复到中断前的状态。——恢复现场
(5)中断返回 通常在中断返回前,要用指令开中断,以便再次响应中断,然后执行中断返回指令IRET。IRET指令具有弹出断点地址送IP和CS及恢复标志寄存器FR内容的功能。
2. 中断优先权 (1)软件查询方式 7 7
(2)硬件优先权排队电路。 ①简单硬件方式——菊花链法或链式优先权排队电路。 ②专用硬件方式——可编程的中断控制器 7
硬件中断 (外部中断) 软件中断 (内部中断) 256种中断源 类型码0~255 除法错中断 溢出中断 断点中断 单步中断 INT n指令中断 非屏蔽中断 可屏蔽中断 7.4 8086/8088的中断系统 7.4.1 中断结构 1.中断分类
非屏蔽中断:通过CPU的NMI引入,它不受内部中断允许标志位IF的屏蔽,一般在一个系统中只允许有一个非屏蔽中断。非屏蔽中断:通过CPU的NMI引入,它不受内部中断允许标志位IF的屏蔽,一般在一个系统中只允许有一个非屏蔽中断。 可屏蔽中断:通过CPU的INTR引入 ,它受IF的控制。只有在IF=1时,CPU才能响应中断源的请求。当IF=0时,中断请求被屏蔽。 硬件中断——由外部硬件产生的,也称外部中断。 软件中断——CPU根据软件的某些指令或者软件对标志寄存器某个标志位的设置而产生的,由于它与外部中断电路完全无关,故称为内部中断。
2.中断向量表 存放中断地址的一段内存空间称中断向量表。 • 存放各类中断的中断服务程序的入口地址 • 表的地址位于内存的0000∶0000~0000∶03FFH(即00000~003FFH)大小为1KB,共256个入口 • 每个入口占用4个单元,依次为IP:CS, 低字为段内偏移,高字为段基址
中断向量表 00000H 1KB ┇ 003FFH ┇
IP CS 3 中断类型码与中断向量所在位置(中断向量地址指针)之间的对应关系为: 中断向量地址指针=4*中断类型码
┇ 0080H 10H 0081H 20H 0082H 30H 40H 0083H ┇ 中断向量表 例:中断类型码为20H(32)的中断源所对应的中断服务程序首址存放在0000∶0080H(4*20H=80H)开始的4 个单元中。若在0080H至0083H这4个单元中存放的值分别为10H、20H、30H、40H,则该系统中20H号中断所对应的中断处理(服务)程序入口地址为4030∶2010H
7.4.2 内部中断——软中断 在8086/8088系统中,通过执行中断指令或由CPU 本身启动的中断称为内部中断(也称软件中断)。 除单步中断外,内部中断无法用软件禁止,即不受IF的影响。 1、内部中断的类型 (1)0型中断——除法出错中断 (2)1型中断——单步中断 (3)3型中断——断点中断 (4)4型中断——溢出中断 (5)INT n指令中断
2.内部中断的处理过程 如何获取相应的中断类型码 专用中断:中断类型码是自动形成的。 几种类型码为:类型0、1、3、4。 对于INT n指令,其类型码为指令中给定的n。
取得了类型码后的处理过程: ① 类型码*4 — 向量表指针。 ② 标志寄存器FR入栈,保护各个标志。 ③清除IF和TF标志,屏蔽新的INTR中断和单步中断。 ④保存断点(断点处IP和CS压栈,先压CS后压IP)。 ⑤从中断向量表中取出中断服务程序入口地址分别送入IP和CS中。 ⑥ 按新的地址执行中断服务程序。
7.4.3 外部中断——硬中断 非屏蔽中断——NMI引脚产生的中断,不受IF控制,类型号为2。 可屏蔽中断——由CPU的INTR端接收可屏蔽中断。受IF控制,只有当IF=1, 在一条指令执行结束后,CPU才能响应可屏蔽中断的请求。
1. 外部中断的响应 CPU采样到非屏蔽中断请求时,自动提供中断类型号2,然后根据中断类型号,查找中断向量表指针,其后的处理与内部中断一样。 当INTR信号有效,如IF=1,则CPU执行完一条指令后,进入可屏蔽中断响应周期。在中断响应周期中CPU从数据线中获取外部设备的中断类型码。
2.外部中断处理过程 在外部中断响应周期中,CPU获取了外部中断类型 码之后的中断处理过程,与前述的软中断过程顺序是一样的,不再赘述。 如果把CPU中断响应周期的动作和前面讲到的中断响应过程结合起来,当一个可屏蔽中断被响应时,CPU实际执行了7个总线周期,即:
⑴ 执行第一个INTA周期。 ⑵ 执行第二个INTA周期,被响应的外设通过D0~D7的8位数据线提供中断类型码n(由8259A提供),CPU接到类型码后,将它左移两位,形成向量表指针存入暂存器。 ⑶ 执行一个总线写周期,把FR压栈。同时IF和TF为0,以禁止中断响应过程中其他可屏蔽中断的进入,同时也禁止了中断过程中出现单步中断。
⑷ 执行一个总线写周期,CS压栈。 ⑸ 执行一个总线写周期,IP压栈。 ⑹ 执行一个总线读周期,从中断向量表中取出中断服务程序入口地址的偏移量送IP中。 ⑺ 执行一个总线周期,从中断向量表中取出中断服务程序入口地址的段值送CS。 对于非屏蔽与软中断跳过第⑴、⑵步,从第⑶步开始执行到第⑺步。
7.4.4 各类中断的优先权及中断响应 8086/8088系统中,中断优先权次序从高到低为:除法出错、INTn、INTO、NMI、INTR、单步中断。 除单步之外的内部优先权最高,其次是非屏蔽中断,再次是可屏蔽中断,而单步最低。
7.5 8259A可编程中断控制器 7.5.1 8259A的功能 1.功能 Intel 8259A 是与8086系列CPU兼容的可编程中断控制器,它的主要功能为: (1)具有8级优先权控制,级连可扩展至64级。 (2)每一级中断都可以屏蔽或允许。 (3)在中断响应周期,8259A可提供相应的中断向量号(中断类型号)。 (4)8259A的工作方式,可通过编程来进行选择。
8位双向三态缓冲器,是8259A与系统数据总线的接口。8259A通过它接收CPU发来的控制字,也通过它向CPU发送中断类型代码和状态信息。8位双向三态缓冲器,是8259A与系统数据总线的接口。8259A通过它接收CPU发来的控制字,也通过它向CPU发送中断类型代码和状态信息。 7.5.2 8259A的结构及工作原理 8位寄存器,是8259A与外设中断源的接口。通过IR7~IR0与8个中断源相接。当有某个中断源申请中断时,使IRR的相应位置1。最多可同时接收8个中断源的中断申请。 接收CPU的读/写命令。CS和地址线A0决定访问8259A的哪个寄存器。 (1)8259A的内部结构 用于多块8259A的连接,使中断可由8级扩展到64级 8位寄存器,用于设置中断请求的屏蔽信号。第i位被置1时,与之对应的IRi被屏蔽,不能向CPU发INT信号。可通过软件设置其内容,确定每个中断请求的屏蔽状态。设置IMR也可起到改变中断请求优先级的效果。 8位寄存器,寄存所有正在被服务的中断级。第i位置1表示CPU正为IRi中断源服务,该信号一直保持到CPU处理完该中断服务程序为止。该中断处理结束前,要使用指令清除这一位。ISR可被CPU读出。当有多位置1时,表示发生了中断嵌套。 对在IRR中的中断请求,经判断确定最高的优先权,并在中断响应用周期把它选通送至ISR 7
⑵ 8259A的引脚 双功能信号。当8259A工作与缓冲器方式时,它作为控制缓冲器传送方式的输出信号;当工作于非缓冲方式时,用于规定其是主8259A还是从8259A 7
8259A的工作原理 当系统通电后,首先应对8259A初始化。(由CPU执行一段程序,向可编程芯片写入若干命令字,规定其工作状态,使其处于准备就绪的状态。) 8259A对外部中断请求处理过程如下: (1) 当有IR0~IR7变 高,则IRR的相应位置1。 (2) 若中断请求线中至少有一条是中断允许的,则 由 INT 引脚向CPU发出中断请求。 (3) 若CPU处于开中断状态,则在当前指令执行完后,用INTA信号作为响应。
(4) 8259A接到INTA后,使最高优先权的ISR位置1,而相应的IRR位复位。在此周期中,8259A不向系统数据总线送任何内容。 (5) 在中断响应周期的第二个信号期间8259A向数据总线输送一个8位指针(向量号或类型号),CPU读取此类型号,类型号*4作为地址就可从中断向量表中取出中断服务程序入口地址。 (6) 若8259A工作在自动结束中断AEOI方式(Automatic End Of Interrupt),在第二个INTA结束时,使中断源在ISR的相应位复位。否则,直至中断服务程序执行到EOI命令,才使ISR的相应位复位。
7.5.3 8259A的编程 8259A的编程分两部分: (1)初始化编程 由CPU向8259A送2~4字节的初始化命令字ICW (2)工作方式编程 由CPU向8259A送三个字节的工作命令字OCW,以规定8259A的工作方式。该命令字可在8259A初始化命令字ICW后的任何时间写入。
1. 8259A的初始化编程 8259A的初始化命令字共4个(ICW1~ICW4) 设置过程如图: 7
⑴ 写初始化命令字ICW1——芯片控制字 0 0 0 对8086/8088无效 偶地址 ICW1 识 别 位 74 0
T3 T7 T6 T5 T4 奇地址 中断类型码的高5位 自动填入 IR0 000 IR1 001 IR2 010 ┇ IR7 111 (2)写初始化命令字ICW2——中断类型控制字 ( 中断类型码 ) 用来定义中断类型码的高5位 74
奇地址 奇地址 (3) 写初始化指令字ICW3—主/从片初始化 (级连控制字)