DMA与DMA控制器.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

校验传输 写传输
1 0 读传输
11
非法
X X D7 D6=11
• 8237A 控制/命令REG. 格式(写8号):硬件设置与运行控制
➢8237A硬件设置:
DACK有效电平 低电平有效
D7 D6 D5 D4 0
高电平有效
1
DREQ有效电平
高电平有效
0
低电平有效
1
扩展写
不扩展写
0
扩展写
1
D3=1
X
优先级类型
➢ RESET:输入,复位信号,复位时屏幕寄存器 置1,其它寄存器置0。
➢ EOP#:双向。输出时,表明内部通道传送结束; 输入时,表明外部强迫DMA传送仃止。
➢ DREQ0-DREQ3:I/O设备DMA请求输入信号。 ➢ DACK0-DACK3:输出DMA请求的响应。 ➢ HRQ:8237A向处理器发出的总线请求信号。 ➢ HLDA:处理器发给8237A的总线请求响应信号。
非法
A
写屏蔽标志 REG.
单一位
非法
B
写模式 REG.
非法
C
清除字节指针 F/F
读暂存器
D
复位 (总清)
非法
E
清除/屏蔽标志 REG.
三个软件 命令不依 赖DB上 数据
非法
F
所有位
写所有屏蔽 REG
• 8237A 模式 REG. 格式(写B号):工作方式设定
模式选择
D7 D6 D5 D4
随机请求传输模式 0
M M传送操作时经DB7-DB0,将M数据送 8237A暂存器。 ➢ A3-A4:地址线,从模块时为输入,处理器寻 址8237A;主模块时输出低压位地址。
DMA与DMA控制器(续)
➢ A7-A4:地址线,主模块时输出A7-A4。 ➢ CS#:片选,从模块时处理器用来寻址8237A。 ➢ IOR#,IOW#:I/O读写控制,双向。8237A在从
REG,16位字节数计数器,6位模式REG。 ➢ 四个通道公用控制寄存器,状态寄存器,屏蔽
寄存器,请求标志寄存器及暂存器,各寄存器 均为8位。
DMA与DMA控制器(续)
3.Intel 8237A可编程DMA控制器框图(续) • 8237A组成说明: ➢ 基地址寄存器:放DMA传送RAM地址初值。 ➢ 当前地址寄存器: DMA传送时内容变化,可读。 ➢ 基字节数寄存器: DMA传送的总字节数。 ➢ 当前字节数寄存器: DMA传送时内容变化,可
0
单字节传输模式
0
1
非传输模式 级联传输模式
1
0
11
地址增量选择
地址加1
0
地址减1
1
自动预置功能选择
禁止
0
允许
1
D3 D2 D1 D0 通道选择
0 0 选 0# Channel 0 1 选 1# Channel 1 0 选 2# Channel 1 1 选 3# Channel
传输类型选择
00 01
0 基 / 现行字计数 写
0 0
1 1
0 0
0 现行字计数
1 基 / 现行地址
读00 1 00 1
写 01 0 01 0
00 0 1 00 0 1
00 0 1 00 0 1
00 1 0 00 1 0
1
现行地址
读 0 0 1 00 1 0 0 0 1 00 1 0
1 基 / 现行字计数 写
01 0 01 0
DMA与DMA控制器
1. DMA(Direct Memory Access)的概念 • DMA方式不用处理器干预完成M与I/O间数据传
送。 • DMA期间系统总线由其它主模块控制(驱动) • 控制总线的主模块要提供系统的地址及控制
信号。 • DMA控制器与处理器配合可实现系统的DMA功
能。
DMA与DMA控制器(续)
➢ 用软命令发出总清(Master Clear)操作:向 0DH端口执行一次写操作。
➢ 向有关通道送地址值,计数值,模式字。 ➢ 送硬件设置命令字,打开8237A。 ➢ 去除屏蔽准备接收DMA请求。
4. 8237A编程序(续) • 8237A状态监测:可监测运行状态。
状态字
8237A 状态 REG. 格式(读8号)
➢8237A运行控制命令字:软件DMA请求
运行控制
8237A DMA 请求REG. 格式(写9号)
D7 D6 D5 D4 D3 D2 D1 D0
不用
清除DMA请求位 0 建立DMA请求位 1
0
0 Channel 0
0
1 Channel 1
1
0 Channel 2
1
1 Channel 3
• 8237A 控制/命令REG. 格式(写A号):硬件设置与运行控制
DMAC 控制传一个字节
块结束否?
Y 放总线中断请求
随机请求 DEMAND REQUEST
HOLD HLDA CLOCK 关闭CPU地址锁存器
DATA SUB
EN# STB
锁存器 IO / M#

