第 8 章 dma 技术与 dma 控制器

90
1 第 8 第 DMA 第第第 DMA 第第第 §8.1 DMA 第第第第 §8.2 第第第 DMA 第第第 8237A §8.3 DMA 第第第第第第 第第第第 第第第第第第第

Upload: rae

Post on 27-Jan-2016

158 views

Category:

Documents


6 download

DESCRIPTION

第 8 章 DMA 技术与 DMA 控制器. § 8.1 DMA 技术概述 § 8.2 可编程 DMA 控制器 8237A § 8.3 DMA 技术在微机系统中的应用. 直接存储器存取. §8.1 DMA 技术概述. 1.DMA(Direct Memory Access) 的概念 DMA 方式不用处理器干预完成 M 与 I/O 间数据传送。 DMA 期间系统总线由其它主模块控制 ( 驱动 ) 控制总线的主模块要提供系统的地址及控制信号。 DMA 控制器与处理器配合可实现系统的 DMA 功能。. 地址总线. HOLD - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 8 章  DMA 技术与 DMA 控制器

1

第 8 章 DMA 技术与 DMA 控制器

§8.1 DMA 技术概述 §8.2 可编程 DMA 控制器 8237A §8.3 DMA 技术在微机系统中的应用

直接存储器存取

Page 2: 第 8 章  DMA 技术与 DMA 控制器

2

1.DMA(Direct Memory Access) 的概念

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

§8.1 DMA 技术概述

Page 3: 第 8 章  DMA 技术与 DMA 控制器

3

地址总线

HRQ DREQDMAC

HLDA DACK

总线请求

总线响应

HOLD

HLDA

CPU

DMA请求

DMA响应

I / O设备

控制总线

数据总线

2. DMA 系统组成及工作过程 ․ DMA 系统组成

Page 4: 第 8 章  DMA 技术与 DMA 控制器

4

DMAC 的基本功能 接收接口往 DMA 控制器发出 DMA 请求信号

后, DMA 控制器能向 CPU 发出总线请求信号 HOLD( 高电平 ) 。

当 CPU 向 DMA 发出响应信号 HLDA( 高电平 ) 以后, DMA 能接管对总线的控制,进入 DMA 方式。

能向地址总线发出内存地址信息,对其进行寻址及修改地址指针。

Page 5: 第 8 章  DMA 技术与 DMA 控制器

5

DMAC 的基本功能 能向存储器或 I/O 接口发相应的读写控制信号。 能决定传送字节数,并判断 DMA 传送是否结

束。 DMA 过程结束,能向 CPU 发出 DMA 结束信

号, HOLD 变低 , 将总线控制权还给 CPU , CPU 恢复正常工作。

Page 6: 第 8 章  DMA 技术与 DMA 控制器

6

允许 DMA

DMA请求?

DMAC 发 BUS 请求

CPU 响应 DMA放弃 BUS

DMAC 控制传一个字节

块结束否?

放弃总线中断请求

N

DMA放总线

N

Y

字节传送

Y

․DMA 传送方式

Page 7: 第 8 章  DMA 技术与 DMA 控制器

7

允许 DMA

DMA 请求?

DMAC 发 BUS 请求

CPU 响应 DMA放弃 BUS

DMAC 控制传一个字节

块结束否?

放总线中断请求

DMA 请求?

N

Y

Y

N

块传送

․DMA 传送方式

Page 8: 第 8 章  DMA 技术与 DMA 控制器

8

允许 DMA

DMA 请求?

DMAC 发出 BUS 请求

CPU 响应 DMA 放弃总线

DMAC 控制传一个字节

块结束否?

放总线中断请求

Y

DMA 请求?Y

放总线

N

N

Y

随机请求DEMAND REQUEST

․DMA 传送方式

Page 9: 第 8 章  DMA 技术与 DMA 控制器

9

I/O 设备向 DMAC 发出 DMA 请求

DMAC 向 CPU 发出总线请求

CPU 在执行完当前指令的当前的总线周期后,向 DMAC 发出

总线响应信号

CPU 脱离对系统总线的控制,由 DMAC 接管对系统总线的控制

DMAC 向 I/O 设备发出的 DMA 应答信号

DMAC 进行一个字节的传送

完成设定的字节数据传送,CPU 恢复对系统总线的控制

DMADMA传送的过程传送的过程

Page 10: 第 8 章  DMA 技术与 DMA 控制器

10

§8.2 可编程 DMA 控制器 8237A §8.2.1 8237A 的主要特性

1 .具有四个独立的 DMA 通道,每个通道都具有 64K 的存贮器寻址能力,即一次传送的最大长度为 64K 字节。

2 .可实现内存与外设之间的高速大批量数据传送 ,也可实现内存两个不同区域之间的高速数据传送。

3 .每个通道的 DMA 请求均可分别允许或禁止,且四个通道的 DMA 请求的优先权可由软件设置为固定的或循环的。

Page 11: 第 8 章  DMA 技术与 DMA 控制器

11

8237A 的主要特性 4 .具有单字节传送、数据块传送、请求传送

和级联传送四种工作方式。 5 .可用级联方式扩展 DMA 通道数目。 6 . DMA 传送结束信号可由内部计数产生,

