第 6 章 输入 / 输出

25
第 6 第 第第 / 第第 6.3 第第第 DMA 第第第 8237DMAC 8237A 第第第第第 1 第第第第第 DMA 第第2 第第 第第第第 )一 DMA 第第第第第第第第第第第第3 第第 第第第 )一 DMA 第第第第第第第第4 第第 第第第 第第 第第第第第第第第 一一传 64K 第第5 第第第第第第第第 第第第第第第第第第第 第第 第第 ),、 6 第第第第第第第第 (1) 第第第 第第第第 (2) 第第第 第第第第 (3) 第第 第第第第 (4) 第第第第 第第第第第第第第第 ,。 DACK 0 DACK 1 V cc 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 READY 22 RESET 21 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 HLDA CS MEMR EOP DB 4 DB 3 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 CLK GND 8237 DACK 2 DACK 3 DB 2 DB 1 DB 0 DB 5 DB 6 DB 7 DREQ 2 DREQ 3 DREQ 1 DREQ 0 HRQ ADSTB AEN MEMW IOR IOW Note1

Upload: elsa

Post on 19-Jan-2016

107 views

Category:

Documents


0 download

DESCRIPTION

第 6 章 输入 / 输出. 40. 1. A 7. IOR. IOW. A 6. 39. 2. 38. 3. A 5. A 4. 37. 4. 36. Note1. 5. EOP. READY. A 3. 35. 6. A 2. 34. HLDA. 7. MEMR. MEMW. A 1. 33. 8. ADSTB. AEN. 32. 9. A 0. HRQ. V cc. 31. 10. CS. 8237. 30. 11. DB 0. CLK. 29. 12. DB 1. 28. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237A 的主要功能

1 )四个独立的 DMA 通道。2 )每一个通道的 DMA 请求都可以分别允许和禁止。3 )每一通道的 DMA 请求有优先级管理。4 )每一通道一次传送的最大长度可达 64K字节。5 )可在存储器与外设,存储器与存储器之间、进行传送。6 )有以下四种方式

(1) 单字节传送方式;(2) 数据块传送方式;(3) 请求传送方式;

(4) 级连方式,可任意扩展通道数。

DACK0

DACK1

Vcc

403938373635343332313029282726252423

READY

22

RESET

21

1234567891011121314151617181920

HLDA

CS

MEMR

EOP

DB4

DB3

A7

A6

A5

A4

A3

A2

A1

A0

CLK

GND

8237

DACK2

DACK3

DB2

DB1

DB0

DB5

DB6

DB7

DREQ2

DREQ3

DREQ1

DREQ0

HRQ

ADSTB AEN

MEMW

IORIOW

Note1

Page 2: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 与 CPU 的接口 从控制器件: 8237 是 8086 的一个外围接口

A0~A3 :输入的地址,寻址内部寄存器

DB0~DB7 :数据输入缓冲,接受 CPU 的命令。

CLK :时钟输入,确定 8237 的工作速率

A0~A3

DB0~DB7

IOR

IOW

CS译码

IORC

IOWC

A1~A4

D0~A7

8086CPU

8237

CLKCLK

片选信号,输入,低电平有效。由高位地址码( A4—A15 )译码得到对 8237 的片选信号。主控状态时,被自动禁止为无效。

CS :

为输入线, CPU 向 8237 发出的读命令。

IOR :

为输入线, CPU 向 8237 发出的写命令,通道写入控制字或通道数据。 IOW :

Page 3: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

主控制器件:

A0~A3 :输出低 4 位地址 A0~A3

DB0~DB7 :输出 A8~A16 高位地址,(由 ADSTB 选通进行锁存)存贮器到存贮器传

送的数据缓冲器。

A4~A7 : DMA 周期中通过这四条经输出的是 16 位存贮器地址的 A4~A7 位。

ADSTB:地址选通信号,输出,高电平有效。 经 DB0~DB7 将高 8 位地址锁存在外

部锁存器中。后经锁存器输出到地址总线的高 8 位( A8~A15 )AEN :

地址充许输出信号,高电平有效。使锁存器中锁存的高 8 位地址送到地址总线。使 CPU 的地址锁存器无效,封锁 CPU 总线的控制。

•8237 的 DMA 接口

Page 4: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

主控制器件:•8237 的 DMA 接口

读写存储器控制信号,三态输出,低电平有效。MEMW MEMR :

当 MEMR 有效时,IOW 必然有效。

存贮器向外部设备传送数据

当 有效时,IOR 必然有效。MEMW

外部设备向存贮器的传送数据

为输出线, 8237 向外部设备发出的读命令,可读取外部设备中的数据。IOR :

为输出线, 8237 向外部设备发出的写命令,可向外部设备写入数据。 IOW :