址 A15~A8
总 线
A7~A0
ADDR. 译码
HRQ 控制 REG. 8 Addr.Temp.16 Count Temp. 16
A0 ~ A7 A8 ~ A15
W0 ~ W7 W8 ~ W15
W0 ~ W7 W8 ~ W15
8237A 字计数器与地址寄存器端口号与对应操作(2)
通道 REGISTER 操作 CS #10R# 10W# A3 A2 A1 A0
2
基 / 现行地址

0 0
1 1
0 0
01 0 0 01 0 0
2
现行地址
HLDA 状态 REG. 8
暂存器 8
REN
REQ
AEN
MODE REG.6
FLAG
1
MASK FLAG
1 通道0
ADSTB
DB7 : DB0
当前ADDR..REG. 16
可. 16
非读 基字节数REG.16
通道1 CS#
A3~A0 A7~A4
通道2 通道3
3.Intel 8237A可编程DMA控制器框图
CPU响应
DMAC向
CPU发请求 DMAC请求 I/O发响应
DMA传 送结束
DMA传 送进行
DMAC发出 控制信号
DMAC发出 内存地址
․DMA传送方式
允许 DMA
N
DMA
请求?
Y
DMAC发BUS请求
CPU响应DMA 放弃BUS
DMAC控制 传一个字节
块结束否? N
Y
放弃总线中断请求
DMA 放 总 线
字节传送
․DMA传送方式
允许 DMA
DMA请求?
DMAC发BUS请求 CPU 响应 DMA 放弃 BUS
Y DMA请求? N
DMAC控制 传一个字节
N
块结束否?
Y 放总线中断请求
块传送
․DMA传送方式
Y DMA请求? N 放总线
允许 DMA
N
DMA请求?
Y
DMAC发出BUS请求
CPU响应DMA放弃总线
固定优先级
0
循环优先级
1
D3 D2 D1 D0
MEM. MEM. 传输
0 禁止
1
允许
Channel 0 地址保持不变 0 Disable 1 Enable X D0=0
8237A 工作 0 Enable 8237A 1 Disable 8237A
时序类型
0 普通时序
1 压缩时序
X
D0=1
• 8237A 控制/命令REG. 格式(写9号):硬件设置与运行控制
3 基 / 现行字计数 写
0 1 0 01 1 1 0 1 0 01 1 1
3
现行字计数
读 0 0 1 01 1 1 0 0 1 01 1 1
内 F/F
0 1 0 1
0 1
0 1
0 1
0 1
0 1
0 1
DB0~DB7 A0 ~ A7 A8 ~ A15
A0 ~ A7 A8 ~ A15
W0 ~ W7 W8 ~ W15
00 1 1 00 1 1
1
现行字计数
读 0 0 1 00 1 1 0 0 1 00 1 1
内 F/F
0 1 0 1
0 1
0 1
0 1
0 1
0 1
0 1
DB0~DB7 A0 ~ A7 A8 ~ A15
A0 ~ A7 A8 ~ A15
W0 ~ W7 W8 ~ W15
W0 ~ W7 W8 ~ W15
A0 ~ A7 A8 ~ A15
4. 8237A编程
• 地址、字计数器端口分 配
8237A 字计数器与地址寄存器端口号与对应操作(1)
通道
0 0
REGISTER 基 / 现行地址
现行地址
操作 CS #10R# 10W# A3 A2 A1 A0
写01 0 01 0
00 0 0 00 0 0
读 0 0 1 00 0 0 0 0 1 00 0 0
读。
DMA与DMA控制器(续)
3.Intel 8237A可编程DMA控制器框图(续) • 8237A引线说明: ➢ DB7-DB0:双向数据总线。 ➢ 8237A为从模块时被处理器编程或读状态,
DB7-DB0作为数据线,传输数据或命令字。 ➢ 8237A为主模块时DB7-DB0输出地址A15-A8,在
读 0 0 1 01 0 0
0 0 1 01 0 0
2
基 / 现行字计数 写
0 0
1 1
0 0
01 0 1 01 0 1
2
现行字计数
读00 1 00 1
01 0 1 01 0 1
3 基 / 现行地址
写 0 1 0 01 1 0 0 1 0 01 1 0
3
现行地址
读 0 0 1 01 1 0 0 0 1 01 1 0
IOR# MEMR# IOW# MEMW# READY RESET
DREQ0 DACK0
DREQ1 DACK1
DREQ2 DACK2
DREQ3 DACK3
EOP#
DMA与DMA控制器(续)
3.Intel 8237A可编程DMA控制器框图(续) • 8237A主从两面性: ➢ 作为DMAC,8237A是可控制总线的主模块。 ➢ 作为I/O芯片,8237A可被处理器读写。 ➢ 运行时注意8237A主-从地址的变化。 • 8237A组成说明: ➢ 8237A有四个独立通道:每个通道有16位地址
• 8237A 控制/命令REG. 格式(写F号):硬件设置与运行控制
➢8237A运行控制命令字:设屏蔽字(四通道)
运行控制
8237A 全4位 MASK REG. 格式 (写F号)
D7 D6 D5 D4 D3 D2 D1 D0
不用
清 Channel 3 M 位 0 设 Channel 3 M 位 1
模块时为输入,在主模块时为输出。
➢ AEN,ADSTB输出:8位地址锁存允许及选通。 在主模块时允许外部锁存器锁存8237A的高8位 地址。
➢ MEMR#,MEMW:输出,存储器读写控制,主模 块时送存储器。
➢ READY:输入,准备就绪,主模块时控制总线 周期的长度,与慢速设备同步。
DMA与DMA控制器(续)
W0 ~ W7 W8 ~ W15
A0 ~ A7 A8 ~ A15
A0 ~ A7 A8 ~ A15
W0 ~ W7 W8 ~ W15
W0 ~ W7 W8 ~ W15
• 操作命令与端口号对应关系表
A3 A2 A1 A0 IOR# IOW#
10 0 0 0
1
10 0 0 1
0
10 0 1 0
1
10 0 1 1
清 Channel 2 M 位
0
设 Channel 2 M 位
1
0 清 Channel 0 Mask 位 1 设 Channel 0 Mask 位
0
清 Channel 1 Mask 位
1
设 Channel 1 Mask 位
DMA与DMA控制器(续)
4. 8237A编程(续) • 关于3个软件命令:与端口号有关,与
0
10 1 0 0
1
10 1 0 1
0
10 1 1 0
1
10 1 1 1
0
11 0 0 0
1
11 0 0 1
0
11 0 1 0
1
11 0 1 1
0
11 1 0 0
1
11 1 0 1
0
11 1 1 0
1
11 1 1 1
0