也可由外部输入提供。 7 .单一的 +5V 电源, 40 个引脚双列直插式

封装。 8 .采用 5MHz 时钟,传送速率可达 1.6M 字

节 /秒。

Page 12: 第 8 章  DMA 技术与 DMA 控制器

12

8 .采用 5MHz 时钟,传送速率可达 1.6M 字节 /秒。

8237 进行一次 DMA 传送需要 3 个时钟周期 ( 不包括插入的等待周期 SW) 。时钟周期为 200 ns ,则一次 DMA 传送需要 200 ns×3+ 200 ns= 700 ns( 1.6 M 字节 /秒)。多加一个 200 ns 是考虑到人为插入一个 SW的缘故。另外, 8237 为了提高传输速率,可以在压缩定时状态下工作。在此状态下,每一个 DMA 总线周期仅用两个时钟周期( 200 ns×2=400ns )就可实现,这大大提高了传输速率。  

Page 13: 第 8 章  DMA 技术与 DMA 控制器

13

§8.2.2 8237A 的工作原理 1 . 8237A 的编程结构

编程结构见下页图 内部有大量寄存器,内部寄存器的功能、端口地址等信息 参见下表 .

Page 14: 第 8 章  DMA 技术与 DMA 控制器

14

Intel 8237A 可编程 DMA 控制器框图

Page 15: 第 8 章  DMA 技术与 DMA 控制器

15

1) 8237A 组成说明: 8237A 有四个独立通道:通道 0~通道 3 。每个通道可独

立响应外部 DMA 请求,完成 DMA 传送。

15

模式 REG, 1 个 8位1 个 DMA 请求触发器1 个 DMA屏蔽触发器

字节数寄存器 2 个 16位

基字节数寄存器:----DMA 传送的总字节数。

当前字节数寄存器: ----DMA 传送时内容变化 , 可读。

地址寄存器 2个 16位

基地址寄存器----放 DMA 传送 RAM 地址初值当前地址寄存器: ----DMA 传送时内容变化 , 可读。

每个通道

Page 16: 第 8 章  DMA 技术与 DMA 控制器

16

控制寄存器, 8位

16

四个通道公用

状态寄存器, 8位屏蔽寄存器, 8位。请求标志寄存器, 8位暂存器, 8位

优先级编码电路 ---优先级裁决

定时和控制逻辑

• 作从模块 ----接收 CPU 的信号和命令字,产生控制,读 / 写内部寄存器• 作主模块 ----控制总线,产生控制命令完成 DMA 传送

Page 17: 第 8 章  DMA 技术与 DMA 控制器

17

8237 的引脚功能

17

Page 18: 第 8 章  DMA 技术与 DMA 控制器

18

8237 的引脚功能•请求 / 应答信号

外设接口电路向 8237 的请求信号: DREQ3~DREQ0

8237 对外设接口电路的应答信号: DACK3~DACK0

8237 向 CPU申请总线的信号: HRQ(连至 CPU 的 HOLD)

CPU 向 8237 传送的允许使用总线信号: HLDA

•CPU •DMA •外设

HRQ DREQ

HLDA DACK18

Page 19: 第 8 章  DMA 技术与 DMA 控制器

19

8237 的引脚功能

•地址信号

: CPU初始化 8237 或读 8237状态时所需的片选信号

A7~A0(输出): 8237访问存储器的地址信号的低 8位。

A3~A0(输入): CPU初始化 8237 或读 8237状态时,用于寻址 8237 内部寄存器

19

Page 20: 第 8 章  DMA 技术与 DMA 控制器

20

8237 的引脚功能

•数据信号 ( 双向 ): DB7~DB0

CPU 为主控时,可以通过 I/O 读命令查询 8237 的状态寄存器的内容,或通过 I/O 写命令对 8237 的内部寄存器进行编程,数据传送通过 DB7~DB0

8237 为主控时, DB7~DB0 输出要访问的内存地址的高 8位,并通过 ADSTB锁存到外部地址锁存器中,和 A7~A0 输出的低 8位地址一起构成 16位地址

20

Page 21: 第 8 章  DMA 技术与 DMA 控制器

21

8237 的引脚功能

•地址允许信号: AEN

8237 作为主控时( 8237 控制总线),输出 AEN=1 。

8237 作为从控时( CPU 控制总线),输出 AEN=0 。

•DMA 传输结束信号: (双向)

当 DMAC 内部任一通道传输结束, 8237 发出

若由外部给 DMAC 送入有效的 ,则强制 DMAC 内部所有通道结束传输。

21

Page 22: 第 8 章  DMA 技术与 DMA 控制器

22

8237 的引脚功能

MEMR/MEMW:

8237 发出的存储器读 / 写信号

IOR/IOW:

8237 作为主控时,输出的 I/O 读 / 写信号。

8237 作为从控时, CPU 发出的 I/O 读 / 写信号,用于读 / 写 8237

22

Page 23: 第 8 章  DMA 技术与 DMA 控制器

23

8237 的引脚功能

ADSTB:地址选通信号

用于启动地址锁存器

READY:存储器或 I/O 的就绪信号

23

