← 返回 计组与微机控制

计组与微机控制

10.0 输入输出技术和编址方式以及DMA技术

10.0 输入输出技术和编址方式以及DMA技术

第 10 章 输入/输出技术

输入/输出接口概述

微型计算机不能直接和所有外部设备通信,因为外设种类很多,速度、数据格式、电平、工作方式都不一样。

所以 CPU 和外设之间通常需要一个中间电路:

CPU ↔ I/O 接口电路 ↔ 外部设备

I/O 接口电路的作用就是让 CPU 和外部设备之间能够可靠交换数据。

1. 输入/输出接口电路

1.1 什么是输入/输出设备

输入设备的作用:把外部信息转换成计算机能识别的数据形式

例如:键盘,A/D 转换器,扫描仪,传感器

输出设备的作用:把计算机处理后的数据转换成人或其他设备能识别的形式

例如:显示器,打印机,投影仪,D/A 转换器,执行机构

1.2 为什么需要 I/O 接口

外设不能直接接到 CPU 上,主要原因有:

1. 速度不匹配 2. 数据格式不匹配 3. 电平或功率不匹配 4. CPU 与外设工作时序不一致 5. 外设种类多,控制方式不同

所以需要 I/O 接口在中间做转换、缓冲和协调。

1.3 I/O 接口电路的一般结构

I/O 接口一般包含:

数据输入寄存器 数据输出寄存器 控制寄存器 状态寄存器

可以整理成:

1.4 I/O 接口与总线的关系

I/O 接口一边连接系统总线,另一边连接外设。

系统总线通常包括:

数据总线 地址总线 控制总线

外设侧通常还会有:

数据信号 控制信号 状态信号

所以 I/O 接口可以理解为:对 CPU:像一个可以读写的寄存器组 对外设:负责收发数据、控制状态、匹配时序

1.5 I/O 接口的主要功能

I/O 接口主要完成以下功能:

1. 数据缓冲 2. 数据格式转换 3. 速度匹配 4. 电平和功率匹配 5. 设备选择和地址译码 6. 控制信号产生 7. 状态信息保存 8. 中断或 DMA 请求产生

可以一句话记:I/O 接口就是 CPU 和外设之间的数据通道、控制通道和状态通道。

2. CPU 与外设间的数据输入/输出方式

CPU 与外设之间的数据传送方式主要有四种:

1. 程序控制方式 2. 中断控制方式 3. DMA 方式 4. I/O 处理机方式

其中程序控制方式又分为:无条件传送方式,查询传送方式

2.1 程序控制的输入/输出方式

程序控制方式的特点是:数据传送过程由 CPU 执行程序直接控制。

也就是说,CPU 主动去读外设或写外设。

2.1.1 无条件传送方式

无条件传送方式是最简单的 I/O 控制方式。

它的基本思想是:

默认外设已经准备好, CPU 不检查状态, 直接进行输入或输出。

例如:

CPU 认为输入设备已经有数据 CPU 直接执行 IN 指令读取数据 或者 CPU 认为输出设备已经空闲 CPU 直接执行 OUT 指令输出数据

无条件传送方式的使用条件

这种方式必须满足:外设什么时候准备好是确定的或者外设速度足够快 或者 CPU 可以通过延时保证外设已经准备好

例如定时控制的简单设备,可以用这种方式。

无条件传送方式的优点

硬件简单 程序简单 不需要状态端口 不需要查询外设状态

无条件传送方式的缺点

可靠性较差,必须准确估计外设准备时间 等待时间通常要按最坏情况设计,CPU 可能白白等待,效率较低

2.1.2 查询传送方式

查询传送方式也叫程序查询方式。

它的基本思想是:

CPU 在传送数据前,先读取外设状态。 如果外设准备好,就传送数据; 如果没有准备好,就继续查询等待。

流程可以写成:

读取状态寄存器 判断 Ready 位 Ready = 0,继续查询 Ready = 1,执行数据传送

查询方式需要什么硬件

查询方式下,I/O 接口中除了数据寄存器外,还要有:状态寄存器,状态标志位

例如:输入设备是否有数据 输出设备是否空闲 是否出错 是否忙

查询方式的优点

比无条件传送可靠 能协调 CPU 和慢速外设之间的速度差异 硬件仍然比较简单

查询方式的缺点

CPU 要反复查询外设状态 浪费 CPU 时间 CPU 在等待期间不能做其他有用工作 系统效率低

所以查询方式适合:

外设数量少 速度要求不高 程序比较简单 CPU 空闲时间较多

2.2 中断控制方式

查询方式的问题是 CPU 一直等外设,效率低。

中断方式的思想是:

CPU 不主动等待外设。 外设准备好以后,主动向 CPU 发中断请求。 CPU 响应后再去执行对应的中断服务程序。

2.2.1 中断方式的过程

可以写成:

CPU 正常执行主程序 外设准备好 外设向 CPU 发出中断请求 CPU 暂停当前程序 CPU 转去执行中断服务程序 完成数据输入/输出 CPU 返回原程序继续执行

2.2.2 中断方式的优点

CPU 不需要反复查询外设 提高 CPU 利用率 允许 CPU 和多个外设并行工作 实时性较好 适合随机发生的外设请求

例如:键盘按键 串口接收数据 定时器溢出 外部传感器触发

2.2.3 中断方式的缺点

硬件和软件比查询方式复杂 需要中断控制逻辑 需要中断服务程序 需要保护和恢复现场 多个中断源时还要处理中断优先级

2.2.4 中断和查询方式对比

一句话记:查询方式是 CPU 去找外设;中断方式是外设来找 CPU。

2.3 DMA 工作方式

DMA 全称:Direct Memory Access直接存储器存取

