2009-7-31 1
微机原理及应用第七章 输入输出微机原理及应用 —— 第 7章 输入输出 2
第 7章 存储器主要内容学习目的知识点重点难点微机原理及应用 —— 第 7章 输入输出 3
I/O接口电路的典型结构主要内容输入输出端口的寻址方式
2
1
3 输入输出的控制方式微机原理及应用 —— 第 7章 输入输出 4
7.1 输入输出概述
为什么要接口电路?
微机的外部设备多种多样
外部设备 数据格式、工作速度差别很大
外设 不能 与 CPU直接 相连,必须经过中间电路再与系统相连,这部分电路被称为 I/O接口 电路。
微机原理及应用 —— 第 7章 输入输出 5
什么是 I/O接口(电路)?
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路,接口就是
CPU与外设的连接部件。
PC机系统板的可编程接口芯片,I/O总线槽的电路板(适配器)都是接口电路
CPU 接口电路
I/O
设备接口在
CPU与外设之间
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 6
I/O接口的主要功能?
对输入输出数据进行缓冲和锁存
对 CPU的控制命令进行锁存
对外设信号的形式和数据的格式进行变换
I/O端口进行寻址
对 CPU和 I/O设备进行联络
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 7
I/O端口编址方式
概念
I/O端口,是接口电路中 CPU能访问的 寄存器的地址,
I/O操作,CPU对 I/O接口电路 (与设备相关 )的操作,不是访问 I/O设备,
端口编址方式 —— 两种方式
将存储器与外设端口 统一 编址
外设端口 单独 编址
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 8
CPU和 I/O设备间的接口信息
CPU和 I/O设备间的交换的信息:
数据信息:外设的数据
数字量、模拟量、开关量
状态信息,I/O设备的状态
是否忙,是否准备好等信息
控制信息,CPU的控制信息
控制设备的启动与停止
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 9
I/O接口的典型结构
数据 端口,存放 CPU与外设之间传送的数据信息。
状态 端口,反映当前外设所处的工作状态。
控制 端口,CPU 通过接口向外设传送控制信息。
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 10
CPU和 I/O设备间的信息交换-通信
并行通信:数据各位同时传送
串行通信:数据一位一位顺序传送
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 11
主要接口芯片(书本 P214)
计数器 /定时器 8253
并行接口 8255
中断控制器 8259
DMA控制器 8237
串行接口 8250/8251
82815 高速图形接口,82801(北桥)
微机原理及应用 —— 第 7章 输入输出 12
思考题:
一般的 IO接口电路安排有哪三类寄存器?它们各自的作用是什么?
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 13
查询传送方式
中断传送方式
DMA方式
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 14
查询传送方式
由程序控制 CPU与外设之间的数据交换,也称程序传送方式。
无条件传送方式
传送过程:
外设已准备好,不查询外设的状态
输入时,外设的数据已送到三态缓冲器。
输出时,CPU的输出信息已送到输出锁存器的输入端。
用途:用于简单外设
开关
LED显示器
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 15
选中地址数据写信号读信号输出端口无条件传送输入端口
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 16
例,输入,IN AL,80H;
将 80H端口的内容送 AL。
IO/M=1,RD=0,AL=10H
例,输出,OUT 82H,AL; AL=10H
将 AL中的内容送 82H端口。
IO/M=1,WR=0,( 82H) =10H
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 17
查询传送方式
查询式数据传送过程 3个环节,
查询状态环节
CPU寻址状态口,读取状态字
检测是否满足“就绪” 条件
如果不满足,回到第一步读取状态字;
数据传送环节
外设已处于,就绪,状态,寻址数据口
是输入,通过输入指令从数据端口读入数据
是输出,通过输出指令向数据端口输出数据
特点:工作可靠,适用面宽,但传送效率低输入状态就绪?
数据交换
Y
N
流程
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 18
查询式输入接口电路查询式输入
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 19
例 设有某 输入接口,状态口地址 83H,数据口地址 80H,当状态口的 D7为 1
时,数据准备好。 试编写查寻式输入一个数据的程序;
POLL,IN AL,83H
TEST AL,80H ;检查状态位 D7
JZ POLL ; D7=0,没就绪,继续查询
IN AL,80H ; D7=1,就绪,从数据端口;读入数据
D7 D6 D0
READY
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 20
查询式输出:
CPU查询外设状态是否忙,不忙,执行输出 ;否则等待 。
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 21
例,设有某 输出接口,状态口地址 63H,数据口地址
60H,当状态口的 D0为 1时,输出忙 BUSY,D0为 0时,可以输出数据。 试编写查寻式输出 DAT单元一个数据的程序。
查询部分的程序:
POLL,IN AL,63H ;读入状态
TEST AL,01H ;检查忙标志 D0
JNZ POLL ; D0=1,未就绪,继续查询
MOV AL,DAT ; D0=0,就绪,数据送 AL
OUT 60H,AL ;将数据输出到数据端口
D7 D6 D0
BUSY
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 22
例,设有某 输入接口,状态口地址 83H,数据口地址 80H,当状态口的
D7为 1时,数据准备好。 试用查寻式方式,输入 10个数据,并将数据存在 BUF开始的单元中的程序,编写主要程序段。
BUF DB 10 DUP(?)
MOV BX,OFFSET BUF
MOV SI,0
MOV CX,10
POLL,IN AL,83H
TEST AL,80 ;检查状态位 READY
JZ POLL
IN AL,80H
MOV [BX+SI],AL ;存数据
INC SI
LOOP POLL
…...
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 23
思考题:
查询式传送方式有什么优缺点?
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 24
中断传送方式
中断传送方式的原理
启动外设
外设准备好数据,发一个选通信号
外设向 CPU发中断请求
CPU受到中断请求信号,暂停现行程序
CPU执行中断服务程序,执行输入输出操作
中断服务程序结束,返回原来程序
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 25
1
2
3
4
微机原理及应用 —— 第 7章 输入输出 26
中断过程大致分为:
中断请求,由需要提供中断服务程序的设备提出;
中断响应,CPU给设备发出一个中断应答信号;
现场保护,保护执行中断服务程序前的各种信息;
执行中断服务程序,完成特定的操作;
退出中断服务程序,恢复现场。
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 27
中断传送方式的特点
中断传送是一种 效率更高 的程序传送方式
进行传送的 中断服务程序 是 预先 设计好的
中断请求是外设 随机 向 CPU提出的
CPU对请求的 检测 是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 28
查询式传送方式有什么优缺点?中断方式为什么能弥补查询式传送方式的缺点?
7.2 CPU与外设传送数据的方式思考题:
微机原理及应用 —— 第 7章 输入输出 29
7.3直接存储器存取方式( DMA)
DMA (Direct Memory Access),是存储器与外设或存储器之间进行大量数据传送的方法,是在 DMA 控制器的控制下进行的 。
微机原理及应用 —— 第 7章 输入输出 30
DMA特点:
具有接管和控制系统总线的功能,但在取得总线控制权之前,与其它接口芯片一样,
受 CPU的控制。
在 DMA方式,DMA管理总线,控制传送数据的开始与结束,传送的字节数,传送的方向及地址。
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 31
希望克服程序控制传送的不足:
外设 → CPU→ 存储器外设 ← CPU← 存储器
直接存储器存取 DMA方式
用专用接口电路直接和存储器进行数据传送。
外设 → 存储器外设 ← 存储器为什么要用 DMA方式传送数据?
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 32
CPU
总线存储器外设程序控制的数据输入 /输出
DMA
DMA与程序控制数据传送路径比较
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 33
DMA传送原理示意 图
①
系统总线
CPU DMAC
存储器外设接口
AEN IO
W
ME
MW
ME
MR
IO
R
ME
MW
ME
MR
IO
W
IO
R
AE
N
HOLD
HLDA
DRQ
DACK
②
③ ④
⑤
AE
N IOW IOR
ME
MW
ME
MR
① 外设发出 DMA请求
② DMAC向 CPU申请总线
③ CPU完成当前总线周期后 响应,并释放总线控制权
④ DMAC得到总线控制权,并发出 DMA响应信号
⑤ 由 DMAC发出各种控制信号,控制外设与存储器之间的数据传送
⑥ 数据传送完后,DMAC撤销 HOLD信号
⑦ CPU释放 HLDA信号,并重新控制总线
⑥
⑦
微机原理及应用 —— 第 7章 输入输出 34
(1) DMA 传送 DMA 请求
DMA 响应送存储器地址传送数据
DMA 结束传送结束?
Yes
修改地址指针
No
DMA 工作流程图
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 35
(2) DMA 控制器的功能
能向 CPU 发出 DMA 请求信号。
CPU 响应后,接管对总线控制,进入 DMA方式。
发出读、写控制信号。
决定数据传送的地址和数据传送的长度。
判断 DMA 操作的结束,撤消总线请求信号,
使 CPU 恢复正常工作。
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 36
(3) DMA 方式与中断方式的比较中断方式特点 DMA方式控制数据传送
CPU 状态响应适用性由 DMA控制器控制
I/O? 存储器不破坏 CPU 内部寄存器状态请求-响应适用于高速 I/O设备和成组数据交换由 CPU程序控制
I/O? CPU? 存储器请求-响应适用于慢速 I/O
设备,实时处理破坏 CPU内部寄存器状态微机原理及应用 —— 第 7章 输入输出 37
7.3.1 DMA概述当外设把数据准备好以后,发出一个选通脉冲使 DMA
请求触发器置,1”,它一方面向控制 /状态端口发出准备就绪信号,另一方面向 DMA控制器发出 DMA请求。
微机原理及应用 —— 第 7章 输入输出 38
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 39
在整个数据传送完后,DMA控制器撤除总线请求信号 (HOLD变低 ),在下一个 T周期的上升沿,就使 HLDA变低。
当 CPU需要运行别的周期时,又取得对总线的控制。
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 40
7.3.1 DMA概述
DMA传送方式微机原理及应用 —— 第 7章 输入输出 41
DMA传送方式
DMAC一般都有三种基本的 DMA传送方式:
(1) 单字节方式,每次 DMA请求只传送一个字节数据,每传送完一个字节,都撤除 DMA请求信号释放总线;
(2) 块传送方式,每次 DMA请求连续传送一个数据块,待规定长度的数据块传送完了以后才撤除 DMA请求释放总线。
(3)请求传送,只要 I/O接口的数据缓冲可用,
就进行传送
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 42
N
Y
N
允许 DMA
DMAC请求总线
CPU响应,DMAC获总线控制权
DMA传送一个数据块结束?
释放总线至少一个总线周期地址增量,计数器减量
DMAC释放总线
Y
测试 I/O的 DREQ
DMA请求?
单字节方式
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 43
Y
N
允许 DMA
DMA请求?
DMAC请求总线
CPU响应,DMAC获总线控制权
DMA传送一个字节块结束?
地址增量,计数器减量
DMAC释放总线
Y
N
块传送方式
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 44
N
Y
CPU响应,DMAC获总线控制权
DMA传送一个字节块结束?
测试 I/O的 DREQ
有效?
地址增量,计数器减量释放总线,请求中断无效,释放总线允许 DMA
DMA请求?
DMAC请求总线
Y
N
Y
N
请求传送
7.3.1 DMA概述
① 字节数计数器减到 0,发生 TC;
② 由外界送来一个有效的 EOP信号;
③ 外界的 DREQ信号变为无效 (外设的数据已传送完 )。
微机原理及应用 —— 第 7章 输入输出 45
一个总线周期
T
DMAC控制总线,共传送 n个数据
DMA1 DMA2 DMAn
CPU重新控制总线CPU对总线控制连续传送
T
DMA共传送 n个数据
DMA1 DMA2 DMAn
单次传送
DMA3
T请求传送
DMA传送 k个数据 DMA传送 n-k个数据
FIFO可用 FIFO满 FIFO可用 FIFO满图例:
DMA传输方式示意图,
微机原理及应用 —— 第 7章 输入输出 46
7.3.2 DMA 控 制 器下面以 Intel 8237 DMAC为例介绍 DMA控制器( DMAC)的工作原理和使用。
Intel 8237/8237A-5是一种高功能的可编程的 DMA控制器,采用 5MHz的 8237-2传送速度可以达到 1.6兆字节 /秒。
微机原理及应用 —— 第 7章 输入输出 47
7.3.2 DMA 控 制 器
DMA控制器有以下主要功能:
(1) 在一个芯片中有四个独立的 DMA通道 (8237必须与一片 8位地址锁存器如 8282连用 )。
(2) 每一个通道的 DMA请求都可以分别允许和禁止。
(3) 每一个通道的 DMA请求有不同的优先权,优先权可以是固定的,也可以是旋转的 (由编程决定 )。
微机原理及应用 —— 第 7章 输入输出 48
(4) 每一个通道一次传送的最大长度可达 64KB,可以在存储器与外设间进行数据传送,也可以在存储器的两个区域之间进行传送。
(5) 8237的 DMA传送有以下四种方式:
① 单字节传送方式;
② 数据块传送方式;
③ 请求传送方式;
④ 级联方式;
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 49
7.3.2 DMA 控 制 器
在每一种方式下,都能接收外设的请求信号
DREQ,向外设发出响应信号 DACK
在每一种方式下,向 CPU发出 DMA请求信号
HRQ,当接收到 CPU的响应信号 HLDA后就可以接管总线,进行 DMA传送
有一个结束处理的输入信号 EOP,允许外界用此输入端来结束 DMA传送或重新初始化
8237可以级连,扩展通道数微机原理及应用 —— 第 7章 输入输出 50
微机原理及应用 —— 第 7章 输入输出 51
7.3.2 DMA 控 制 器
DREQ0~ DREQ3,DMA通道请求。当外设需要请求 DMA服务时,将 DREQ信号置成有效电平,
并要保持到产生响应信号,DREQ0 优先级最高。
HRQ,总线请求。 8237A输出有效的 HRQ高电平,
向 CPU申请使用系统总线。
HLDA,总线响应。 8237A接受来自 CPU的响应信号 HLDA,取得了总线的控制权。
DACK0~ DACK3,DMA通道响应。 8237A使请求服务的通道产生相应的 DMA响应信号。
8237引线微机原理及应用 —— 第 7章 输入输出 52
7.3.2 DMA 控 制 器
A0-A3,4根低地址线,双向三态。 被动态时输入,CPU对
8237进行初始化时访问芯片内部寄存器与计数器,4位地址说明 8237片内 16个端口。 主动态时输出,作为 20位存储器地址的最低 4位。
A4~ A7,4根地址线,单向。 8237主态时输出,访问存储器地址。
DB0~DB7:双向三态双功能线。
被动态,数据线,CPU对 8237进行初始化,或传送状态。
主动态,为地址线,作为访问存储器的地址的高 8位地址,
同时也作数据线;
ADSTB:地址选通,输出。将 16位地址的高 8位锁存器锁存。
AEN:地址允许,输出。高 8位地址锁存器输出允许信号。
微机原理及应用 —— 第 7章 输入输出 53
7.3.2 DMA 控 制 器
MEMR*,存储器读。有效将数据从存储器读出
MEMW*,存储器写。有效将数据写入存储器
IOR*/IOW*,I/O读 /写信号,双向。 8237A为 主动态时,
输出,对 I/O设备进行读 /写。 被动态时,输入,CPU
向 DMAC写命令、初始化或读状态。
READY,准备好。 DMA传送的 S3下降沿检测到为低时,插入等待状态 Sw,直到 READY为高才进入第 4
个时钟周期 S4。
EOP*:过程结束。 DMA传送过程结束,输出一个低有效脉冲。外部输入低脉冲信号,则终结 DMA传送。
CS*,片选。低有效时,微处理器与 8237A通过数据线通信,主要完成对 8237A的编程。
微机原理及应用 —— 第 7章 输入输出 54
7.3.2 DMA 控 制 器
8237A-5内部寄存器及编程命令
8237A-5内部逻辑框图,包括定时和控制逻辑,命令控制逻辑,优先权控制逻辑,
寄存器组,地址/数据缓冲器等。
微机原理及应用 —— 第 7章 输入输出 55
7.3.2 DMA 控 制 器
(1) 模式寄存器,它用于设置 DMA的操作类型,操作方式,地址改变方式,自动预置,以及选择通道。
微机原理及应用 —— 第 7章 输入输出 56
模式寄存器
D7 D6 D5 D4 D3 D2 D1 D0
00 命令方式
01 单一方式
10 块方式
11 级联模式
0 地址增量 ( 加 1)
1 地址减量 ( 减 1)
0 禁止自动预置
1 允许自动预置
00 DMA校验
01 DMA写
10 DMA读
11 非法
×× 若 D7D6= 11
00 通道 0
01 通道 1
10 通道 2
11 通道 3
微机原理及应用 —— 第 7章 输入输出 57
7.3.2 DMA 控 制 器例1,PC系列软盘读/写操作选择 DMA
通道2,单字节传送,地址增1,不用自动预置,其读/写校验的方式字如下:
写操作?01000110B=46H
读操作?01001010B=4AH
校验操作,?01000010B=42H
微机原理及应用 —— 第 7章 输入输出 58
7.3.2 DMA 控 制 器
( 2) 基地址寄存器,它是 16位的寄存器,用于存
DMA传送的内存首址,在初始化时,由 CPU先写入低字节,再写入高字节。传送过程中基地址寄存器的内容不变。 其作用,在自动预置时,
将它的值重新装入到当前地址寄存器。
(3) 当前地址寄存器,用于存放 DMA传送过程中的内存地址,每次传送后地址自动增1或减
1。
(4) 基字节计数器,它是 16位的寄存器,用于存放 DMA传送的总字节数,在初始化时由 CPU
先低字节后高字节顺序写入,当自动预置时,
将它的值重新装入到当前字节计数器。
微机原理及应用 —— 第 7章 输入输出 59
7.3.2 DMA 控 制 器
(5) 当前字节计数器,它是 16位的计数器,用于存放 DMA传送过程中没有传送完的字节数,
每次传送之后,字节计数器减1,当它的值由0
减到0 FFFFH时,便产生 EOP,表示字节传送完毕。
(6) 屏蔽寄存器,用于禁止或允许通道的 DMA
请求。
(7) 请求寄存器,由软件来启动 DMA请求。
(8) 命令寄存器,用于控制 8237操作 。
(9) 状态寄存器,存放 8237的状态,提供哪些通道已到终止计数,哪些通道有 DMA请求等状态信息供 CPU分析微机原理及应用 —— 第 7章 输入输出 60
命令寄存器
D7 D6 D5 D4 D3 D2 D1 D0
0 DACK低有效
1 DACK高有效
0 DREQ高有效
1 DREQ低有效
0 滞后写
1 扩展写
× 若 D3= 1
0 固定优先权
1 循环优先权
0 正常时序
1 压缩时序
× 若 D0= 1
0 允许 DMAC工作
1 禁止 DMAC工作
0 允许通道 0地址改变
1 禁止通道 0地址改变
× 若 D0= 0
0 禁止存储器之间传送
1 允许存储器之间传送微机原理及应用 —— 第 7章 输入输出 61
请求寄存器
D7 D6 D5 D4 D3 D2 D1 D0
1 通道3尚有未处理的D
MA请求
0 通道3无尚有未处理的
DMA请求
1 通道2尚有未处理的D
MA请求
0 通道2无尚有未处理的
DMA请求
1 通道1尚有未处理的D
MA请求
0 通道1无尚有未处理的
DMA请求
1 通道0尚有未处理的D
MA请求
0 通道0 无 尚有未处理的
DMA请求
1 通道3已收到终止计数信号
0 通道3未收到终止计数信号
1 通道2已收到终止计数信号
0 通道2未收到终止计数信号
1通道 1已收到终止计数信号
0通道 0未收到终止计数信号
1通道 0已收到终止计数信号
0通道 0未收到终止计数信号微机原理及应用 —— 第 7章 输入输出 62
7.3.2 DMA 控 制 器
( 10) 暂存寄存器,在存储器与存储器传送时暂时保存数据。
( 11) 软命令软命令只要对特定的地址进行一次写操作,命令就生效。
①清先 /后触发器命令。
在向 16位地址寄存器和字节数计数器进行写操作时,分两次写入,由它控制写入次序,为 0写入低字节,为 1写入高字节。
MOV AL,0AAH ; AL为任意值 0AAH
OUT 0CH,AL;写入先 /后触发器端口使其置 0态
②总清除命令。
它与硬件 RESET信号作用相同,即执行本软件命令的结果会使:
“命令”、“状态”、“请求”、“暂存”寄存器以及“先 /
后触发器”清除,而屏蔽寄存器置位。 程序段为:
MOV AL,0BBH; AL为任意值 0BBH
OUT 0DH,AL; 写入总清端口,执行总清命令微机原理及应用 —— 第 7章 输入输出 63
7.3.2 DMA 控 制 器
3,DMA控制器的时序
DMA控制器 8237有两种工作状态,DMA空闲周期 和
DMA有效周期,其中还有一个从空闲周期到有效周期的过渡阶段 。
(1)DMA空闲周期 SI
未编程之前,或已编程但还没有 DMA请求时,进入空闲周期。此时,控制器一方面 检测 DREQ,看是否有外设请求 DMA服务;另一方面,对 CS端进行采样,检测是否
CPU要对它进行初始化或读取信息。
微机原理及应用 —— 第 7章 输入输出 64
7.3.2 DMA 控 制 器
(2)过渡状态 S0
8237发出 HQR之后,DMAC的时序从 SI状态跳出进入 S0状态,并重复执行 S0状态,直到收到 CPU的应答信号 HLDA后,才结束 S0状态,
进入 S1状态,开始 DMA有效周期。
微机原理及应用 —— 第 7章 输入输出 65
7.3.2 DMA 控 制 器
(3)DMA有效周期
DMA进入有效周期,开始传送数据。一个完整的 DMA传送周期包括 S1,S2,S3和 S4个状态。如果存储器或外设的速度跟不上,可在 S3和 S4之间插入等待状态周期 SW。
① S1:更新高 8位地址。
微机原理及应用 —— 第 7章 输入输出 66
7.3.2 DMA 控 制 器
② S2:输出 16位 RAM地址和发 DACK信号寻址 I/O设备。
在 S2状态周期中,要完成两件事:
一,是输出 16位地址到 RAM,其中高 8位地址由数据线 DB0~DB7输出,用 ADSTB下降沿锁存,低 8
位地址由地址线 A0~A7输出。
二,S2状态周期还向申请 DMA传送的外设发出请求回答信号 DACK,以寻址 I/O设备,为数据传送作好准备。随后发读写命令。
微机原理及应用 —— 第 7章 输入输出 67
③ S3:读周期 。在此状态,发出 MEMR(DMA读 )或
IOR(DMA写 )命令。把从内存或 I/O接口读取的 8位数据放到数据线 DB0~DB7上,等待写周期的到来。
④ S4:写周期 。发出 IOW(DMA读 )或 MEMW(DMA写 )命令。
此时,把读周期之后保持在数据线的数据写到 RAM或
I/O接口,到此,完成了一个字节的 DMA传送。 由于读周期之后所得数据并不送入 DMA控制器内部,而是保持在数据线,所以,写周期一开始,即可快速地从数据线上直接写到 RAM或 I/O接口,高速 DMA真正含义。
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 68
若采用 提前写(扩展写),则在 S3中同时发
MEMW(DMA写 )或 IOW(DMA读 )命令,即把 写命令 提前到与 读命令 同时从 S3开始,或者说,
写命令和读命令一样扩展为 2个时钟周期。
若采用 压缩时序,则去掉 S3状态,将读命令宽度压缩到写命令的宽度,即读周期和写周期同为
S4。因此,在成组连续传送不更新高 8位地址的情况下,一次 DMA传送可压缩到 2个时钟周期,这可获得更高的数据吞吐量。
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 69
7.3.2 DMA 控 制 器
S4状态开始前,8237A检测 就绪( READY)
端的 输入信号,如果未就绪,即 READY信号为低电平,则在 S3和 S4之间插入等待状态周期 SW,如果已就绪,即 READY为高电平,则不插入 Sw,8237直接进入 S4状态周期。
微机原理及应用 —— 第 7章 输入输出 70
DB0~ DB7
DACK
ADSTB
A0~ A7
MEMR( IOR)
IOW( MEMW)
HRQ
DREQ
CLK
S1S0S0SiSi S3S2S4S3S2 SiSiS4
HLDA
AEN
A8~A15
微机原理及应用 —— 第 7章 输入输出 71
编程举例若要利用通道 0,由外设 (磁盘 )输入 32KB
的一个数据块,传送至内存 8000H开始的区域
(增量传送 ),采用块连续传送的方式,传送完不自动初始化,外设的 DREQ和 DACK都为高电平有效。
要编程首先要确定端口地址。地址的低 4位用以区分 8237的内部寄存器,高 4位地址 A7~
A4经译码后,连至选片端 CS,假定选中时高 4
位为 5。
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 72
按上述要求,可确定如下控制字:
① 模式控制字
84H; 10000100B
② 屏蔽字
00H
③ 命令字
A0H; 10100000B
假定选中该 8237时,A7-A4为 0101
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 73
OUT 5DH,AL;输出主清除命令
MOV AL,00H
OUT 50H,AL;输出基和现行地址的低 8位
MOV AL,80H
OUT 50H,AL;输出基和现行地址的高 8位
MOV AL,00H
OUT 51H,AL
MOV AL,80H
7.3.2 DMA 控 制 器初始化程序如下:
微机原理及应用 —— 第 7章 输入输出 74
OUT 51H,AL;给基和现行字节数赋值
MOV AL,84H
OUT 5BH,AL;输出模式字
MOV AL,00H
OUT 5AH,AL;输出屏蔽字
MOV AL,0A0H
OUT 58H,AL;输出命令字
7.3.2 DMA 控 制 器
微机原理及应用第七章 输入输出微机原理及应用 —— 第 7章 输入输出 2
第 7章 存储器主要内容学习目的知识点重点难点微机原理及应用 —— 第 7章 输入输出 3
I/O接口电路的典型结构主要内容输入输出端口的寻址方式
2
1
3 输入输出的控制方式微机原理及应用 —— 第 7章 输入输出 4
7.1 输入输出概述
为什么要接口电路?
微机的外部设备多种多样
外部设备 数据格式、工作速度差别很大
外设 不能 与 CPU直接 相连,必须经过中间电路再与系统相连,这部分电路被称为 I/O接口 电路。
微机原理及应用 —— 第 7章 输入输出 5
什么是 I/O接口(电路)?
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路,接口就是
CPU与外设的连接部件。
PC机系统板的可编程接口芯片,I/O总线槽的电路板(适配器)都是接口电路
CPU 接口电路
I/O
设备接口在
CPU与外设之间
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 6
I/O接口的主要功能?
对输入输出数据进行缓冲和锁存
对 CPU的控制命令进行锁存
对外设信号的形式和数据的格式进行变换
I/O端口进行寻址
对 CPU和 I/O设备进行联络
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 7
I/O端口编址方式
概念
I/O端口,是接口电路中 CPU能访问的 寄存器的地址,
I/O操作,CPU对 I/O接口电路 (与设备相关 )的操作,不是访问 I/O设备,
端口编址方式 —— 两种方式
将存储器与外设端口 统一 编址
外设端口 单独 编址
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 8
CPU和 I/O设备间的接口信息
CPU和 I/O设备间的交换的信息:
数据信息:外设的数据
数字量、模拟量、开关量
状态信息,I/O设备的状态
是否忙,是否准备好等信息
控制信息,CPU的控制信息
控制设备的启动与停止
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 9
I/O接口的典型结构
数据 端口,存放 CPU与外设之间传送的数据信息。
状态 端口,反映当前外设所处的工作状态。
控制 端口,CPU 通过接口向外设传送控制信息。
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 10
CPU和 I/O设备间的信息交换-通信
并行通信:数据各位同时传送
串行通信:数据一位一位顺序传送
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 11
主要接口芯片(书本 P214)
计数器 /定时器 8253
并行接口 8255
中断控制器 8259
DMA控制器 8237
串行接口 8250/8251
82815 高速图形接口,82801(北桥)
微机原理及应用 —— 第 7章 输入输出 12
思考题:
一般的 IO接口电路安排有哪三类寄存器?它们各自的作用是什么?
7.1 输入输出概述微机原理及应用 —— 第 7章 输入输出 13
查询传送方式
中断传送方式
DMA方式
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 14
查询传送方式
由程序控制 CPU与外设之间的数据交换,也称程序传送方式。
无条件传送方式
传送过程:
外设已准备好,不查询外设的状态
输入时,外设的数据已送到三态缓冲器。
输出时,CPU的输出信息已送到输出锁存器的输入端。
用途:用于简单外设
开关
LED显示器
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 15
选中地址数据写信号读信号输出端口无条件传送输入端口
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 16
例,输入,IN AL,80H;
将 80H端口的内容送 AL。
IO/M=1,RD=0,AL=10H
例,输出,OUT 82H,AL; AL=10H
将 AL中的内容送 82H端口。
IO/M=1,WR=0,( 82H) =10H
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 17
查询传送方式
查询式数据传送过程 3个环节,
查询状态环节
CPU寻址状态口,读取状态字
检测是否满足“就绪” 条件
如果不满足,回到第一步读取状态字;
数据传送环节
外设已处于,就绪,状态,寻址数据口
是输入,通过输入指令从数据端口读入数据
是输出,通过输出指令向数据端口输出数据
特点:工作可靠,适用面宽,但传送效率低输入状态就绪?
数据交换
Y
N
流程
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 18
查询式输入接口电路查询式输入
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 19
例 设有某 输入接口,状态口地址 83H,数据口地址 80H,当状态口的 D7为 1
时,数据准备好。 试编写查寻式输入一个数据的程序;
POLL,IN AL,83H
TEST AL,80H ;检查状态位 D7
JZ POLL ; D7=0,没就绪,继续查询
IN AL,80H ; D7=1,就绪,从数据端口;读入数据
D7 D6 D0
READY
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 20
查询式输出:
CPU查询外设状态是否忙,不忙,执行输出 ;否则等待 。
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 21
例,设有某 输出接口,状态口地址 63H,数据口地址
60H,当状态口的 D0为 1时,输出忙 BUSY,D0为 0时,可以输出数据。 试编写查寻式输出 DAT单元一个数据的程序。
查询部分的程序:
POLL,IN AL,63H ;读入状态
TEST AL,01H ;检查忙标志 D0
JNZ POLL ; D0=1,未就绪,继续查询
MOV AL,DAT ; D0=0,就绪,数据送 AL
OUT 60H,AL ;将数据输出到数据端口
D7 D6 D0
BUSY
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 22
例,设有某 输入接口,状态口地址 83H,数据口地址 80H,当状态口的
D7为 1时,数据准备好。 试用查寻式方式,输入 10个数据,并将数据存在 BUF开始的单元中的程序,编写主要程序段。
BUF DB 10 DUP(?)
MOV BX,OFFSET BUF
MOV SI,0
MOV CX,10
POLL,IN AL,83H
TEST AL,80 ;检查状态位 READY
JZ POLL
IN AL,80H
MOV [BX+SI],AL ;存数据
INC SI
LOOP POLL
…...
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 23
思考题:
查询式传送方式有什么优缺点?
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 24
中断传送方式
中断传送方式的原理
启动外设
外设准备好数据,发一个选通信号
外设向 CPU发中断请求
CPU受到中断请求信号,暂停现行程序
CPU执行中断服务程序,执行输入输出操作
中断服务程序结束,返回原来程序
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 25
1
2
3
4
微机原理及应用 —— 第 7章 输入输出 26
中断过程大致分为:
中断请求,由需要提供中断服务程序的设备提出;
中断响应,CPU给设备发出一个中断应答信号;
现场保护,保护执行中断服务程序前的各种信息;
执行中断服务程序,完成特定的操作;
退出中断服务程序,恢复现场。
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 27
中断传送方式的特点
中断传送是一种 效率更高 的程序传送方式
进行传送的 中断服务程序 是 预先 设计好的
中断请求是外设 随机 向 CPU提出的
CPU对请求的 检测 是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚
7.2 CPU与外设传送数据的方式微机原理及应用 —— 第 7章 输入输出 28
查询式传送方式有什么优缺点?中断方式为什么能弥补查询式传送方式的缺点?
7.2 CPU与外设传送数据的方式思考题:
微机原理及应用 —— 第 7章 输入输出 29
7.3直接存储器存取方式( DMA)
DMA (Direct Memory Access),是存储器与外设或存储器之间进行大量数据传送的方法,是在 DMA 控制器的控制下进行的 。
微机原理及应用 —— 第 7章 输入输出 30
DMA特点:
具有接管和控制系统总线的功能,但在取得总线控制权之前,与其它接口芯片一样,
受 CPU的控制。
在 DMA方式,DMA管理总线,控制传送数据的开始与结束,传送的字节数,传送的方向及地址。
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 31
希望克服程序控制传送的不足:
外设 → CPU→ 存储器外设 ← CPU← 存储器
直接存储器存取 DMA方式
用专用接口电路直接和存储器进行数据传送。
外设 → 存储器外设 ← 存储器为什么要用 DMA方式传送数据?
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 32
CPU
总线存储器外设程序控制的数据输入 /输出
DMA
DMA与程序控制数据传送路径比较
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 33
DMA传送原理示意 图
①
系统总线
CPU DMAC
存储器外设接口
AEN IO
W
ME
MW
ME
MR
IO
R
ME
MW
ME
MR
IO
W
IO
R
AE
N
HOLD
HLDA
DRQ
DACK
②
③ ④
⑤
AE
N IOW IOR
ME
MW
ME
MR
① 外设发出 DMA请求
② DMAC向 CPU申请总线
③ CPU完成当前总线周期后 响应,并释放总线控制权
④ DMAC得到总线控制权,并发出 DMA响应信号
⑤ 由 DMAC发出各种控制信号,控制外设与存储器之间的数据传送
⑥ 数据传送完后,DMAC撤销 HOLD信号
⑦ CPU释放 HLDA信号,并重新控制总线
⑥
⑦
微机原理及应用 —— 第 7章 输入输出 34
(1) DMA 传送 DMA 请求
DMA 响应送存储器地址传送数据
DMA 结束传送结束?
Yes
修改地址指针
No
DMA 工作流程图
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 35
(2) DMA 控制器的功能
能向 CPU 发出 DMA 请求信号。
CPU 响应后,接管对总线控制,进入 DMA方式。
发出读、写控制信号。
决定数据传送的地址和数据传送的长度。
判断 DMA 操作的结束,撤消总线请求信号,
使 CPU 恢复正常工作。
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 36
(3) DMA 方式与中断方式的比较中断方式特点 DMA方式控制数据传送
CPU 状态响应适用性由 DMA控制器控制
I/O? 存储器不破坏 CPU 内部寄存器状态请求-响应适用于高速 I/O设备和成组数据交换由 CPU程序控制
I/O? CPU? 存储器请求-响应适用于慢速 I/O
设备,实时处理破坏 CPU内部寄存器状态微机原理及应用 —— 第 7章 输入输出 37
7.3.1 DMA概述当外设把数据准备好以后,发出一个选通脉冲使 DMA
请求触发器置,1”,它一方面向控制 /状态端口发出准备就绪信号,另一方面向 DMA控制器发出 DMA请求。
微机原理及应用 —— 第 7章 输入输出 38
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 39
在整个数据传送完后,DMA控制器撤除总线请求信号 (HOLD变低 ),在下一个 T周期的上升沿,就使 HLDA变低。
当 CPU需要运行别的周期时,又取得对总线的控制。
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 40
7.3.1 DMA概述
DMA传送方式微机原理及应用 —— 第 7章 输入输出 41
DMA传送方式
DMAC一般都有三种基本的 DMA传送方式:
(1) 单字节方式,每次 DMA请求只传送一个字节数据,每传送完一个字节,都撤除 DMA请求信号释放总线;
(2) 块传送方式,每次 DMA请求连续传送一个数据块,待规定长度的数据块传送完了以后才撤除 DMA请求释放总线。
(3)请求传送,只要 I/O接口的数据缓冲可用,
就进行传送
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 42
N
Y
N
允许 DMA
DMAC请求总线
CPU响应,DMAC获总线控制权
DMA传送一个数据块结束?
释放总线至少一个总线周期地址增量,计数器减量
DMAC释放总线
Y
测试 I/O的 DREQ
DMA请求?
单字节方式
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 43
Y
N
允许 DMA
DMA请求?
DMAC请求总线
CPU响应,DMAC获总线控制权
DMA传送一个字节块结束?
地址增量,计数器减量
DMAC释放总线
Y
N
块传送方式
7.3.1 DMA概述微机原理及应用 —— 第 7章 输入输出 44
N
Y
CPU响应,DMAC获总线控制权
DMA传送一个字节块结束?
测试 I/O的 DREQ
有效?
地址增量,计数器减量释放总线,请求中断无效,释放总线允许 DMA
DMA请求?
DMAC请求总线
Y
N
Y
N
请求传送
7.3.1 DMA概述
① 字节数计数器减到 0,发生 TC;
② 由外界送来一个有效的 EOP信号;
③ 外界的 DREQ信号变为无效 (外设的数据已传送完 )。
微机原理及应用 —— 第 7章 输入输出 45
一个总线周期
T
DMAC控制总线,共传送 n个数据
DMA1 DMA2 DMAn
CPU重新控制总线CPU对总线控制连续传送
T
DMA共传送 n个数据
DMA1 DMA2 DMAn
单次传送
DMA3
T请求传送
DMA传送 k个数据 DMA传送 n-k个数据
FIFO可用 FIFO满 FIFO可用 FIFO满图例:
DMA传输方式示意图,
微机原理及应用 —— 第 7章 输入输出 46
7.3.2 DMA 控 制 器下面以 Intel 8237 DMAC为例介绍 DMA控制器( DMAC)的工作原理和使用。
Intel 8237/8237A-5是一种高功能的可编程的 DMA控制器,采用 5MHz的 8237-2传送速度可以达到 1.6兆字节 /秒。
微机原理及应用 —— 第 7章 输入输出 47
7.3.2 DMA 控 制 器
DMA控制器有以下主要功能:
(1) 在一个芯片中有四个独立的 DMA通道 (8237必须与一片 8位地址锁存器如 8282连用 )。
(2) 每一个通道的 DMA请求都可以分别允许和禁止。
(3) 每一个通道的 DMA请求有不同的优先权,优先权可以是固定的,也可以是旋转的 (由编程决定 )。
微机原理及应用 —— 第 7章 输入输出 48
(4) 每一个通道一次传送的最大长度可达 64KB,可以在存储器与外设间进行数据传送,也可以在存储器的两个区域之间进行传送。
(5) 8237的 DMA传送有以下四种方式:
① 单字节传送方式;
② 数据块传送方式;
③ 请求传送方式;
④ 级联方式;
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 49
7.3.2 DMA 控 制 器
在每一种方式下,都能接收外设的请求信号
DREQ,向外设发出响应信号 DACK
在每一种方式下,向 CPU发出 DMA请求信号
HRQ,当接收到 CPU的响应信号 HLDA后就可以接管总线,进行 DMA传送
有一个结束处理的输入信号 EOP,允许外界用此输入端来结束 DMA传送或重新初始化
8237可以级连,扩展通道数微机原理及应用 —— 第 7章 输入输出 50
微机原理及应用 —— 第 7章 输入输出 51
7.3.2 DMA 控 制 器
DREQ0~ DREQ3,DMA通道请求。当外设需要请求 DMA服务时,将 DREQ信号置成有效电平,
并要保持到产生响应信号,DREQ0 优先级最高。
HRQ,总线请求。 8237A输出有效的 HRQ高电平,
向 CPU申请使用系统总线。
HLDA,总线响应。 8237A接受来自 CPU的响应信号 HLDA,取得了总线的控制权。
DACK0~ DACK3,DMA通道响应。 8237A使请求服务的通道产生相应的 DMA响应信号。
8237引线微机原理及应用 —— 第 7章 输入输出 52
7.3.2 DMA 控 制 器
A0-A3,4根低地址线,双向三态。 被动态时输入,CPU对
8237进行初始化时访问芯片内部寄存器与计数器,4位地址说明 8237片内 16个端口。 主动态时输出,作为 20位存储器地址的最低 4位。
A4~ A7,4根地址线,单向。 8237主态时输出,访问存储器地址。
DB0~DB7:双向三态双功能线。
被动态,数据线,CPU对 8237进行初始化,或传送状态。
主动态,为地址线,作为访问存储器的地址的高 8位地址,
同时也作数据线;
ADSTB:地址选通,输出。将 16位地址的高 8位锁存器锁存。
AEN:地址允许,输出。高 8位地址锁存器输出允许信号。
微机原理及应用 —— 第 7章 输入输出 53
7.3.2 DMA 控 制 器
MEMR*,存储器读。有效将数据从存储器读出
MEMW*,存储器写。有效将数据写入存储器
IOR*/IOW*,I/O读 /写信号,双向。 8237A为 主动态时,
输出,对 I/O设备进行读 /写。 被动态时,输入,CPU
向 DMAC写命令、初始化或读状态。
READY,准备好。 DMA传送的 S3下降沿检测到为低时,插入等待状态 Sw,直到 READY为高才进入第 4
个时钟周期 S4。
EOP*:过程结束。 DMA传送过程结束,输出一个低有效脉冲。外部输入低脉冲信号,则终结 DMA传送。
CS*,片选。低有效时,微处理器与 8237A通过数据线通信,主要完成对 8237A的编程。
微机原理及应用 —— 第 7章 输入输出 54
7.3.2 DMA 控 制 器
8237A-5内部寄存器及编程命令
8237A-5内部逻辑框图,包括定时和控制逻辑,命令控制逻辑,优先权控制逻辑,
寄存器组,地址/数据缓冲器等。
微机原理及应用 —— 第 7章 输入输出 55
7.3.2 DMA 控 制 器
(1) 模式寄存器,它用于设置 DMA的操作类型,操作方式,地址改变方式,自动预置,以及选择通道。
微机原理及应用 —— 第 7章 输入输出 56
模式寄存器
D7 D6 D5 D4 D3 D2 D1 D0
00 命令方式
01 单一方式
10 块方式
11 级联模式
0 地址增量 ( 加 1)
1 地址减量 ( 减 1)
0 禁止自动预置
1 允许自动预置
00 DMA校验
01 DMA写
10 DMA读
11 非法
×× 若 D7D6= 11
00 通道 0
01 通道 1
10 通道 2
11 通道 3
微机原理及应用 —— 第 7章 输入输出 57
7.3.2 DMA 控 制 器例1,PC系列软盘读/写操作选择 DMA
通道2,单字节传送,地址增1,不用自动预置,其读/写校验的方式字如下:
写操作?01000110B=46H
读操作?01001010B=4AH
校验操作,?01000010B=42H
微机原理及应用 —— 第 7章 输入输出 58
7.3.2 DMA 控 制 器
( 2) 基地址寄存器,它是 16位的寄存器,用于存
DMA传送的内存首址,在初始化时,由 CPU先写入低字节,再写入高字节。传送过程中基地址寄存器的内容不变。 其作用,在自动预置时,
将它的值重新装入到当前地址寄存器。
(3) 当前地址寄存器,用于存放 DMA传送过程中的内存地址,每次传送后地址自动增1或减
1。
(4) 基字节计数器,它是 16位的寄存器,用于存放 DMA传送的总字节数,在初始化时由 CPU
先低字节后高字节顺序写入,当自动预置时,
将它的值重新装入到当前字节计数器。
微机原理及应用 —— 第 7章 输入输出 59
7.3.2 DMA 控 制 器
(5) 当前字节计数器,它是 16位的计数器,用于存放 DMA传送过程中没有传送完的字节数,
每次传送之后,字节计数器减1,当它的值由0
减到0 FFFFH时,便产生 EOP,表示字节传送完毕。
(6) 屏蔽寄存器,用于禁止或允许通道的 DMA
请求。
(7) 请求寄存器,由软件来启动 DMA请求。
(8) 命令寄存器,用于控制 8237操作 。
(9) 状态寄存器,存放 8237的状态,提供哪些通道已到终止计数,哪些通道有 DMA请求等状态信息供 CPU分析微机原理及应用 —— 第 7章 输入输出 60
命令寄存器
D7 D6 D5 D4 D3 D2 D1 D0
0 DACK低有效
1 DACK高有效
0 DREQ高有效
1 DREQ低有效
0 滞后写
1 扩展写
× 若 D3= 1
0 固定优先权
1 循环优先权
0 正常时序
1 压缩时序
× 若 D0= 1
0 允许 DMAC工作
1 禁止 DMAC工作
0 允许通道 0地址改变
1 禁止通道 0地址改变
× 若 D0= 0
0 禁止存储器之间传送
1 允许存储器之间传送微机原理及应用 —— 第 7章 输入输出 61
请求寄存器
D7 D6 D5 D4 D3 D2 D1 D0
1 通道3尚有未处理的D
MA请求
0 通道3无尚有未处理的
DMA请求
1 通道2尚有未处理的D
MA请求
0 通道2无尚有未处理的
DMA请求
1 通道1尚有未处理的D
MA请求
0 通道1无尚有未处理的
DMA请求
1 通道0尚有未处理的D
MA请求
0 通道0 无 尚有未处理的
DMA请求
1 通道3已收到终止计数信号
0 通道3未收到终止计数信号
1 通道2已收到终止计数信号
0 通道2未收到终止计数信号
1通道 1已收到终止计数信号
0通道 0未收到终止计数信号
1通道 0已收到终止计数信号
0通道 0未收到终止计数信号微机原理及应用 —— 第 7章 输入输出 62
7.3.2 DMA 控 制 器
( 10) 暂存寄存器,在存储器与存储器传送时暂时保存数据。
( 11) 软命令软命令只要对特定的地址进行一次写操作,命令就生效。
①清先 /后触发器命令。
在向 16位地址寄存器和字节数计数器进行写操作时,分两次写入,由它控制写入次序,为 0写入低字节,为 1写入高字节。
MOV AL,0AAH ; AL为任意值 0AAH
OUT 0CH,AL;写入先 /后触发器端口使其置 0态
②总清除命令。
它与硬件 RESET信号作用相同,即执行本软件命令的结果会使:
“命令”、“状态”、“请求”、“暂存”寄存器以及“先 /
后触发器”清除,而屏蔽寄存器置位。 程序段为:
MOV AL,0BBH; AL为任意值 0BBH
OUT 0DH,AL; 写入总清端口,执行总清命令微机原理及应用 —— 第 7章 输入输出 63
7.3.2 DMA 控 制 器
3,DMA控制器的时序
DMA控制器 8237有两种工作状态,DMA空闲周期 和
DMA有效周期,其中还有一个从空闲周期到有效周期的过渡阶段 。
(1)DMA空闲周期 SI
未编程之前,或已编程但还没有 DMA请求时,进入空闲周期。此时,控制器一方面 检测 DREQ,看是否有外设请求 DMA服务;另一方面,对 CS端进行采样,检测是否
CPU要对它进行初始化或读取信息。
微机原理及应用 —— 第 7章 输入输出 64
7.3.2 DMA 控 制 器
(2)过渡状态 S0
8237发出 HQR之后,DMAC的时序从 SI状态跳出进入 S0状态,并重复执行 S0状态,直到收到 CPU的应答信号 HLDA后,才结束 S0状态,
进入 S1状态,开始 DMA有效周期。
微机原理及应用 —— 第 7章 输入输出 65
7.3.2 DMA 控 制 器
(3)DMA有效周期
DMA进入有效周期,开始传送数据。一个完整的 DMA传送周期包括 S1,S2,S3和 S4个状态。如果存储器或外设的速度跟不上,可在 S3和 S4之间插入等待状态周期 SW。
① S1:更新高 8位地址。
微机原理及应用 —— 第 7章 输入输出 66
7.3.2 DMA 控 制 器
② S2:输出 16位 RAM地址和发 DACK信号寻址 I/O设备。
在 S2状态周期中,要完成两件事:
一,是输出 16位地址到 RAM,其中高 8位地址由数据线 DB0~DB7输出,用 ADSTB下降沿锁存,低 8
位地址由地址线 A0~A7输出。
二,S2状态周期还向申请 DMA传送的外设发出请求回答信号 DACK,以寻址 I/O设备,为数据传送作好准备。随后发读写命令。
微机原理及应用 —— 第 7章 输入输出 67
③ S3:读周期 。在此状态,发出 MEMR(DMA读 )或
IOR(DMA写 )命令。把从内存或 I/O接口读取的 8位数据放到数据线 DB0~DB7上,等待写周期的到来。
④ S4:写周期 。发出 IOW(DMA读 )或 MEMW(DMA写 )命令。
此时,把读周期之后保持在数据线的数据写到 RAM或
I/O接口,到此,完成了一个字节的 DMA传送。 由于读周期之后所得数据并不送入 DMA控制器内部,而是保持在数据线,所以,写周期一开始,即可快速地从数据线上直接写到 RAM或 I/O接口,高速 DMA真正含义。
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 68
若采用 提前写(扩展写),则在 S3中同时发
MEMW(DMA写 )或 IOW(DMA读 )命令,即把 写命令 提前到与 读命令 同时从 S3开始,或者说,
写命令和读命令一样扩展为 2个时钟周期。
若采用 压缩时序,则去掉 S3状态,将读命令宽度压缩到写命令的宽度,即读周期和写周期同为
S4。因此,在成组连续传送不更新高 8位地址的情况下,一次 DMA传送可压缩到 2个时钟周期,这可获得更高的数据吞吐量。
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 69
7.3.2 DMA 控 制 器
S4状态开始前,8237A检测 就绪( READY)
端的 输入信号,如果未就绪,即 READY信号为低电平,则在 S3和 S4之间插入等待状态周期 SW,如果已就绪,即 READY为高电平,则不插入 Sw,8237直接进入 S4状态周期。
微机原理及应用 —— 第 7章 输入输出 70
DB0~ DB7
DACK
ADSTB
A0~ A7
MEMR( IOR)
IOW( MEMW)
HRQ
DREQ
CLK
S1S0S0SiSi S3S2S4S3S2 SiSiS4
HLDA
AEN
A8~A15
微机原理及应用 —— 第 7章 输入输出 71
编程举例若要利用通道 0,由外设 (磁盘 )输入 32KB
的一个数据块,传送至内存 8000H开始的区域
(增量传送 ),采用块连续传送的方式,传送完不自动初始化,外设的 DREQ和 DACK都为高电平有效。
要编程首先要确定端口地址。地址的低 4位用以区分 8237的内部寄存器,高 4位地址 A7~
A4经译码后,连至选片端 CS,假定选中时高 4
位为 5。
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 72
按上述要求,可确定如下控制字:
① 模式控制字
84H; 10000100B
② 屏蔽字
00H
③ 命令字
A0H; 10100000B
假定选中该 8237时,A7-A4为 0101
7.3.2 DMA 控 制 器微机原理及应用 —— 第 7章 输入输出 73
OUT 5DH,AL;输出主清除命令
MOV AL,00H
OUT 50H,AL;输出基和现行地址的低 8位
MOV AL,80H
OUT 50H,AL;输出基和现行地址的高 8位
MOV AL,00H
OUT 51H,AL
MOV AL,80H
7.3.2 DMA 控 制 器初始化程序如下:
微机原理及应用 —— 第 7章 输入输出 74
OUT 51H,AL;给基和现行字节数赋值
MOV AL,84H
OUT 5BH,AL;输出模式字
MOV AL,00H
OUT 5AH,AL;输出屏蔽字
MOV AL,0A0H
OUT 58H,AL;输出命令字
7.3.2 DMA 控 制 器