Page 24: 第 8 章  DMA 技术与 DMA 控制器

24

DMA 控制器 8237

工作方式 1)从模块工作方式: 当 CPU 将数据送入或取出 8237 时, DMA

完全象一个普通的 I/O 接口,此时它工作于从模块。

24

Page 25: 第 8 章  DMA 技术与 DMA 控制器

26

DMA 控制器 8237

2)主模块工作方式:此时 DMA已取代 CPU 控制系统。它将提供系统正常工作的地址信息,控制信息完成 DMA 方式的数据传送。

26

Page 26: 第 8 章  DMA 技术与 DMA 控制器

28

DMA 控制器 8237

28

那 对 于 20位地址线 8237如何处理?

由上可见 8237 工作于模块方式,可

取代 CPU 产生地址及控制信息。

8237A8237A 处于处于 DMADMA 方式时方式时 ,,全部地址均用全部地址均用来寻址存储器来寻址存储器 ,,无法同时提供无法同时提供 I/OI/O 设备的设备的端口地址端口地址 .. 为了寻址外部设备为了寻址外部设备 ,8237A,8237A 提提供供 DACKDACK 信号信号 ,, 作为对请求作为对请求 DMADMA 方式的方式的外部设备的应答外部设备的应答 ,, 并指明该外部设备被认并指明该外部设备被认可可 ,, 可以进行可以进行 DMADMA 传送传送 .. 在整个传输过在整个传输过程中只要程中只要 DACKDACK 信号信号 ,IOR,IOW,IOR,IOW同时有同时有效效 ,,就能完成读外部设备的就能完成读外部设备的 I/OI/O 读写操作读写操作 ..所以所以 ,, 在在 DMADMA 方式下方式下 ,I/O,I/O 设备的地址无设备的地址无效效 .. 即即 ::以以 DACKDACK代替了片选和译码功能代替了片选和译码功能 ..

在在 8086/888086/88 系统中,系统的寻址范围是系统中,系统的寻址范围是 1MB1MB ,,地址线有地址线有 2020条,即条,即 A0~A19A0~A19。为了能够在。为了能够在 8088086/886/88 系统中使用系统中使用 82378237 来实现来实现 DMADMA ,需要用硬,需要用硬件提供一组件提供一组 44位的页寄存器。位的页寄存器。

通道通道 00 、、 11 、、 22 、、 33各有一个各有一个 44位的页寄存器。位的页寄存器。在进行在进行 DMADMA 传送之前,这些页寄存器可利用传送之前,这些页寄存器可利用 I/I/OO 地址来装入和读出。当进行地址来装入和读出。当进行 DMADMA 传送时,传送时, DDMACMAC 将将 A0~A15A0~A15 放在系统总线上,同时页寄存放在系统总线上,同时页寄存器把器把 A16~A19A16~A19也放在系统总线上,形成也放在系统总线上,形成 A0~A1A0~A199 这这 2020位地址信号实现位地址信号实现 DMADMA 传送。其地址产传送。其地址产生如图所示。生如图所示。

Page 27: 第 8 章  DMA 技术与 DMA 控制器

29

利用页寄存器产生存储器地址

选择 页寄存器

选择 页寄存器

选择 页寄存器

选择 页寄存器

A19~A16

8237 DMAC

DACK3

DACK2

DACK1

DACK0

DMA存储器地址

A19~A16 A15~A0

29

Page 28: 第 8 章  DMA 技术与 DMA 控制器

30

8237A 的工作方式 DMA 传送方式

· 单字节传送方式· 数据块传送方式· 请求传送方式 · 级连方式

DMA 传送类型· DMA 读 · DMA 写 · DMA 检验

存储器到存储器的传送

Page 29: 第 8 章  DMA 技术与 DMA 控制器

31

(1) DMA 传送-单字节方式

每次 DMA 传送时仅传送一个字节 传送一个字节之后,字节数寄存器减 1 ,地址寄存器加 1 或减 1 , HRQ变为无效

8237A释放系统总线,将控制权还给 CPU 若传送后使字节数从 0减到 FFFFH ,则终结 DMA 传

送或重新初始化 特点:

一次传送一个字节,效率略低 DMA 传送之间 CPU 有机会重新获取总线控制权

DMA 传送方式

Page 30: 第 8 章  DMA 技术与 DMA 控制器

32

(2) DMA 传送-数据块方式

由 DREQ启动就连续地传送数据,直到字节数寄存器从 0减到 FFFFH终止计数,或由外部输入有效信号终结 DMA 传送

DREQ只需维持有效到 DACK 有效 特点:

一次请求传送一个数据块,效率高 整个 DMA 传送期间 CPU 长时间无法控制总

线(无法响应其他 DMA 请求、无法处理中断等)

Page 31: 第 8 章  DMA 技术与 DMA 控制器

33

(3) DMA 传送-请求方式

DREQ信号有效就连续传送数据 DREQ信号无效, DMA 传送被暂时中止, 8237A释

放总线, CPU 可继续操作 DMA 通道的地址和字节数的中间值仍被保持 DREQ信号再次有效, DMA 传送就继续进行 如果字节数寄存器从 0减到 FFFFH ,或者由外部送来

