8237A编程.

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

25
5、DMA控制器的工作时序 DMAR的7种状态周期SI,S0,S1,S2,S3,S4及SW SI SI S0 S0 S1 S2 S3 S4 S2 S3 S4 CLK DREQ HRQ
SI
SI
HLDA
AEN ADSTB DB0~DB7 A0~A7 DACK
A8~A15 有效地址 有效地址
IOR MEMR IOW MEMW 8237A-5的DMA时序 扩展写信号
14
4. 8237A编程 • 地址、字计数器端口分配
内 F/F为字节计数标志
8237A 字计数器与地址寄存器端口号与对应操作(1)
通道 寄存器 操作 CS IOR IOW A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
清 Channel 3 M 位
0 1 0 1 0 1
1
设 Channel 3 M 位
清 Channel 2 M 位
清 Channel 1 Mask 位
设 Channel 1 Mask 位
设 Channel 2 M 位
22

关于3个软件命令:与端口号有关,与DB线
上的内容无关。
写C号地址:清除字节指针F/F,使将装入
不用
清除 MASK 位
建立 MASK 位
0 1
0 1 1
21
• 8237A 控制/命令寄存器 格式(写F号):硬件设置与运行控制 8237A运行控制命令字:设屏蔽字(四通道)
运行控制
8237A 全4位 MASK 寄存器 格式 (写F号)
D7
D6 不用
D5
D4
D3
D2
D1
D0 0
清 Channel 0 Mask 位 设 Channel 0 Mask 位
DACK有效电平
低电平有效 高电平有效 DREQ有效电平 0 1
Channel 0 地址保持不变 0 1 0 1 X 0 1 X 0 1 Disable Enable D0=0
高电平有效
低电平有效
扩展写
不扩展写 扩展写 D3=1
8237A 工作 Enable 8237A Disable 8237A
优先级类型
1 1
1 1
1 1
1 1
0 1
1 0
非法 写所有屏蔽 REG
F
所有位 17
• 8237A 模式寄存器格式(写B号):工作方式设定
D7 模式选择 随机请求传输模式 单字节传输模式 非传输模式 级联传输模式 0 0 1 1
D6 0 1 0 1
D5
D4
D3
D2
D1 0 0 1 1 0 1 0 1
D0 通道选择 选 0# Channel 选 1# Channel 选 2# Channel 选 3# Channel
2
2 2 2 3 3 3 3


0 0 0 0 0 0 0 0
1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 1 1 1 0 0
基本 /当前字计数 写 当前字计数 基本 / 当前地址 当前地址 读 写 读
0 0
基本 / 当前地址 写 当前地址 读
0
基本 /当前字计数 写 当前字计数 基本 /当前地址 当前地址 读 写 读
0
1
1 1 1
基本 /当前字计数 写 当前字计数 读
0 0
0 0
1 1
8237A 字计数器与地址寄存器端口号与对应操作(2)
通道 寄存器 基本 /当前地址 当前地址 操作 CS IOR IOW A3 A2 A1 A0 内 F/F 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
固定优先级 循环优先级 0 1 0 1 X
时序类型
普通时序 压缩时序 D0=1 19
• 8237A 控制/命令寄存器格式(写9号):硬件设置与运行控制
8237A运行控制命令字:软件DMA请求
运行控制
8237A DMA 请求寄存器 格式(写9号)
D7
D6
D5 不用
D4
D3
D2
D1 0
D0 0 Channel 0 Channel 1 Channel 2 Channel 3


DMA方式不用处理器干预完成M与I/O间数据传送。
DMA期间系统总线由其它主模块控制(驱动)


控制总线的主模块要提供系统的地址及控制信号。
DMA控制器与处理器配合可实现系统的DMA功能。
2
Biblioteka Baidu
2. DMA系统组成及工作过程 ․ DMA系统组成
地址总线
总线 请求 HOLD HLDA CPU 总线 响应 控制总线 HRQ DMAC HLDA DACK DREQ
26
(1).空闲周期SI 上电后,未编程前,还没有DMA请求,进入空闲周SI, DMA处于被动工作方式,CPU可对DMA进行编程。
DMA 请求 I/O 设备 DMA 响应
数据总线
3
․ DMA工作过程
I/O向DMAC 发请求
DMAC向 CPU发请求 DMA传 送进行
CPU响应 DMAC请求
DMAC向 I/O发响应
DMA传 送结束
DMAC发出 控制信号
DMAC发出 内存地址
4
․DMA传送方式
允许 DMA
N
DMA 请求?
Y
DMAC发BUS请求 CPU响应DMA 放弃BUS DMAC控制 传一个字节 块结束否?
M
M传送操作时经DB7-DB0,将M数据送8237A
暂存器。
A3-A4:地址线,从模块时为输入,处理器寻址
8237A;主模块时输出低压位地址。
12
A7-A4:地址线,主模块时输出A7-A4。
CS:片选,从模块时处理器用来寻址8237A。
IOR,IOW:I/O读写控制,双向。8237A在从模块时
24

