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

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

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

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

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

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

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

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

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

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