一个有效的信号,将终止计数 特点:

DMA 操作可由外设利用 DREQ 信号控制传送的过程

Page 32: 第 8 章  DMA 技术与 DMA 控制器

34

(4) DMA 传送-级连方式

用于通过多个 8237A 级连以扩展通道 第二级的 HRQ和 HLDA 信号连到第一级某个

通道的 DREQ和 DACK上 第二级芯片的优先权等级与所连通道的优先权

相对应 第一级只起优先权网络的作用,实际的操作由

第二级芯片完成 还可由第二级扩展到第三级等

Page 33: 第 8 章  DMA 技术与 DMA 控制器

35

8237A 的级联 ...

...

8237

HLDA

HRQ

HLDA

HRQ

8237

第二级第一级

DACK3DREQ3

DACK0

DREQ0

HLDA

HRQ

HLDA

HOLD

微处理器

Page 34: 第 8 章  DMA 技术与 DMA 控制器

36

DMA 读——把数据由存储器传送到外设 由 MEMR* 有效从存储器读出数据,由 IOW* 有效

把这一数据写入外设 DMA 写——把外设输入的数据写入存储器

由 IOR* 有效从外设输入数据,由 MEMW* 有效把这一数据写入存储器。

DMA检验——空操作 8237A 不进行任何检验 外设可以进行 DMA 校验 存储器和 I/O 控制线保持无效,不进行传送

DMA 传送类型

Page 35: 第 8 章  DMA 技术与 DMA 控制器

37

固定使用通道 0 和通道 1 通道 0 的地址寄存器存源区地址 通道 1 的地址寄存器存目的区地址,通道 1 的字节数寄存器存传送的字节数

传送由设置通道 0 的软件请求启动 每传送一字节需用 8 个时钟周期

前 4 个时钟周期用通道 0 地址寄存器的地址从源区读数据送入 8237A 的临时寄存器

后 4 个时钟周期用通道 1 地址寄存器的地址把临时寄存器中的数据写入目的区

存储器到存储器的传送

Page 36: 第 8 章  DMA 技术与 DMA 控制器

38

8237A 的工作方式由写模式寄存器决定 存放相应通道的方式控制字 选择某个 DMA 通道的工作方式 其中用最低 2位选择哪个 DMA 通道

请看方式字的格式

Page 37: 第 8 章  DMA 技术与 DMA 控制器

39

方式字格式(写 B号)D7 D6 D5 D4 D3 D2 D1 D0

00 请求模式01 单 字 节 模式10 数 据 块 模式11 级联模式

0 地 址增量(加1)1 地 址减量(减1)

0 禁止自动初始化1 允许自动初始化

00 DMA校验01 DMA 写10 DMA 读11 非法×× 若 D7D6= 11

00 通道 0

01 通道 1

10 通道 2

11 通道 3

Page 38: 第 8 章  DMA 技术与 DMA 控制器

40

DMA 控制器 8237

自动预置功能:

D4:当设置为自动预置时,每当 DMA 过程结束信号 EOP*产生时(不论是内部终止计数还是外部输入该信号)用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位、允许 DMA 请求这样就作好了下一次 DMA 传送的准备

40

Page 39: 第 8 章  DMA 技术与 DMA 控制器

41

DMA 控制器 8237

D3 D2:传输方式设定 写输入: I/O 设备往内存写入数据。 读输入; 将内存数据送往 I/O 设备。 校验传输:用于对读传输和写传输功能进行 校验,是虚拟传输, 8237此时只产 生 EOP 信号和地址信号。

41

Page 40: 第 8 章  DMA 技术与 DMA 控制器

42

DMA 控制器 8237

42

8237

存 储

I/O设备

8237

写传输 读传输

存 储

I/O设备

A0~A15

MEMW

IOR

D0~D7

A0~A7

MEMR

IOW

Page 41: 第 8 章  DMA 技术与 DMA 控制器

43

当 8237A没有被外围设备用来进行 DMA操作时,此时它处于所谓空闲状态。在这种状态下,微处理器可以向这个 DMA 控制器输出命令以及读/写它的内部寄存器 。

8.4 827A 的时序

Page 42: 第 8 章  DMA 技术与 DMA 控制器

44

DMA 控制器的工作时序 DMA空闲周期 SI 过渡状态 S0 有效周期( S1 、 S2 、 S3 、 S4)

8237A 内部状态变化流程

Page 43: 第 8 章  DMA 技术与 DMA 控制器

45

8237A 的工作时序·空闲周期 8237A 的任一通道都没有 DMA 请求时 8237A 由微处理器控制作为一个接口芯片 CPU 可对 8237A 编程,或从 8237A 读取状态 8237A 采样 CS*选片信号,该信号有效, CPU就要

对 8237A 进行读 / 写操作 8237A 还采样通道的请求输入信号 DREQ,该信号

有效,就进入有效周期

进入有效周期

Page 44: 第 8 章  DMA 技术与 DMA 控制器

46

8237A 的工作时序·有效周期 8237A 采样到外设有 DMA 请求,就脱离空闲周期进入有效周期

8237A 作为系统的主控芯片,控制 DMA 传送操作

