输入输出及中断技术——微机第六章学习笔记
前言
纯复习,摆累了,开卷!
MindMap
输入输出系统
一、I/O 接口
特点
- 复杂性
- 异步性
- 实时性
- 与设备无关性
解决的问题
- 速度匹配(Buffer)
- 信号的驱动(电平转换器、驱动器)
- 信号形式和电平的匹配(A/D、D/A)
- 信息格式(字节流、块等)
- 时序匹配(定时关系)
- 总线隔离——三态门
功能
- 地址译码与设备选择
- 信息输入输出
- 命令、数据和状态的缓冲和锁存
- 信息转换(模转数等)
二、I/O 端口
分类
- 数据端口 DB
- 状态端口 AB
- 控制端口 CB
端口和接口的区别与关系
一句话:接口是一个或多个端口的集合。
端口地址公式
: 端口地址 = 芯片地址(构成高位)+片内地址
三、I/O端口的编址方式
主要探讨的是8088/8086
内存有 1MB, 端口有 64K个
与内存统一编址
- 指令及控制信号统一
- 内存的地址资源减少(因为给了端口,所以原本内存的地址少了,可以理解为内存少了)
独立编址
- 内存地址资源充分利用
- 能够应用于端口的指令较少
寻址信号
I O R ‾ 、 I O W ‾ 、 A 15 ∼ A 0 \overline{IOR}、\overline{IOW}、A_{15}\sim A_0 IOR、IOW、A15∼A0
四、译码
就是确定端口的地址。
地址信号
- 单端口接口:16位地址线参与译码,译码输出直接选择端口。
- 多端口:高位译码,决定接口的基址,低位决定端口(片选)。
简单接口电路
一、接口的基本构成
- 数据输入/输出寄存器——暂存输入/输出的数据。
- 命令寄存器——存放控制命令。
- 状态寄存器——保存当前状态,供CPU读取。
二、接口的类型及特点
按照不同分类方式,有不同的情况。
分类
- 方向:
- 输入
- 输出
- 类型:
- 数字
- 模拟
- 方式:
- 并行
- 串行
特点
- 输入接口:数据控制、三态门
- 输出:数据锁存、锁存器
三、三态门和74LS244
三态门
中间的那个,其实就是一个输入,用来控制是否导通还是断开。
74LS244
四、锁存器
D触发器
直接看功能表
74LS273
纯纯就一个8D触发器,只锁存,不控制。
74LS374
比273
强一点,加入三态门,实现控制。
可以做输入接口,也可以做输出接口。
基本输入/输出方法
一、无条件传送
要求外设总是准备好的状态。
优点
软件和接口硬件简单
缺点
只能用于简单外设,适应范围较窄。
二、查询工作方式
需要满足条件进行数据传送,单次传送对应单次条件满足。
工作条件
外设需要提供设备状态信息。
接口应该具备状态端口。
优点
软硬件比较简单
缺点
CPU效率低,实时性差,速度慢。
三、中断控制方式
特点
外设 需要时
请求,CPU再去服务,服务结束后或不需要时,CPU执行自己的程序。
缺点
程序编址相对复杂。
优点
CPU效率高、实时性强,速度快。
以上三种I/O方式共性
- 信息传送均需通过CPU
- 软件上,数据传送投过CPU执行程序完成(PIO方式)。
- 硬件:读写的控制信号、地址信号都是由CPU发出的。
- 缺点在于 数据传送的速度 受限于 程序的执行速度。
四、DMA
特点
- 外设直接和存储器数据交换。
- 总线由DMAC进行控制,内存/外设的地址和读写控制信号均由DMAC提供。(CPU会放弃总线控制)
- 数据传输由DMA硬件控制,数据直接在内存和外设之间交换,传输速率很高。
- 控制复杂,硬件成本较高。
中断技术
一、中断的基本概念
中断
CPU执行程序时,发生某种随机事件(内部或外部),引起 CPU 暂时中断
正在运行的程序,转去执行 中断服务子程序
,处理该事件,完事后又返回原中断的程序继续执行,这一过程就是 中断
。
中断源
引起CPU中断事件。
分类
- 内部中断
- 异常中断——异常事件
- 软件中断——中断指令
- 外部中断
- 可屏蔽中断——INTR中断
- 非屏蔽中断——NMI中断
二、外部中断响应过程
中断请求
- 请求信号保持到 中断被处理 为止。
- CPU响应中断后,请求信号应及时撤销。
中断源识别
两种方法:软件查询和中断向量法。这一部分由 硬件系统
完成。
中断判优
其实就是多个中断请求同时出现,需要优先响应哪一个 中断源
。
判优法则
优先级法则
和 排队法则
。
软件判优
按优先级查询请求,先查询先服务。
硬件服务——中断向量码
- 中断控制器判优——8259A
- 链式判优、并行判优。
- 菊花链,其实就是链式判优的条件,每个外设的中断信号都有一个菊花链接收,靠前的菊花链的输出会对后面的起到控制作用。
中断响应
- 向中断源发出
~INTA
中断响应信号。 - 关中断。
- 保护硬件现场。——将FLAGS压入堆栈。
- 保护断点——将CS、IP压入堆栈。
- 获得中断服务程序入口地址。
以上由硬件系统完成。
响应条件
- CPU 开中断,IF=1.
- 没有RESET,HOLD,内部中断,NMI。
- 当前正在执行STI和IRET,需执行完。
中断处理
就是执行 终端服务子程序
,“远过程”, IRET
指令返回。
中断服务子程序的工作
- 关中断,保护现场,保护断点,找入口地址。
- 保护软件现场(参数)。
- 开中断(STI)——允许嵌套。
- 中断处理。
- 关中断(CLT)。
- 恢复现场。
- 中断返回。
中断返回
就是执行 IRET指令,然后寄存器 IP、CS、FLAGS从堆栈中弹出。(恢复断点和硬件现场)
流程
三、8088/8086 中断系统
中断向量表
- 存放中断服务子程序的入口地址。
- 每个入口4个Bytes,高段为段基址,低位为段内偏移地址。
- 表的地址位于内存的000000H~003FFH,大小1KB,共256个入口。
初始化
就是将用户自定义的中断服务程序入口地址放入向量表。
注意:
- 向量表所在的段地址=0。
- 存放子程序入口的单元的偏移地址=nx4。
大的要来了
可编程中断控制器8259A(难点)
可以根据中断请求的优先级向CPU发出 中断请求,并且当CPU响应中断请求进入中断服务子程序之后,如果某个新的外部中断请求的优先权高于当前的中断,就会执行新的中断,原中断先屏蔽,暂停,实现嵌套中断。
单片8259A 能管理 8级中断。
一 引脚与功能结构
1 芯片引脚定义
- D0~D7,8根双向数据线。
- ~WR,写控制信号,低电平有效,用来通知8259A准备从数据线上接收数据。
- ~RD,读控制信号,低电平有效。
- ~CS,片选信号端,通过地址译码逻辑电路与系统地址总线连接,用于选通8259A。
- A0:地址线,用来指出当前8259A的两个端口中被访问的是
奇地址(高8位)
还是偶地址(低8位)
,8088连A0,8086连A1. - IR0~IR7:8级中断请求输入端。
- INT:中断请求信号。
- ~INT A:中断应答线。
- SP/EN:双功能双向信号线,分别表示两种工作方式:缓冲工作方式、主从工作方式。
- CAS0~CAS2:3根级联控制信号。
二、内部结构和中断工作流程
工作流程
- 外部中断源使8259A的一条或几条中断请求线变高电平。
- 对这些请求的未被屏蔽的最高优先的请求从INT输出,交由CPU响应。
- 若CPU开中断,执行当前程序,就用INTA作为响应信号送至8259A的INTA,8259A收到第一个中断应答~INTA后,先将ISR中的中断优先级最高的一位置1,再将IRR中对应位置0。
- 8259A收到第二个~INTA后,将和此中断对应的应该字节的中断类型n 从 一个名为中断类型寄存器(
IMR
)的内部部件中送到数据线,CPU 读取n,根据中断向量表取得该中断对应的中断入口地址,然后执行相应的中断服务子程序。 - ISR 复位,根据
方式控制器
的结束方式,有EOI
和AEOI
。
三、控制字格式
ICW
初始化命令字,有四个,分别为 ICW1~ICW4.
OCW
工作方式命令字或操作命令字。有三个,必须在设置初始化命令字后方能分别写入3个相应的寄存器。对中断处理过程进行动态的操作和控制。
流程图
ICW1
芯片的控制初始化命令,应写入偶地址端口
,即A0为0。
写入条件:A0=0,CS=0,特征位D4=1.
- D0表示是否要写ICW4
- D1 表示
单片
还是级联
。 - D3
高电平有效
还是上升沿有效
。
ICW2
设置 中断类型码
的初始化命令。
写入条件:跟在 ICW1之后,CS*=0,A0=1.
- D7~D3:规定中断类型码的高五位。
ICW3
标识主片/从片 初始化命令字。
写入条件:级联方式,跟在ICW2之后,CS=0,A0=1且ICW1中的D1=0.
主片接从片的 IR
置1,从片的D2、D1、D0表示接入主片的IR端编码。
注意:主片和从片的ICW3 必须不同
。
ICW4
中断结束方式初始化命令字。
写入条件:ICW2或ICW3之后,且ICW1中的D0=1,D7~D5=0m,CS=0,A0=1。
- D4=1,特殊完全嵌套。
- D4=0,一般完全嵌套。
- D3, 设置缓冲方式。
- D2,缓冲下设置主从。
- D1,设置中带你结束方式。
- D0,设置适配的CPU系统。
OCW1
就是设置中断屏蔽字,写入在中断屏蔽寄存器 IMR
中。1表示屏蔽。
OCW2
A0=0。
OCW3就是多功能操作命令字,用来控制8259A的中断屏蔽和读取寄存器的状态。
都敲到这里,来段汇编助兴!
MOV AL,13H ;写ICW1,单片,边沿触发,要ICW4
OUT 20H,AL
MOV AL,8 ;写ICW2,中断类型号从8开始
OUT 21H, AL
MOV AL, 0DH ;写ICW4,缓冲工作方式,8088/8086配置
OUT 21H, AL
MOV AL,0 ;写OCW1,允许IR0~IR7全部8级中断请求
OUT 21H,AL