微机 —— 输入/输出与中断
输入/输出与中断
I/O接口
I/O接口概述
主机与外界交换信息称为输入/输出(I/O)
作用:外部设备不能与CPU直接相连,需要通过相应的电路来完成它们之间的速度匹配、信号转换,并完成某些控制功能。
通常把介于主机和外设之间的一种缓冲电路称为I/O接口电路,简称I/O接口。
CPU与外设交换的信息
(1)数据信息:又分为 数字量、模拟量和开关量
(2)状态信息:作为CPU与外设之间交换数据时的联络信息,反映了当前外设所处的工作状态,是外设通过接口送往CPU的
(3)控制信息:是CPU通过接口传送给外设的,CPU通过发送控制信息设置外设(包括接口)的工作模式、控制外设的工作
在接口中,这三种信息是在不同的寄存器中分别存放的。
一般称这些寄存器为I/0端ロ,每个端ロ有一个端口地址。
I/O端口的编址
(1)I/O端ロ与内存单元统一编址: 即由I/O端口地址和存储单元地址共同构成一个统一的地址空间;
(2)I/O端ロ与内存单元独立编址: 即内存地址空间和I/O地址空间相对独立,80x86CPU组成的微机系统采用独立编址方式。
在8086(8088)系统中,有20根地址线对内存寻址,内存的地址范围是00000~ FFFFFH;
用低16位地址线对I/O端口寻址,I/O端口的地址范围是0000~FFFFH
I/O端口地址译码的一般原则是把用于I/O端口寻址的地址线分为高位地址线和低位地址线两部分:
将低位地址线直接连到I/O接口芯片的相应地址线,用于选中片内的端口
将高位地址线与CPU的控制信号组合,经地址译码电路产生I/O接口芯片的片选信号
CPU与外设之间数据传送方式
1、程序传送方式
(1)无条件传送方式:CPU对外设进行输入/输出操作时无需考虑外设的状态
适用于总是处于准备好状态的外设
优点:软件及接口硬件简单
缺点:只适用于简单外设(如开关、继电器、数码管、发光二极管等),适应范围较窄
(2)查询传送方式:接口电路中既要有数据端口,还要有状态端口
查询传送方式适用于数据输入/输出不太频繁且外设较少、对实时性要求不高的情况。
优点:能保证主机与外设之间协调同步地工作,且硬件线路比较简单,程序也容易实现
缺点:浪费CPU时间,实时性差
2、中断传送方式
中断传送方式是指当外设需要与CPU进行信息交换时,由外设向CPU发出请求信号,使CPU暂停正在执行的程序,转去执行数据的输入/输出操作,数据传送结束后,CPU再继续执行被暂停的程序
一般适合于少量的数据传送
优点:CPU不必查询等待,工作效率高,CPU与外设可以并行工作;由于外设具有申请中断的主动权,故系统实时性比查询方式要好得多。
缺点:接口电路相对复杂,浪费了很多CPU的时间。
3、直接存储器存取(DMA)传送方式
(1)DMA传输方式概述
DMA传送方式是在存储器和外设之间、存储器和存储器之间直接进行数据传送(如磁盘与内存间交换数据、高速数据采集、内存和内存间的高速数据块传送等),传送过程无需CPU介入;
在进行DMA传送期间,CPU放弃总线控制权,将系统总线交由DMAC控制,由DMAC发出地址及读/写信号来实现高速数据传输。传送结束后DMAC再将总线控制权交还给CPU。
一般微处理器都设有用于DMA传送的联络线。
(2)DMA控制器的工作方式
单字节传输方式
成组传输方式(块传输方式)
请求传输方式
中断技术
1、中断源:分为硬件中断源和软件中断源
硬件中断源:外设(如键盘、打印机等)、数据通道(如磁盘机、磁带机等)、时钟电路(如定时计数器8253)和故障源(如电源掉电)等。
软件中断源:调试程序设置的中断(如断点、单步执行等)、中断指令(如INT 21H等)以及指令执行过程出错(如除法运算时除数为零)等。
2、中断处理过程
中断请求 ——> 中断响应 ——> 保护断点 ——> 中断处理 ——> 中断返回
保护断点: 由硬件自动完成,主要工作是关中断、将标志寄存器内容入栈保存以及将CS和IP内容入栈保存。
3、中断优先级
在微机系统中通常用三种方法来确定中断源的优先级别:软件查询法、硬件排队电路法和专用中断控制芯片法
(1)软件查询法: 各中断源的优先级是由查询顺序决定的,最先查询的设备,其优先级最高,最后查询的设备,其优先级最低
优点:节省硬件。
缺点:响应速度较慢。对于优先级较低的中断源来说,该缺点更为明显
(2)硬件排队电路法:各个外设的优先级与其接口在排队电路中的位置有关。
常用的硬件优先权排队电路有链式优先权排队电路、硬件优先级编码加比较器的排队电路等。
(3)专用中断控制芯片法: 以80x86微机系统的专用中断控制芯片8259A为例
8259A是可编程中断控制器芯片,用于管理和控制80x86的外部中断请求,可实现中断优先级判定,提供中断类型号,屏蔽中断输入等功能。
单片8259A可管理8级中断,若采用级联方式,最多可以用9片8259A构成两级中断机构,管理64级中断
8259A的工作方式:
1、中断优先级管理方式
(1) 全嵌套方式 (固定优先级方式)
在这种方式下,由IR端引入的中断请求具有固定的优先级,IR0最高,IR7最低。在对8259A初始化后若没有设置其他优先级方式,则默认为全嵌套方式
(2) 特殊全嵌套方式
在主从结构的8259A系统中,将主片设置为特殊全嵌套方式,可以在处理某一级中断时,不但允许优先级更高的中断请求进入,也允许同级的中断请求进入
(3) 优先级自动循环方式
采用这种方式,各中断源优先级是循环变化的,主要用在系统中各中断源优先级相同的情况下。
(4) 优先级特殊循环方式
该方式与优先级自动循环方式相比,只有一点不同,即可以设置开始的最低优先级。
2、中断屏蔽方式
(1) 普通屏蔽方式
(2) 特殊屏蔽方式
3、中断结束方式
(1)中断自动结束方式: 适合于中断请求信号的持续时间有一定限制以及不出现中断嵌套的场合
(2) 一般中断结束方式: 该方式用于全嵌套方式下的中断结束
(3) 特殊中断结束方式: 在非全嵌套方式下,根据ISR的内容无法确定最后所响应和处理的是哪一级中断。这种情况下,就必须用特殊的中断结束方式,即在程序中要发一条特殊中断结束命令,该命令指出了要清除ISR中的哪一位
4、中断触发方式
(1) 电平触发方式
该方式以IR端上出现的高电平作为中断请求信号。请求一旦被响应,该高电平信号应及时撤除。
(2) 边沿触发方式
该方式以IR端上出现由低电平向高电平的跳变作为中断请求信号,跳变后高电平一直保持,直到被响应。
5、与系统总线的连接方式
(1) 缓冲方式
(2)非缓冲方式
4、中断嵌套
中断嵌套: CPU在执行低级别中断服务程序时,又收到较高级别的中断请求,CPU暂停执行低级别中断服务程序,转去处理这个高级别的中断,处理完后再返回低级别中断服务程序
8086/8088中断系统
中断源类型
8086/8088 CPU可以处理256种不同类型的中断,每一种中断都给定一个编号(0~255),称为中断类型号,CPU根据中断类型号来识别不同的中断源。
(1)硬件中断(外部中断):来自CPU的外部,由外设的请求引起
(1) 非屏蔽中断NMI(中断类型号为2): 主要用于处理系统的意外或故障
(2) 可屏蔽中断INTR: 主要用于与外设交换数据
可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理
(2)软件中断(内部中断):来自CPU的内部,由执行指令时引起
1、处理运算过程中某些错误的中断
(1) 除法错中断(中断类型号为0)
(2) 溢出中断INTO(中断类型号为4)
2、为调试程序设置的中断
(1) 单步中断(中断类型号为1)。
(2) 断点中断(中断类型号为3)。
3、中断指令INT n引起的中断(中断类型号为n)
8086/8088中断源的优先级顺序由高到低依次为:
软件中断(除单步中断外)、非屏蔽中断、可屏蔽中断、单步中断。
在PC系统中,外设的中断请求通过中断控制器8259A连接到CPU的INTR引脚,外设中断源的优先级别由8259A进行管理。
中断向量表
中断向量表是存放中断向量的一个特定的内存区域。所谓中断向量,就是中断服务程序的入口地址
对于8086/8088系统,所有中断服务程序的入口地址都存放在中断向量表中
每个中断服务程序入口地址在中断向量表中的位置可由“中断类型号×4”计算出来