DMA 传送借用系统总线完成,其控制信号以及工作时序类似 CPU 总线周期

进入 DMA 传送时序

Page 45: 第 8 章  DMA 技术与 DMA 控制器

47DMA 传送时序

DB0~ DB7

DACK

ADSTB

HRQ

DREQ

CLK

S1S0S0SiSi S3S2S4S3S2 SiSiS4

HLDA

AEN

A0~ A7

MEMR( IOR)

IOW(MEMW)

Page 46: 第 8 章  DMA 技术与 DMA 控制器

48

a ) S1 周期: DMAC 在 S1 状态发出地址允许 AEN信号,通过数据总线 DB0~DB7 将高 8位地址 A8 ~A15锁存起来。多数情况下,这几位地址不需改变,故可直接进入 S2 周期。

b) S2 周期:①修改存储单元的低 8位地址,(高 8位已锁存)

②向 I/O 发请求回答信号 DACK ,准备 传送数据。c) S3 周期:送高 8位地址 A8 ~A15到地址总线,发出 MEMR或 IOR读命令,从内存或 I/O准备传送数据。

d) S4 周期:发 IOW或 MEMR命令。用普通时序时,每进行一次 DMA 传输,一般用 3 个时钟周期( S2 S3 S4 );压缩时序,用两个时钟周期(S2 S4 ),此时只更新低 8位地址,不修改高 8位地址

48

8237A 的工作周期、时序与模式

Page 47: 第 8 章  DMA 技术与 DMA 控制器

49

8237A 的寄存器

8237A共有 10 种内部寄存器,对它们的操作有时需要配合 3 个软件命令

8237A 的“软件命令” 不需要通过数据总线写入控制字 直接由地址和控制信号译码实现

全部都用地址 A0~ A3 区分

Page 48: 第 8 章  DMA 技术与 DMA 控制器

50

1. 8237A 的控制寄存器 存放 8237A 的命令字 设置 8237A芯片的操作方式 影响每个 DMA 通道 复位时使命令寄存器清零 设置 D2= 0才使 8237A 可以作为 DMA 控制

请看命令字的格式

8.5 8237A 的控制寄存器和状态寄存器

Page 49: 第 8 章  DMA 技术与 DMA 控制器

51

命令字格式D7 D6 D5 D4 D3 D2 D1 D0

0 DACK 低有效1 DACK 高有效

0 DREQ 高有效1 DREQ 低有效

0 滞后写1 扩展写× 若 D3= 1

0 固定优先权1 循环优先权

0 正常时序1 压缩时序× 若 D0= 1

0 允许 DMAC 工作1 禁止 DMAC 工作

0 允许通道 0 地址改变1 禁止通道 0 地址改变× 若 D0= 0

0 禁止存储器之间传送1 允许存储器之间传送

• 8237A 控制 /命令寄存器格式(写 8 号):硬件设置与运行控制8237A硬件设置:

Page 50: 第 8 章  DMA 技术与 DMA 控制器

52

DMA 控制器 8237

控制寄存器格式和有关问题:

52

D7 D6 D5 D4 D3 D2 D1 D0

DO:为 1则为内存到内存的传送。此时通道 0 用于存放源地址,通道 1用于存放目的地址及计数值。

Page 51: 第 8 章  DMA 技术与 DMA 控制器

54

DMA 控制器 8237

D1:为 1 时,可实现内存到内存时,使源 地址不变而目的地址变化,用于实现 内存的初始化。D2:为 0启动 8237 工作, D2 为 1停止 8237 作。D3:为 0普通时序,为 1压缩时序。 当地址范围仅用于 A7~A0 时的 DMA 时 序为压缩时序,即一次可传送最多 256 个数据。

54

Page 52: 第 8 章  DMA 技术与 DMA 控制器

55

DMA 通道的优先权方式 D4=0 固定优先权方式——优先权固定

通道 0 优先权最高,通道 1 其次,通道 2 再次,通道 3 最低

D4=1 循环优先权方式——优先权循环变化 最近一次服务的通道在下次循环中变成最低

优先权,其他通道依次轮流相应的优先权

DMA 传送不存在嵌套

D5:为 0 不扩展写信号;为 1 扩展写信号,使MEMW, IOW扩展 2 个时钟周期。

Page 53: 第 8 章  DMA 技术与 DMA 控制器

56

DMA 控制器 8237

2. 状态寄存器格式:

56

D7 D6 D5 D4 D3 D2 D1 D0

D0 D1 D2 D3:表示 4 个通道计数结束状态 1:结束; 0:未结束  D4 D5 D6 D7:表示 4 个通道 DMA 请求情 况 1:申请; 0:无申请

(读 8 号)

Page 54: 第 8 章  DMA 技术与 DMA 控制器

57

3. 请求寄存器 存放软件 DMA 请求状态 除硬件 DMA 请求外,当工作在数据块传

送方式时也可以通过软件发出 DMA 请求 若是存贮器到存贮器传送,则必须由软件

请求启动通道 0

请看请求字的格式

Page 55: 第 8 章  DMA 技术与 DMA 控制器

58

请求字格式D7 D6 D5 D4 D3 D2 D1 D0

任意 1:有 DMA 请求 0:无 DMA 请求

