输入输出及中断技术——微机第六章学习笔记
前言
纯复习,摆累了,开卷!
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
I O R 、 I O W 、 A 1 5 ∼ A 0
四、译码
就是确定端口的地址。
地址信号
单端口接口: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