Page 5: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

主控制器件:

READY:准备好信号,输入,高电平有效。若存贮器或外部设备来不及完成读 / 写

操 作,可使 READY 无效, 8237 产生一个等待周期,直到 READY 有效为止。 RESET :

复位信号,输入,高电平有效。清除所有寄存器的内容,控制线浮空,禁止 DMA 操作,复位后,必须重新初始化。

CS :当 8237 处于主控状态时,被自动禁止为无效。

•8237 的 DMA 接口

DMA 过程结束 8237 复位。低电平有效,双向。输入:低电平强迫 8237 结束 DMA 操作。输出:低电平作为 DMA 传送结束的标志。

EOP :

Page 6: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

DREQ0~DREQ3

DMA 请求线,编程决定输入电平的极性。必须保到 DACK 应答为止。请求传送方式下必须保持到 DMA 传送结束。DACK0~DACK3

DMA 响应线(应答信号线)由编程决定输入电平的极性。当 CPU 发出总线充许信号(如 HLDA )后,输出到外设表示 DMA 操作开始。

•优先级编码和循环优先级逻辑

HRQ ( Hold Reguest )

总线请求信号,向 CPU 输出,高电平有效。当任一通道收到外部设备的DMA 请求时, 8237 立即向 CPU 发出 HRQ ,表示要求使用总线。

HLDA ( Hold Acknowledge )

总线响应信号,由 CPU 输入到 8237 ,高电平有效。

Page 7: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的 DMA 接口

DACK0

REA

DY

HLDA

MEM

R

…………

DACK3DREQ3 DREQ0

HRQ

AD

ST

BAE

N MEM

W

IOR

IOW

主存 I/O0

8086CPU

8237DMAC

地址锁存及控制逻辑

HLDAHOLD

CLK CLK

I/O3

DB

AB

CB

……

地址锁存及控制逻辑

Page 8: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237DMA 操作时序 SI :空闲周期,当 8237 处于无效状态时,由多个 SI 组成,直到 HRQ 有效。S0 : 8237DMA 的首个周期, HRQ 有效后产生,连续的 S0 周期直到 HLDA 有效。S1 、 S2 、 S3 、 S4 :有效周期。

S1 、表示进入 DMA 传送正常时序:

S2 产生 16 位有效地址。S3 、 S4 完成数据读写操作。

压缩时序:S2 产生 16 位有效地址。S4 完成数据读写操作。

SW :等待周期。当 READY=0 时在 S3 、 S4 之间插入。 •8237DMA 传送类型 三种基本操作: DMA 读、 DMA 写、 DMA 校验

DMA 读: =0 、 =0 完成存贮器到 I/O 的传送。DMA 写: =0 、 =0 完成 I/O 到存贮器传送。校验:伪操作,用于校验 8237 的内部功能,并不产生任何具体的 DMA

读、写操作。

MEMR IOW

MEMW IOR

Page 9: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•四种特殊传送操作存贮器到存贮器:

只适用通道 0 为源 , 通道 1 目的之间的从存贮器的一块到另一块的快速数据传送。要用 8 个有效状态, 4 个有效状态通道 0 读、 4 个有效状态通道 1 写。

自运预置传送:基地址、基字计数寄存器的内容自动装入当前地址、当前字计数寄存器中

从而进入下一次的 DMA 操作。无需 CPU 进行预置。

循环优先:四个通道处于平等状态,进行循环优先级管理。

压缩时序:正常时序由三个 S2 、 S3 、 S4 完成数据传送而在压缩时序下只有 S2 、 S4

二个时序就可以完成数据传送。

Page 10: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 命令 REG. 8 HRQ 数据 .Temp.8 计数 Temp. 16

状态 REG. 8 地址暂存器 16HLDA

方式 REG.6REQ

请求FLAG

屏蔽MASK

FLAG

当前地址 ..REG. 16基地址 REG. 16

可读非读

当前字节计数器 .16基字节数 REG.16

通道 0

通道 1

通道 2

通道 3

HOLD

HLDACLOCK

AEN关闭 CPU 地址

EN#

STB

锁存器

ADSTB

DB7 :DB0

IO / M

CS#

ADDR.

译 码

DATA SUB

A15~A8

A7~A0

地址总线

A3~A0

A7~A4

READY

RESET

DREQ0

DACK0

DREQ1

DACK1

DREQ2

DREQ3

DACK2

DACK3

EOP

IOR

MEMR

IOW

MEMW

四通道共用:( 1 )命令寄存器( 2 )状态寄存器( 3 )字计数暂存器( 4 )地址暂存器( 5 )数据暂存器

Page 11: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 四通道共用:( 1 )命令寄存器( 8 位) 存放操作方式, CPU预置操作命令。