00 通道 0

01 通道 1

10 通道 2

11 通道 3

8237A DMA 请求寄存器 格式(写 9号) D6: 1: DREQ高电平有效。

Page 56: 第 8 章  DMA 技术与 DMA 控制器

59

屏蔽寄存器

控制外设硬件 DMA 请求是否被响应(为 0 允许),各个通道互相独立。 3 种方法: 单通道屏蔽字只对一个 DMA 通道屏蔽位进行设置 主屏蔽字对 4 个 DMA 通道屏蔽位同时进行设置 清屏蔽寄存器命令使 4 个屏蔽位都清零(允许)

复位使 4 个通道全置于屏蔽状态 当一个通道的 DMA 过程结束,如果不是工作在自动初始化

方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次 DMA 传送

请看屏蔽字的格式

Page 57: 第 8 章  DMA 技术与 DMA 控制器

60

单通道屏蔽字格式D7 D6 D5 D4 D3 D2 D1 D0

任意 0 清屏蔽位1 置屏蔽位 00 通道 0

01 通道 1

10 通道 2

11 通道 3

8237A 屏蔽寄存器格式 (单一位)(写 A号)

Page 58: 第 8 章  DMA 技术与 DMA 控制器

61

主屏蔽字格式D7 D6 D5 D4 D3 D2 D1 D0

任意

Di= 0 清通道 I屏蔽位 Di= 1 置通道 I屏

蔽位

8237A 全 4位 MASK 寄存器 格式 (写 F号)

Page 59: 第 8 章  DMA 技术与 DMA 控制器

62

临时寄存器 在存储器到存储器的传送方式下,临时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元

传送完成,临时寄存器只会保留最后一个字节,可由 CPU 读出

复位使临时寄存器内容为零

Page 60: 第 8 章  DMA 技术与 DMA 控制器

63

4. 8237 的字节指针

(1) 现行地址寄存器

保持 DMA 传送的当前地址值 每次传送后该寄存器的值自动加 1 或减

1 这个寄存器的值可由 CPU 写入和读出

基地址寄存器存放初始值

Page 61: 第 8 章  DMA 技术与 DMA 控制器

64

(2) 现行字节数寄存器

保持 DMA 传送的剩余字节数 每次传送后,该寄存器的值减 1 这个寄存器的值可由 CPU 写入和读出 该寄存器的值减至 0 ,再减 1(从 0减到 FFFFH)时,终止计数

基字节数寄存器存放初始值

传送 N个字节,初始值为 N- 1

Page 62: 第 8 章  DMA 技术与 DMA 控制器

65

读写通道寄存器 CPU 与 8237A 之间通过 8位数据总线交换信息, 8237A 的通道寄存器均为 16位

需要两次读写操作才能实现 CPU 与 8237A 之间的一个完整数据的交换

8237A 内含一个高 / 低触发器,用来控制读写通道寄存器的高、低字节

Page 63: 第 8 章  DMA 技术与 DMA 控制器

66

高 / 低触发器 该触发器为 0 ,控制读写低字节 该触发器为 1 ,控制读写高字节 软、硬件复位后,触发器为 0 每次读写通道寄存器,自动改变触发器状态。如果对 16位寄存器的操作用两次连续读写进行,就不必清除这个触发器

清除高 / 低触发器软件命令( A3A2A1A0= 110

0)将使高 / 低触发器清零

Page 64: 第 8 章  DMA 技术与 DMA 控制器

67

3 个软件命令 清除高 / 低触发器软件命令

A3A2A1A0= 1100=0CH ,使高 / 低触发器清零 主清除命令

A3A2A1A0= 1101=0DH ,使高 / 低触发器清零 还使命令、状态、请求、临时寄存器清零 使屏蔽寄存器置为全 1(禁止 DMA 请求) 主清除命令与硬件的 RESET信号具有相同的功能

清屏蔽寄存器命令 A3A2A1A0= 1110=0EH ,使 4 个屏蔽位都清零(允许 DMA 请求)

Page 65: 第 8 章  DMA 技术与 DMA 控制器

68

内部寄存器的寻址问题

占用 16 个端口地址 问题:如此多的寄存器,采用什么方法只用 16 个端口地址就能访问到?

端口分配表(见下页)

68

Page 66: 第 8 章  DMA 技术与 DMA 控制器

69

8237 内部寄存器的寻址A3 A2 A1 A0 通道号 读操作 (IOR) 写操作( IOW)

0 0 0 0 0 读当前地址寄存器 写基和当前地址寄存器

0 0 0 1 读当前字节计数寄存器 写基和当前字节计数寄存器

0 0 1 0 1 读当前地址寄存器 写基和当前地址寄存器

0 0 1 1 读当前字节计数寄存器 写基和当前字节计数寄存器

0 1 0 0 2 读当前地址寄存器 写基和当前地址寄存器

0 1 0 1 读当前字节计数寄存器 写基和当前字节计数寄存器

0 1 1 0 3 读当前地址寄存器 写基和当前地址寄存器

0 1 1 1 读当前字节计数寄存器 写基和当前字节计数寄存器

1 0 0 0 四个通道公用