DMA 的核心思想是:外设和内存之间直接交换数据, 不需要 CPU 一条一条执行 IN/OUT 指令搬运。

2.3.1 为什么需要 DMA

如果不用 DMA,从外设向内存传一批数据,通常要:

CPU 从外设读一个数据,CPU 把数据写入内存 CPU 修改地址,CPU 修改计数 重复上述过程

这会浪费大量 CPU 时间。

DMA 则让:外设 ↔ 内存直接传送数据。

CPU 只需要:初始化 DMA 控制器,启动 DMA DMA 完成后 CPU 再处理结果

2.3.2 DMA 的控制者

DMA 方式下,真正控制传送的是:DMA 控制器 DMAC

DMAC 负责:控制地址总线 控制数据总线 产生读写控制信号 修改内存地址 修改传送计数 判断 DMA 是否结束

在 DMA 传送期间,CPU 通常要让出总线控制权。

2.3.3 DMA 的优点

传送速度快 适合大批量数据传送 CPU 负担小 可以提高系统整体效率

适合:

磁盘数据传输 高速 A/D 采样 声卡数据传输 网络数据传输 显示缓冲区搬运

2.3.4 DMA 的缺点

硬件复杂 需要 DMA 控制器 CPU 仍要初始化 DMA DMA 传送期间可能占用总线 需要处理总线仲裁问题

2.4 I/O 处理机方式

I/O 处理机方式简称:IOP 方式

它比 DMA 更进一步。

DMA 主要负责数据搬运,而 I/O 处理机可以负责更复杂的 I/O 操作。

2.4.1 I/O 处理机的思想

CPU 不再直接管理具体 I/O 操作,而是:

CPU 在内存中建立一个 I/O 命令块 I/O 处理机读取命令块 I/O 处理机独立完成 I/O 操作 完成后通知 CPU

2.4.2 I/O 处理机能做什么

I/O 处理机可以完成:

数据传送 数据格式转换 数据拆装 设备控制 错误检测 复杂外设管理

2.4.3 I/O 处理机方式的优点

CPU 负担更小 适合大型系统 适合复杂 I/O 任务 I/O 操作可以块为单位进行 系统并行能力强

2.4.4 四种 I/O 方式对比

可以记成:

程序控制:CPU 全管,中断方式:外设请求,CPU 服务 DMA:DMAC 搬数据,I/O 处理机:专门处理器管 I/O

3. 微处理器与 I/O 接口电路的连接

CPU 通过总线连接存储器和 I/O 接口。

需要考虑三个问题:

1. 负载能力是否匹配 2. 速度是否匹配 3. 逻辑连接是否正确

3.1 负载能力匹配

CPU 或接口芯片的输出端不能带太多负载。

如果负载超过芯片驱动能力,可能导致:

电平错误 信号变形 系统工作不可靠

所以必要时要加:

总线驱动器 缓冲器 三态门 锁存器

3.2 速度匹配

CPU 速度往往比外设快。

如果外设来不及响应 CPU 的读写周期,需要:

插入等待周期 使用 READY 信号 降低 CPU 时钟 选用速度合适的接口芯片

教材里提到 READY 引脚,就是让 CPU 插入等待周期,使慢速外设有时间完成读写。

3.3 逻辑连接正确性

CPU 和 I/O 接口连接时,必须正确连接:

地址线 数据线 读写控制线 片选信号 状态信号 中断请求信号

尤其是片选逻辑和地址译码,决定 CPU 访问哪个 I/O 端口。

4. I/O 端口的编址方式

CPU 访问 I/O 接口前,要给 I/O 接口中的寄存器分配地址。

常见方式有两种:

1. 存储器与 I/O 统一编址 2. 存储器与 I/O 独立编址

4.1 统一编址方式

统一编址也叫:存储器映像 I/OMemory-Mapped I/O

它的特点是:

把 I/O 接口寄存器当作存储单元一样编址。

也就是说,I/O 端口和内存共用同一个地址空间。

CPU 访问 I/O 端口就像访问内存一样。

例如:MOV [0FFFFH], AL

这条指令可能不是写内存,而是写某个 I/O 接口寄存器,具体取决于硬件地址译码。

4.1.1 统一编址的优点

访问 I/O 可以使用所有访存指令 指令功能强 编程灵活 I/O 接口可以和存储器共用地址译码电路 CPU 不需要专门区分访存和访外设

4.1.2 统一编址的缺点

I/O 端口占用内存地址空间 可用内存容量减少 访问 I/O 的地址通常较长 指令可能占用更多存储空间

教材里强调:8086 如果统一编址,I/O 地址要按 16 位偏移地址处理; 而专用 I/O 指令可以只用 8 位端口地址。

4.2 独立编址方式

独立编址也叫:I/O 映像 I/O, Isolated I/O, Port-Mapped I/O

它的特点是:I/O 端口和存储器使用不同的地址空间。

CPU 有专门的输入/输出指令:IN,OUT

例如:OUT 0FFH, AL IN AL, 60H

4.2.1 独立编址需要的控制信号

在 8086 系统中,访问内存和访问 I/O 由控制信号区分。

常见信号是:

M/IO RD WR 地址线 数据线

当访问存储器时:M/IO = 1

当访问 I/O 端口时:M/IO = 0

4.2.2 独立编址的优点

I/O 端口不占用内存地址空间 访存和访 I/O 控制清楚 I/O 地址可以较短 硬件译码范围可以较小

4.2.3 独立编址的缺点

只能用专门的 IN/OUT 指令访问 I/O 指令功能不如访存指令灵活 CPU 需要提供区分内存和 I/O 的控制信号

4.3 统一编址和独立编址对比

一句话记:

统一编址:I/O 像内存一样访问。 独立编址:I/O 用专门端口地址和 IN/OUT 指令访问。