D7 D6 D5 D4 D3 D2 D1 D0

0: 禁止存储器到存储器传送1: 存储器到存储器传送0: 禁止通道 0 地址保存1: 允许通道 0 地址保存X: 当 D0=0 时可任意

0:启动 8237 工作1:停止 8237 工作

0: 正常时序1: 压缩时序X: 当 D0=1 时可任意0:固定优先级1: 循环优先级0:滞后写入选择1: 扩展写入选择X: 当 D0=0 时可任意0:DREQ 信号高电平有效1: DREQ 信号低电平有效0:DACK 信号低电平有效1: DACK 信号高电平有效

Page 12: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 四通道共用:( 2 )状态寄存器 (8 位 )存放各通道是否终止( =0 )和请求( DREQ=1 )是否有效的状态。

D7 D6 D5 D4 D3 D2 D1 D0

1: 通道 0终止计数1: 通道 1终止计数1: 通道 2终止计数1: 通道 3终止计数

1: 通道 0 请求有效1: 通道 1 请求有效1: 通道 2 请求有效1: 通道 3 请求有效

Page 13: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 四通道共用:( 3 )字计数暂存器

暂存每次 DMA 操作需要传送的数据字节总数值。 ( 4 )地址暂存器( 16 位)

操作时完成当前地址寄存器和当前计数寄存器内容的修改。 CPU 不能访问。

( 5 )数据暂存器 (8 位 )用于存放存储器到存储器传送方式中 ,暂时存放从源地址存储

器读出的数据。

Page 14: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 命令 REG. 8 HRQ 数据 .Temp.8 计数 Temp. 16

状态 REG. 8 地址暂存器 16HLDA

方式 REG.6REQ

请求FLAG

屏蔽MASK

FLAG

当前地址 ..REG. 16基地址 REG. 16

可读非读

当前字节计数器 .16基字节数 REG.16

通道 0

通道 1

通道 2

通道 3

HOLD

HLDACLOCK

AEN关闭 CPU 地址

EN#

STB

锁存器

ADSTB

DB7 :DB0

IO / M

CS#

ADDR.

译 码

DATA SUB

A15~A8

A7~A0

地址总线

A3~A0

A7~A4

READY

RESET

DREQ0

DACK0

DREQ1

DACK1

DREQ2

DREQ3

DACK2

DACK3

EOP

IOR

MEMR

IOW

MEMW

各通道专用:( 1 )基址寄存器( 2 )当前地址寄存器( 3 )基字计数寄存器( 4 )当前字计数寄存器( 5 )方式寄存器( 6 )请求寄存器( 7 )屏蔽寄存器

Page 15: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 各通道专用:( 1 )基址寄存器

保存 DMA 传送的起始地址值。初始化编程由 CPU 来预置 16 位地址值。不 能读出。在自动预置方式下,在有效时,自动装入当前地址寄存器。 ( 2 )当前地址寄存器

保存 DMA 传送时存储单元的地址值或者存储器的当前地址值。每传送一个 字节的数据,其内容自动加 1 或减 1 。初值是基地址寄存器的内容,由 CPU 同时写人,共用一个 I/ 0 地址。在编程状态下, CPU 可以分二次读/写该 寄存器的内容。在自动预置方式下,在有效时,将基地址寄存器的内容自动装入。 ( 3 )基字计数寄存器

存放每次 DMA 操作需要传送的数据字节总数值, CPU 预置,不能读出。

EOP 变为低电平。

( 4 )当前字计数寄存器

表示操作过程中还需要传送的数据字节数。每传送一个字节,其内容减 1, 直到该寄存器的内容由 OOOOH减为 FFFFH 时,产生终止计数信号,使

Page 16: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 各通道专用:( 5 )方式寄存器

保存 DMA 的传送方式和传送类型。 CPU 设置。 D7 D6 D5 D4 D3 D2 D1 D0

自动预置功能选择0: 禁止 1: 允许

传送类型选择00: 校验,空操作01: 写传送, I/O 到M10: 读传送, M 到 /IO11: 无效

通道选择00: 通道 001: 通道 110: 通道 211: 通道 3

方式选择00: 请求方式01: 单字节方式10: 数据块方式11: 级联方式

地址增减选择0:递增 1:递减

Page 17: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 各通道专用:( 6 )请求寄存器

产生软件控制下产生 DMA 请求,代替硬件 DREQ 信号,每个通道 1 位。只有在数据块传送下使用,在存储器到存储器的传送必须用软件请求启动通道 0。

D7 D6 D5 D4 D3 D2 D1 D0

通道选择00: 通道 001: 通道 110: 通道 211: 通道 3

请求触发器置位 / 复位0: 复位 1: 置位

无定义

