1
1,DMA系统概述
2,可编程 DMA控制器 8237A
3,8237A在微机系统中的应用第八章 DMA控制
2
本章学习目标
DMA的基本功能和在微机系统中的应用
Intel 8237A的功能组成和工作原理
DMA在微机系统中的应用
3
1,DMA系统概述
1.1 DMA概述
1.2 DMA的功能
1.3 DMA控制器的功能 结构
4
1.1 DMA概述
DMA方式就是直接存储器存取工作方式。
在 DMA方式下,外设通过 DMA控制器向 CPU提出接管总线控制权的总线要求,CPU在当前的总线周期结束后,响应 DMA请求,并把总线控制权交给 DMA控制器。在 DMA控制器的管理下,外设和寄存器之间就可以直接进行数据交换。
5
1.2 DMA的功能
( 1) 外设通过 DMA控制器向 CPU提出 DMA申请 。
( 2) DMA控制器接受外设的 DMA请求,取得总线控制权 。
( 3) 总线裁决逻辑对总线申请进行裁决,把总线控制权交给 DMA控制器 。
6
( 4) DMA控制器通知外设 DMA应答,开始进入
DMA传输 。
( 5) DMA控制器按传输数据的长度直接控制外设与 RAM进行数据交换 。
( 6) DMA操作结束,DMA控制器向外设输出计数终止信号,通过接口提出中断申请,
并把总线控制权交给 CPU,完成一次 DMA
数据传输 。
7
1.3 DMA控制器的功能结构
1) 总线控制功能 。
2) 具有用于提供交换数据地址的地址寄存器 。
3) 具有数据块长度计数器 。
4) 具有可编程模式寄存器和状态寄存器 。
8
2,可编程 DMA控制器 8237A
2.1 8237A的内部结构
2.2 8237A的外部引脚及其功能特性
2.3 8237A内部寄存器及其作用
9
2.1 8237A的内部结构
内部结构如图所示,
1,地址寄存器地址寄存器,基地址寄存器,当前地址寄存器
2,字节数寄存器字节数寄存器,基本字节寄存器,当前字节计数器
10
8237的结构框图定时和控制逻辑优先权控制逻辑写缓冲器 读缓冲器
A
4
~A
7
输出缓冲 器
DB
0
~DB
7
D
0
~D
1
I/O 缓冲器命 令控 制
1 6 位总线 16 位总线读 / 写缓冲器当前地址 当前字计寄存器 数寄存器
(1 6 位 ) ( 1 6
位 )
读缓冲器基地址 基字计数寄存器 寄存器
(1 6 位 ) (1 6 位 )
A
0
~A
3
A
8
~A
15
A
0
~A
7
减 1 电路暂时字计数器
(1 6 位 )
加 1/ 减 1 电路暂时地址寄存器
(1 6 位 )
I/O 缓冲器命令寄存器
(8 位 )
屏蔽寄存器 (1 位 )
请求寄存器 (1 位 )
读 / 写工作方式寄存器
(1 6 位 )
状态寄存器
(8 位 )
暂存寄存器
(8 位 )
CS
RESET
READ Y
CLK
EO P
IOR
IO W
M E M R
M E M W
AEN
ADST B
HRQ
HLDA
DR EQ
0
~DREQ
3
DAC K
0
~DACK
3
11
8237的内部寄存器名称 位数 数量 CPU访问方式基地址寄存器 16 4 只写基字节计数寄存器 16 4 只写当前地址寄存器 16 4 可读可写当前字节计数寄存器 16 4 可读可写地址暂存器 16 1 不能访问字节计数寄存器 16 1 不能访问命令寄存器 8 1 只写工作方式寄存器 6 4 只写屏蔽寄存器 4 1 只写请求寄存器 4 1 只写状态寄存器 8 1 只读暂存寄存器 8 1 只读
12
8237循环优先权的变化
3,8237的工作方式及编程控制字
13
2.2 8237A的外部引脚及功能特性
8237A的外部引脚共有 40个,如图所示 。
各引脚功能特性如下:
CLK,时钟频率,为输入信号 。 它控制 DMA数据传送的速率及 8237A内部操作的定时 。
CS,片选信号,为输入信号,低电平有效 。
RESET:复位信号,为输入信号,高电平有效 。
14
1 40
8237
20 2 1
I OR
I O W
ME M R
ME M W
NC
RE AD Y
HL DA
AD ST B
AEN
HRQ
CS
CL K
RE SE T
DA CK
2
DA CK
3
DRE Q
3
DRE Q
2
DRE Q
1
DRE Q
0
GND
A
7
A
6
A
5
A
4
EOP
A
3
A
2
A
1
A
0
Vc c
DB
0
DB
1
DB
2
DB
3
DB
4
DA CK
0
DA CK
1
DB
5
DB
6
DB
7
8237 的引脚配置
15
READY:准备就绪信号,为输入信号,高电平有效。
ADSTB,地址选通信号,为输出信号,高电平有效。
AEN,地址允许信号,为输出信号,高电平有效。
MEMR,寄存器读信号,为输出信号,低电平有效。当此信号有效时,被选中的寄存器单元的内容被读到数据总线上。
16
MEMW:寄存器写信号,为输出信号,低电平有效。
当此信号为低电平时,数据总线上的内容被写入被选中的寄存器单元。
IOR,I/O设备读信号,为双向信号,低电平有效。
IOW,I/O设备写信号,双向信号,低电平有效。
EOP,DMA传输结束信号,双向信号,低电平有效。
17
DREQ,DMA请求信号,属输入信号,高电平有效。
DACK,DMA响应信号,属于输出信号,高电平有效。
HRQ,总线请求信号,属于输出信号,高电平有效。
18
HLDA:总线响应信号,属于输入信号,高电平有效。
A7~A4:高 4位地址线,双向信号在进行 DMA
传输时提供高 4位地址。
A3~A0:低 4位地址线,双向信号。
DB7~DB0,8位双向数据线。
19
8237A各寄存器的端口地址
2.3 8237A内部寄存器及其应用
20
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
00 — 选通道 0
01 — 选通道 1
10 — 选通道 2
11 — 选通道 3
00 — 校验(或 M → M )
01 — 写传送 I/O → M
10 — 读传送 M → I/O
11 — 无效
D 7,D 6 都为 1 时 D 3,D 2 无意义
0 — 禁止自动预置
1 — 允许自动预置
0 — 选择地址加 1
1 — 选择地址减 1
00 — 请求传送方式
01 — 单次传送方式
10 — 成组传送方式
11 — 级联方式工作方式寄存器格式
21
命令寄存器的命令格式
0 — 禁止存储器→存储器
1 — 允许存储器→存储器
0 — 通道 0 地址不保持
1 — 通道 0 地址保持不变
× — D 0 = 0 时该位无意义
0 — 允许 8 2 3 7 操作
1 — 禁止 8 2 3 7 操作
0 — 正常时序
1 — 压缩时序
× — D 0 = 0 时该位无意义
0 — 固定优先权
1 — 循环优先权
0 — 滞后写
1 — 扩展写
× — D 3 = 1 时,该位无意义
0 — D R E Q 高电平有效
1 — D R E Q 低电平有效
0 — D A C K 低电平有效
1 — D A C K 高电平有效
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
22
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
00 —选通道 0
01 —选通道 1
10 —选通道 2
11 —选通道 3
0--
复位请求位
1--
置位请求位无效位请求寄存器的格式
23
同时对四个通道设定屏蔽标志的命令字格式
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
0
通道无效位
1
通道
2
通道
3
通道
0-- 清除通道屏蔽位
1-- 通道屏蔽位置位
24
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
1 — 表 示 该 通 道 有
D M A 请求
0
通道
1
通道
2
通道
3
通道
0 — R ESET 或 C PU 读状态寄存器后
1 — 表示该通道计数到终点或 EO P 输入
0
通道
1
通道
2
通道
3
通道状态寄存器格式
25
3,8237A 在微机系统中的应用
3.1 8237A的编程及其应用
3.2 8237A与微机系统的接口
26
3.1 8237A的编程及其应用
1,DMA的系统结构及主要性能
DMA系统逻辑结构示意图
27
PC/AT微机 DMA系统的基本性能
28
2,8237A编程
( 1) 初始化通道方式寄存器 。
( 2) 预置该通道的基地址和当前地址寄存器 ( 低 16
位 ) 与页面寄存器 ( 高 4位或高 8位 ) 。
( 3) 求传输的字节数,将其值减 1并预置该通道的基地址及当前字节 ( 或字节计数器 ) 。
( 4) 判断传输的数据量是否已经超出边界,若出界则返回错误代码 。
( 5) 开放通道,并允许 DREQ请求 。
29
8237的初始化编程举例例,PC机系统,程序中的变量 DMA地址为 00H,设对 8237的 0通道编程,使其工作于单一传送方式,地址加 1,自动预置,读出操作 。
MOV AL,04H ;命令字禁止 8237操作
OUT DMA+8,AL ;命令字送命令寄存器
OUT DMA+0DH,AL ;发主清命令
MOV AL,0FFH ;传送字节数送 AL
30
OUTDMA+1,AL ;写 0通道字节计数器和当前;字节计数器低 8位
OUTDMA+1,AL ;写 0通道字节计数器和当前字节;计数器高 8位
MOVAL,58H ; DMA工作方式字,单一传送,地;址加 1,自动预置,读出,0;通道,
OUTDMA+0BH,AL
MOVAL,0 ;置命令寄存器
OUTDMA+08H,AL ;命令字送命令寄存器
OUT DMA+10 ;写单一屏蔽寄存器,允许通道; 0请求,
31
3.2 8237A 与微机系统的接口电路使用 DMA通道实现内存到 I/O接口的电路