读状态寄存器 写命令寄存器

1 0 0 1 -- 写请求寄存器

1 0 1 0 --返回 写屏蔽寄存器某一位

1 0 1 1 -- 写模式寄存器

1 1 0 0 -- 清除高低位触发器命令

1 1 0 1 读暂存寄存器 主清除命令

1 1 1 0 -- --

1 1 1 1 -- 写屏蔽寄存器所有位

Page 67: 第 8 章  DMA 技术与 DMA 控制器

70

8.7 8237 的编程

1. 编程步骤 8237 的编程通常可按如下步骤进行: (1) 输出主清除命令;总清时只要求对总清地址进行写操作

并不关心写入什么数据。 (2) 置页面寄存器; (3) 写入基和当前地址寄存器; (4) 写入基和当前字节计数寄存器; (5) 写入模式寄存器; (6) 写入命令寄存器; (7) 写入屏蔽寄存器; (8) 写入请求寄存器。

70

Page 68: 第 8 章  DMA 技术与 DMA 控制器

71

其中第 (8)步是采用软件 DMA 请求时所需要的,由此可将相应的请求命令字写入指定通道,从而启动DMA 传送过程;

若为硬件 DMA 请求,则无需此步骤,只要在完成了 (1)~ (7)步编程后,由通道的 DREQ信号即可启动 DMA 传送过程。

71

Page 69: 第 8 章  DMA 技术与 DMA 控制器

72

编程举例 在 IBM PC 系统中,试利用 8237 通道 1 ,将

内存 8000H: 0H开始的 16K 字节数据传送至磁盘 ( 地址增量传送 ) 。

要求采用块传送方式,传送完不自动预置, DREQ和 DACK 均为高电平有效,固定优先级,普通时序,不扩展写信号。

系统中 8237 的端口地址为 00H~ 0FH 。 通道 1“页面寄存器”的端口地址为 83H 。

72

Page 70: 第 8 章  DMA 技术与 DMA 控制器

73

1 0 0 0 1 0 0 1

D7 D6 D5 D4 D3 D2 D1 D0

89H

块方式 读传送 通道 1

地址增量 非自动初始化

( 1)确定模式字

73

Page 71: 第 8 章  DMA 技术与 DMA 控制器

74

D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 0 0 0 0

( 2)确定命令字

非存储器至存储器传送

无意义

控制器允许

普通时序

DACK 高电平有效

DREQ 高电平有效

正常写

固定优先级

80H

74

Page 72: 第 8 章  DMA 技术与 DMA 控制器

75

( 3)确定屏蔽字

D7 D6 D5 D4 D3 D2 D1 D0

0 0 0 0 0 0 0 1 01H

通道 1 的屏蔽位复位

75

Page 73: 第 8 章  DMA 技术与 DMA 控制器

76

初始化程序如下: OUT 0DH , AL ; 输出主清除命令 MOV AL, 08H ; 置通道 1“ 页面寄存器” 页面地址为 8 ( A19 ~ A16=08H ) OUT 83H, AL MOV AL , 00H ; 写入基和当前地址低 8 位 OUT 02H , AL MOV AL , 00H ; 写入基和当前地址高 8 位 OUT 02H , AL MOV AL , 00H ; 写入基和当前字节计数寄存器低 8 位 OUT 03H , AL MOV AL , 40H ; 写入基和当前字节计数寄存器高 8 位 OUT 03H , AL MOV AL , 89H ; 输出模式字 OUT 0BH , AL MOV AL , 80H ; 输出命令字 OUT 08H , AL ; 8237 内部寄存器的寻址 MOV AL , 01H ; 输出屏蔽字 OUT 0AH , AL

76

Page 74: 第 8 章  DMA 技术与 DMA 控制器

77

8237A 的编程(续 1)

DMA 通道的 DMA 传送编程: 将存储器起始地址写入地址寄存器(如果采用

地址减量工作,则是结尾地址) 将本次 DMA 传送的数据个数写入字节数寄存

器(个数要减 1) 确定通道的工作方式,写入方式寄存器 写入屏蔽寄存器复位通道屏蔽位,允许 DMA

请求

请看实例

Page 75: 第 8 章  DMA 技术与 DMA 控制器

78

8237A 的编程(续 2)

两种方法反映 DMA 过程结束(即终止计数、发生 TC): 状态寄存器的低 4 位 信号(需配合 DACK 响应信号确定通

道) 应用程序处理 DMA 传送过程结束:

采用软件查询状态字 采用硬件中断在中断服务程序处理

Page 76: 第 8 章  DMA 技术与 DMA 控制器

79

8237A 的应用 8237A 在 PC 系列机的使用情况 DMA 写传送 DMA 设定子程序

Page 77: 第 8 章  DMA 技术与 DMA 控制器

80

8237A 在 IBM PC 系列机上的应用

IBM PC/XT机使用一片 8237A 通道 0 :动态存贮器 DRAM 刷新 通道 1 :用户使用或 SDLC 卡 通道 2 :内存与软盘的高速数据交换 通道 3 :内存与硬盘的高速数据交换

IBM PC/AT机采用两片 8237A DMAC1 包含通道 0 ~ 3 ,支持 8 位数据传

