1 / 23

DMA 与 DMA 控制器

DMA 与 DMA 控制器. DMA(Direct Memory Access) 的概念 DMA 方式不用处理器干预完成 M 与 I/O 间数据传送。 DMA 期间系统总线由其它主模块控制 ( 驱动 ) 控制总线的主模块要提供系统的地址及控制信号。 DMA 控制器与处理器配合可实现系统的 DMA 功能。. DMA 与 DMA 控制器(续). 2. DMA 系统组成及工作过程 ․ DMA 系统组成. 地址总线. HOLD HLDA. 总线 请求. DMA 请求. I / O 设备.

osman
Download Presentation

DMA 与 DMA 控制器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DMA与DMA控制器 • DMA(Direct Memory Access)的概念 • DMA方式不用处理器干预完成M与I/O间数据传送。 • DMA期间系统总线由其它主模块控制(驱动) • 控制总线的主模块要提供系统的地址及控制信号。 • DMA控制器与处理器配合可实现系统的DMA功能。

  2. DMA与DMA控制器(续) 2. DMA系统组成及工作过程․ DMA系统组成 地址总线 HOLD HLDA 总线 请求 DMA 请求 I / O 设备 HRQ DREQ DMAC HLDA DACK 总线 响应 DMA 响应 CPU 控制总线 数据总线

  3. DMA与DMA控制器(续) 2. DMA系统组成及工作过程 ․ DMA工作过程 I/O向DMAC DMAC向 CPU响应 DMAC向 发请求 CPU发请求 DMAC请求 I/O发响应 DMA传 送结束 DMAC发出 内存地址 DMA传 送进行 DMAC发出 控制信号

  4. ․DMA传送方式 允许 DMA N DMA 请求? Y DMAC发BUS请求 CPU响应DMA 放弃BUS DMAC控制 传一个字节 DMA 放 总 线 N 块结束否? Y 放弃总线中断请求 字节传送

  5. ․DMA传送方式 允许 DMA DMA请求? DMAC发BUS请求 CPU 响应 DMA 放弃 BUS DMAC控制 传一个字节 Y N 块结束否? DMA请求? N Y 块传送 放总线中断请求

  6. ․DMA传送方式 允许 DMA N DMA请求? Y DMAC发出BUS请求 CPU响应DMA放弃总线 DMAC 控制传一个字节 Y 块结束否? DMA请求? N Y 放总线 放总线中断请求 随机请求 DEMAND REQUEST

  7. HOLD HRQ 控制 REG. 8 Addr.Temp.16 Count Temp. 16 IOR# 状态 REG. 8 暂存器 8 HLDA HLDA MEMR# IOW# CLOCK REN REQ MASK MODE REG.6 1 1 MEMW# AEN FLAG FLAG 通道0 关闭CPU地址锁存器 READY 当前ADDR..REG. 16 基地址 REG. 16 RESET ADSTB 可读 非读 EN# DB7 : DB0 当前字节计数器.16 基字节数REG.16 DREQ0 STB DACK0 DATA SUB 锁存器 IO / M# DREQ1 通道1 DACK1 CS# ADDR. 译 码 地 址 总 线 A15~A8 DREQ2 通道2 A7~A0 DACK2 A3~A0 DREQ3 通道3 DACK3 A7~A4 EOP# 3.Intel 8237A可编程DMA控制器框图

  8. DMA与DMA控制器(续) 3.Intel 8237A可编程DMA控制器框图(续) • 8237A主从两面性: • 作为DMAC,8237A是可控制总线的主模块。 • 作为I/O芯片,8237A可被处理器读写。 • 运行时注意8237A主-从地址的变化。 • 8237A组成说明: • 8237A有四个独立通道:每个通道有16位地址REG,16位字节数计数器,6位模式REG。 • 四个通道公用控制寄存器,状态寄存器,屏蔽寄存器,请求标志寄存器及暂存器,各寄存器均为8位。

  9. DMA与DMA控制器(续) 3.Intel 8237A可编程DMA控制器框图(续) • 8237A组成说明: • 基地址寄存器:放DMA传送RAM地址初值。 • 当前地址寄存器: DMA传送时内容变化,可读。 • 基字节数寄存器: DMA传送的总字节数。 • 当前字节数寄存器: DMA传送时内容变化,可读。

  10. DMA与DMA控制器(续) 3.Intel 8237A可编程DMA控制器框图(续) • 8237A引线说明: • DB7-DB0:双向数据总线。 • 8237A为从模块时被处理器编程或读状态,DB7-DB0作为数据线,传输数据或命令字。 • 8237A为主模块时DB7-DB0输出地址A15-A8,在 M M传送操作时经DB7-DB0,将M数据送8237A暂存器。 • A3-A4:地址线,从模块时为输入,处理器寻址8237A;主模块时输出低压位地址。

  11. DMA与DMA控制器(续) • A7-A4:地址线,主模块时输出A7-A4。 • CS#:片选,从模块时处理器用来寻址8237A。 • IOR#,IOW#:I/O读写控制,双向。8237A在从模块时为输入,在主模块时为输出。 • AEN,ADSTB输出:8位地址锁存允许及选通。在主模块时允许外部锁存器锁存8237A的高8位地址。 • MEMR#,MEMW:输出,存储器读写控制,主模块时送存储器。 • READY:输入,准备就绪,主模块时控制总线周期的长度,与慢速设备同步。

  12. DMA与DMA控制器(续) • RESET:输入,复位信号,复位时屏幕寄存器置1,其它寄存器置0。 • EOP#:双向。输出时,表明内部通道传送结束;输入时,表明外部强迫DMA传送停止。 • DREQ0-DREQ3:I/O设备DMA请求输入信号。 • DACK0-DACK3:输出DMA请求的响应。 • HRQ:8237A向处理器发出的总线请求信号。 • HLDA:处理器发给8237A的总线请求响应信号。

  13. 8237A编程 • 地址、字计数器端口分配 8237A 字计数器与地址寄存器端口号与对应操作(1) 通道 REGISTER 操作 A3 A2 A1 A0 内 F/F CS #10R# 10W# DB0~DB7 A0 ~ A7 A8 ~ A15 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 写 基 / 现行地址 0 0 0 0 0 0 0 0 0 1 A0 ~ A7 A8 ~ A15 0 0 1 0 0 1 0 现行地址 读 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 W0 ~ W7 W8 ~ W15 基 / 现行字计数 写 0 0 0 1 0 0 0 1 0 1 W0 ~ W7 W8 ~ W15 0 0 1 0 0 1 0 现行字计数 读 0 0 1 0 0 0 1 0 0 1 A0 ~ A7 A8 ~ A15 0 1 0 0 1 0 1 基 / 现行地址 写 A0 ~ A7 A8 ~ A15 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 现行地址 读 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 1 W0 ~ W7 W8 ~ W15 基 / 现行字计数 写 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 W0 ~ W7 W8 ~ W15 1 现行字计数 读

  14. 8237A 字计数器与地址寄存器端口号与对应操作(2) 通道 REGISTER 操作 A3 A2 A1 A0 内 F/F CS #10R# 10W# DB0~DB7 A0 ~ A7 A8 ~ A15 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 2 写 基 / 现行地址 0 1 0 0 0 1 0 0 0 1 A0 ~ A7 A8 ~ A15 0 0 1 0 0 1 2 现行地址 读 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 W0 ~ W7 W8 ~ W15 2 基 / 现行字计数 写 0 1 0 1 0 1 0 1 0 1 W0 ~ W7 W8 ~ W15 0 0 1 0 0 1 2 现行字计数 读 0 1 1 0 0 1 1 0 0 1 A0 ~ A7 A8 ~ A15 0 1 0 0 1 0 3 基 / 现行地址 写 A0 ~ A7 A8 ~ A15 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 3 现行地址 读 0 1 0 0 1 0 0 1 1 1 0 1 1 1 3 0 1 W0 ~ W7 W8 ~ W15 基 / 现行字计数 写 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 W0 ~ W7 W8 ~ W15 3 现行字计数 读

  15. 操作命令与端口号对应关系表 A3 A2 A1 A0 IOR# IOW# 操 作 十六进制 1 0 0 0 0 1 读状态 REG. 8 1 0 0 0 1 0 写命令/控制 REG. 1 0 0 1 0 1 非法 9 1 0 0 1 1 0 写DMA请求标志 REG. 1 0 1 0 0 1 非法 A 1 0 1 0 1 0 写屏蔽标志 REG. 单一位 1 0 1 1 0 1 非法 B 1 0 1 1 1 0 写模式 REG. 1 1 0 0 0 1 非法 C 1 1 0 0 1 0 清除字节指针 F/F 三个软件 命令不依 赖DB上 数据 1 1 0 1 0 1 读暂存器 D 1 1 0 1 1 0 复位 (总清) 1 1 1 0 0 1 非法 E 1 1 1 0 1 0 清除/屏蔽标志 REG. 所有位 1 1 1 1 0 1 非法 F 1 1 1 1 1 0 写所有屏蔽 REG

  16. 8237A 模式 REG. 格式(写B号):工作方式设定 D7 D6 D5 D4 D3 D2 D1 D0 模式选择 通道选择 随机请求传输模式 0 0 0 0 选 0#Channel 0 1 选 1#Channel 单字节传输模式 0 1 1 0 选 2#Channel 1 非传输模式 0 1 1 选 3#Channel 级联传输模式 1 1 传输类型选择 地址增量选择 0 0 校验传输 地址加1 0 1 写传输 0 地址减1 1 1 0 读传输 1 1 非 法 自动预置功能选择 X X D7 D6=11 禁止 0 允许 1

  17. 8237A 控制/命令REG. 格式(写8号):硬件设置与运行控制 • 8237A硬件设置: D6 D5 D4 D3 D2 D1 D0 D7 DACK有效电平 MEM. MEM. 传输 低电平有效 0 0 禁止 高电平有效 1 1 允许 DREQ有效电平 Channel 0 地址保持不变 高电平有效 0 0 Disable 低电平有效 1 1 Enable X D0=0 扩展写 不扩展写 8237A 工作 0 扩展写 1 0 Enable 8237A 1 D3=1 X Disable 8237A 优先级类型 时序类型 固定优先级 0 0 普通时序 循环优先级 1 1 压缩时序 X D0=1

  18. 8237A 控制/命令REG. 格式(写9号):硬件设置与运行控制 • 8237A运行控制命令字:软件DMA请求 运行控制 8237A DMA 请求REG. 格式(写9号) D6 D3 D2 D1 D0 D7 D5 D4 不用 0 0 Channel 0 0 1 Channel 1 清除DMA请求位 0 1 0 Channel 2 1 建立DMA请求位 1 1 Channel 3

  19. 8237A 控制/命令REG. 格式(写A号):硬件设置与运行控制 • 8237A运行控制命令字:设屏蔽字(单通道) 运行控制 8237A 屏蔽 REG. 格式 (单一位)(写A号) D6 D3 D2 D1 D0 D7 D5 D4 通道选择 不用 0 0 Channel 0 0 1 Channel 1 清除 MASK 位 0 1 0 Channel 2 1 建立 MASK 位 1 1 Channel 3

  20. 8237A 控制/命令REG. 格式(写F号):硬件设置与运行控制 • 8237A运行控制命令字:设屏蔽字(四通道) 运行控制 8237A 全4位 MASK REG. 格式 (写F号) D6 D3 D2 D1 D0 D7 D5 D4 不用 0 清 Channel 0 Mask 位 1 设 Channel 0 Mask 位 清 Channel 3 M 位 0 0 设 Channel 3 M 位 清 Channel 1 Mask 位 1 设 Channel 1 Mask 位 0 1 清 Channel 2 M 位 1 设 Channel 2 M 位

  21. DMA与DMA控制器(续) • 8237A编程(续) • 关于3个软件命令:与端口号有关,与DB线上的内容无关。 • 写C号地址:清除字节指针F/F,使将装入顺序为先LSB后MSB。 • 写D号地址:总清除命令,屏蔽REG.为1,其它REG.为0 ,软件复位。 • 写E号地址,清除屏蔽标志。

  22. 编程过程 • HLDA无效时8237A接受µP编程,不管HRQ是否有效。 • 编程前禁止8237A:发关闭8237A命令,向8号端口(硬件设置)写04H,或对通道进行屏蔽。 • 用软命令发出总清(Master Clear)操作:向0DH端口执行一次写操作。 • 向有关通道送地址值,计数值,模式字。 • 送硬件设置命令字,打开8237A。 • 去除屏蔽准备接收DMA请求。

  23. 8237A编程序(续) • 8237A状态监测:可监测运行状态。 8237A 状态 REG. 格式(读8号) 状态字 D6 D3 D2 D1 D0 D7 D5 D4 通道 3 有DMA请求 1 1: 通道 0计数结束 通道 2有DMA请求 1 1:通道 1计数结束 通道 1 有DMA请求 1 1:通道 2计数结束 通道 0 有DMA请求 1 1: 通道 3计数结束

More Related