Page 18: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 的内部寄存器结构 各通道专用:( 7 )屏蔽寄存器

软件控制每个通道的 DMA 请求是否有效,每个通道 1 位。屏蔽触发器置位,禁止该通道的 DMA 请求。

D7 D6 D5 D4 D3 D2 D1 D0

无定义

屏蔽0: 清屏蔽 1: 置屏蔽

通道屏蔽通道 0通道 1通道 2通道 3

Page 19: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 编程步骤 1. 输出主清除命令

命令不需要通过数据总线写入控制字,而是通过 8237A 直接对地址和控制信号译码,来 执行各自的功能。主清除命令该命令与硬件的 RESET 信号有相同的功能,它使控制、状态、请求、暂存等寄存器以及内部先/后触发器清零,使 8237A 进入空闲周期,以便进行编程。

2. 写入基与现地址寄存器

3. 写入基与现字节寄存器

4. 写入模式寄存器

5. 写入屏蔽寄存器

6. 写入控制寄存器

7. 写入请求寄存器

Page 20: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 编程步骤 例 ,

通道 0 由外设写入 32K 字节块,传送内存起始地址 8000H ,增量传送,块传送。非自动初始化,外设 DREQ 和 DACK 高电有效。方式字: 10 0 0 01 00数据块,地址增量,非自动初始化,写传送,通道 0

D7 D6 D5 D4 D3 D2 D1 D0

方式选择00: 请求方式01: 单字节方式10: 数据块方式11: 级联方式

通道选择00: 通道 001: 通道 110: 通道 211: 通道 3

传送类型选择00: 校验传01: 写传送10: 读传送

11: 无效自动预置功能选择0: 禁止 1: 允许

地址增减选择0:递增 1:递减

Page 21: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 编程步骤 例 ,屏蔽字:0000 0000 D7 D6 D5 D4 D3 D2 D1 D0

通道屏蔽通道 0通道 1通道 2通道 3

屏蔽0: 清屏蔽 1: 置屏蔽

无定义

Page 22: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 编程步骤 例 ,

命令字:1 0 1 0 0 0 0 0

DACK 高电平DREQ 高电平扩展写固定优先权正常时序允许工作D0=0 任意非存贮器到存贮器

D7 D6 D5 D4 D3 D2 D1 D0

0: 禁止存储器到存储器传送1: 允许存储器到存储器传送

0: 禁止通道 0 地址保存1: 允许通道 0 地址保存X: 当 D0=0 时可任意0: 允许芯片工作1: 禁止芯片工作0: 正常时序1: 压缩时序X: 当 D0=1 时可任意0:固定优先级1: 循环优先级0:滞后写入选择1: 扩展写入选择X: 当 D0=0 时可任意0:DREQ 信号高电平有效1: DREQ 信号低电平有效0:DACK 信号低电平有效1: DACK 信号高电平有效

Page 23: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 编程步骤

OUT 5DH , AL ;主清命令MOV AL , 00HOUT 50H , AL ;写基与现地址低 8 位MOV AL , 80HOUT 50H , AL ;写基与现地址高 8 位MOV AL , 00HOUT 51H , AL ;写基与现字节计数低 8 位MOV AL , 80HOUT 51H , AL ;写基与现字节计数高 8 位MOV AL , 84H ;方式字OUT 5BH , ALMOV AL , 00H ;屏蔽字OUT 5AH , ALMOV AL , 0A0H ;命令字OUT 58H , AL

例 ,

设 8237 片选有效的高位地址为 05H 而低 4 位由 A0~A3 决定( P252 表 6-3 )

幻灯片 24

Page 24: 第 6 章 输入 / 输出

第 6 章 输入 / 输出6.3 可编程 DMA 控制器 8237DMAC

•8237 编程步骤

0 0 通道号 0 1 0 写入地址寄存器CS A3 A2 A1 A0 IOR IOW 操作对象

0 0 通道号 0 0 1 读当前地址寄存器0 0 通道号 1 1 0 写入计数寄存器0 0 通道号 1 0 1 读当前计数寄存器0 1 0 0 0 0 1 读状态寄存器0 1 0 0 0 1 0 写命令寄存器0 1 0 0 1 1 0 写请求寄存器0 1 0 1 0 1 0 写单个屏蔽寄存器0 1 0 1 1 1 0 写方式寄存器0 1 0 0 1 1 0 清除先 / 后触发器0 1 1 0 1 0 1 读数据暂存器0 1 1 0 1 1 0 主复位0 1 1 1 0 1 0 清屏蔽寄存器0 1 1 1 1 1 0 写全屏蔽寄存器位 返回

Page 25: 第 6 章 输入 / 输出

课后作业:P260

• 6.8(2秒钟延时可不考虑其时间准确性 )

• 6.9