送 DMAC2 组成通道 4 ~ 7 ,通道 5 ~ 7 支持

16 位数据传送,通道 4 用于级连

Page 78: 第 8 章  DMA 技术与 DMA 控制器

81

(1) 8237A 的初始化 8237A初始化写入命令字为 0 ,确定了:

DREQ 高电平有效、 DACK 低电平有效,固定优先权(依次为通道 0 、 1……7 )

不进行存储器到存储器的数据传输 PC 机用 DMA 控制电路进行刷新,所以 DMA 传送

不能长时间占用总线(不应超过 15s ),一般只能使用单字节传送方式

在 PC 系列机上,用户如果使用 DMA 通道,要注意遵从上述系统要求。除了要禁止 8237A 工作,用户通常不必操作命令寄存器

Page 79: 第 8 章  DMA 技术与 DMA 控制器

82

(2) 高位地址的形成 DMA 传送时的高位地址由“页面寄存器”提供 页面寄存器由 CPU 的输出指令实现写入 DMAC1 的通道 0~通道 3: 8237A 提供系统 A0~ A1

5 低 16位地址,页面寄存器输出系统 A16~ A23 高 8位地址

DMAC2 的通道 5~通道 7: 8237A 提供系统 A1~ A16 的 16位地址,而系统 A0被强迫为逻辑 0 ,页面寄存器仅输出高 7位地址 A17~ A23

页面寄存器不会自动增减量高位地址在 DMA 传送过程中不改变

Page 80: 第 8 章  DMA 技术与 DMA 控制器

83

DMA通道 0的刷新编程 out 0dh,al ;DMAC 主清除命令

mov al,0out 08,al ;DMAC命令字mov al,0out 00,al ; 通道 0 的地址寄存器低字节out 00,al ; 通道 0 的地址寄存器高字节mov al,0ffhout 01,al ; 通道 0 的字节数寄存器低字节out 01,al ; 通道 0 的字节数寄存器高字节mov al,58h

out 0bh,al ; 通道 0 模式字mov al,0out 0ah,al ; 通道 0屏蔽字

IBM PC/XT

Page 81: 第 8 章  DMA 技术与 DMA 控制器

84

通道 1工作方式mov al,45h ; 通道 1 方式字:; 单字节写传送,地址增量,非自动初始化out 0bh,alnop ;延时nopout 0ch,al ;清高 / 低触发器命令

DMA写传送

Page 82: 第 8 章  DMA 技术与 DMA 控制器

85

通道 1起始地址mov al,0out 02h,al ; 写入低 8位地址到地址寄存器mov al,50hout 02h,al ; 写入中 8位地址到地址寄存器mov al,04hout 83h,al ; 写入高 8位地址到页面寄存器

DMA写传送

Page 83: 第 8 章  DMA 技术与 DMA 控制器

86

通道 1传送字节数mov ax,2048-1 ;AX← 传送字节数减 1out 03h,al ; 送字节数低 8位到字节数寄存器mov al,ahout 03h,al ; 送字节数高 8位到字节数寄存器mov al,01out 0ah,al; 单通道屏蔽字:允许通道 1 的 DMA 请求…… ; 其他工作

DMA写传送

Page 84: 第 8 章  DMA 技术与 DMA 控制器

87

通道 1传送结束判断dmalp: in al,08h ; 读状态寄存器

and al,02h ; 判断通道 1 是否传送结束

jz dmalp ;没有结束,则循环等待…… ; 传送结束,处理转换数

DMA写传送

DMA 传送过程结束的判断:软件查询方式

Page 85: 第 8 章  DMA 技术与 DMA 控制器

88

8237A教学要求

1. 了解 8237A 引脚特点和工作时序2. 掌握 8237A 的各种工作方式3. 理解 8237A 内部寄存器的作用和编程4. 了解 8237A 在 IBM PC 系列机上的应用情况

Page 86: 第 8 章  DMA 技术与 DMA 控制器

89

多功能 I/O 接口芯片 82380

82380 内部功能体系结构

Page 87: 第 8 章  DMA 技术与 DMA 控制器

90

DMA 控制器

8 通道,每个有一个 24位字节计数寄存器、一个 32位请求地址寄存器和一个32位目标地址寄存器。可通过编程选择为循环优先级或固定优先级。

可以在 I/0 设备之间、存储器之间、存储器和 I/O 设备之间进行传送。

Page 88: 第 8 章  DMA 技术与 DMA 控制器

91

传送数据块有 3 种方式:

( 1)单一缓冲方式

( 2)缓冲器自动初始化方式

( 3)缓冲器链接方式

DMA 控制器

Page 89: 第 8 章  DMA 技术与 DMA 控制器

92

可编程中断控制器

5 个内部中断请求:

( 1) IRQ8 , IRQ0;

( 2) IRQ1 和 IRQ4;

( 3) IRQ1.5 。

15 个外部中断请求: IRQ3 , IRQ9, IRQ11~IRQ23 。

IRQ7:容错处理中断

中断控制器: IRR、 PR、 ISR、IMR、 VR。

Page 90: 第 8 章  DMA 技术与 DMA 控制器

93

可编程定时 / 计数器