8237A状态监测:可监测运行状态。
状态字
8237A 状态 寄存器 格式(读8号)
D6 1 D3 D2 D1 D0 1: 通道 0计数结束
D7
通道 3 有DMA请求
D5
D4
通道 2有DMA请求 1
1:通道 1计数结束
通道 1 有DMA请求
1
1:通道 2计数结束
通道 0 有DMA请求 1
1: 通道 3计数结束
0
清除DMA请求位 建立DMA请求位 0 1 1 1
1
0 1
20
• 8237A 控制/命令寄存器 格式(写A号):硬件设置与运行控制 8237A运行控制命令字:设屏蔽字(单通道)
运行控制
8237A 屏蔽 寄存器 格式 (单一位)(写A号)
D7
D6
D5
D4
D3
D2
D1 0
D0 通道选择 0 1 0 1 Channel 0 Channel 1 Channel 2 Channel 3
基字节数寄存器: DMA传送的总字节数。 当前字节数寄存器: DMA传送时内容变化,可读。
11
8237A引线说明:
DB7-DB0:双向数据总线。
8237A为从模块时被处理器编程或读状态, DB7-
DB0作为数据线,传输数据或命令字。
8237A为主模块时DB7-DB0输出地址A15-A8,在
§9.2 可编程DMA控制器8237A
1. DMA(Direct Memory Access)的概念 2. DMA系统组成及工作过程 3. Intel 8237A可编程DMA控制器框图
4. 8237A编程
5. DMA控制器的工作时序
1
1. DMA(Direct Memory Access) 的概念
读状态 寄存器 写命令/控制 寄存器 非法 写DMA请求标志 寄存器 非法 写屏蔽标志 寄存器 非法 写模式 寄存器 非法 清除字节指针 F/F
单一位
B C
1 1
1 1
1 1
1 1
0 0
1 1
1 1
0 0
0 1
0 1
1 0
1 0
读暂存器 复位 (总清)
非法 清除/屏蔽标志 寄存器
D
E
三个软件 命令不依 赖DB上 数据
10
• 8237A组成说明: 8237A有四个独立通道:每个通道有16位地址REG,16
位字节数计数器,6位模式REG。
四个通道公用控制寄存器,状态寄存器,屏蔽寄存器,
请求标志寄存器及暂存器,各寄存器均为8位。
基地址寄存器:放DMA传送RAM地址初值。
当前地址寄存器: DMA传送时内容变化,可读。
为输入,在主模块时为输出。
AEN,ADSTB输出:8位地址锁存允许及选通。在主
模块时允许外部锁存器锁存8237A的高8位地址。
MEMR,MEMW:输出,存储器读写控制,主模块时送
存储器。
READY:输入,准备就绪,主模块时控制总线周期
的长度,与慢速设备同步。
13
RESET:输入,复位信号,复位时屏幕寄存器置 1,
当前字计数 读

操作命令与端口号对应关系表
A3 A2 A1 A0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 IOR 0 1 0 1 0 1 0 1 0 1 IOW 1 0 1 0 1 0 1 0 1 0 操 作 十六进制 8 9 A
0 0
0 0 0 0 0 0
1 1
0 0 1 1 0 0
0 0
1 1 0 0 1 1
0 1 0 1
0 1 0 1 0 1 0 1
1 1
1 1 1 1
0 0
1 1 1 1
0 1
0 1 0 1
A0 ~ A7 A8 ~ A15
W0 ~ W7 W8 ~ W15 W0 ~ W7 W8 ~ W15 16
基本 /当前字计数 写
其它寄存器置0。
EOP:双向。输出时,表明内部通道传送结束;
输入时,表明外部强迫DMA传送停止。
DREQ0-DREQ3:I/O设备DMA请求输入信号。 DACK0-DACK3:输出DMA请求的响应。 HRQ:8237A向处理器发出的总线请求信号。 HLDA:处理器发给8237A的总线请求响应信号。
传输类型选择 地址增量选择 地址加1 地址减1 0 1 0 0 1 1 X 0 1 0 1 X 校验传输 写传输 读传输 非 法 D7 D6=11
自动预置功能选择
禁止
允许
0
1
18
• 8237A 控制/命令寄存器格式(写8号):硬件设置与运行控制
8237A硬件设置:
D7
D6
D5
D4
D3
D2
D1
D0 MEM. MEM. 传输 0 1 禁止 允许
Y
N
DMA 放 总 线
放弃总线中断请求
字节传送
5
․DMA传送方式
允许 DMA
DMA请求?
DMAC发BUS请求
CPU 响应 DMA 放弃 BUS
DMAC控制 传一个字节
Y
DMA请求? N
N
块结束否? Y 块传送
放总线中断请求
6
․DMA传送方式
允许 DMA
N
DMA请求? Y DMAC发出BUS请求
CPU响应DMA放弃总线
DMAC 控制传一个字节 Y
DMA请求? N 放总线
块结束否? Y 放总线中断请求
随机请求 DEMAND REQUEST
7
3.Intel 8237A可编程DMA控制器框图
8
8237外部引脚
9
8237A主从两面性:
作为DMAC,8237A是可控制总线的主模块。 作为I/O芯片,8237A可被处理器读写。 运行时注意8237A主-从地址的变化。
顺序为先LSB后MSB。
写D号地址:总清除命令,屏蔽寄存器为1,
其它寄存器为0 ,软件复位。
写E号地址,清除屏蔽标志。
23
• 编程过程
HLDA无效时8237A接受µP编程,不管HRQ是否有
效。 编程前禁止8237A:发关闭8237A命令,向8号 端口(硬件设置)写04H,或对通道进行屏蔽。 用软命令发出总清(Master Clear)操作:向 0DH端口执行一次写操作。 向有关通道送地址值,计数值,模式字。 送硬件设置命令字,打开8237A。 去除屏蔽准备接收DMA请求。
内 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 A0 ~ A7 A8 ~ A15 W0 ~ W7 W8 ~ W15 W0 ~ W7 W8 ~ W15 15
相关文档
最新文档