读状态 REG. 写命令/控制 REG.
十六进制 8
非法
9
写DMA请求标志 REG.
➢8237A运行控制命令字:设屏蔽字(单通道)
运行控制
8237A 屏蔽 REG. 格式 (单一位)(写A号)
D7 D6 D5 D4 D3 D2 D1 D0
不用
通道选择
0
0 Channel 0
清除 MASK 位
0
0
1 Channel 1
建立 MASK 位
1
1
0 Channel 2
1
1 Channel 3
D7 D6 通道 3 有DMA请求 1
D5 D4 D3 D2 D1 D0 1: 通道 0计数结束
2. DMA系统组成及工作过程 ․ DMA系统组成
地址总线
总线
请求
HOLD
HRQ
DREQ
DMAC
HLDA 总线
HLDA
DACK
CPU 响应
控制总线
DMA 请求
DM A 响应
I/O 设备
数据总线
DMA与DMA控制器(续)
2. DMA系统组成及工作过程 ․ DMA工作过程
I/O向DMAC 发请求
DMAC向
DB线上的内容无关。 ➢ 写C号地址:清除字节指针F/F,使将装
入顺序为先LSB后MSB。 ➢ 写D号地址:总清除命令,屏蔽REG.为1,
其它REG.为0 ,软件复位。 ➢ 写E号地址,清除屏蔽标志。
• 编程过程
➢ HLDA无效时8237A接受µP编程,不管HRQ是否有 效。
➢ 编程前禁止8237A:发关闭8237A命令,向8号 端口(硬件设置)写04H,或对通道进行屏蔽。
相关文档
最新文档