第九章 DMA控制接口

2019-01-07  本文已影响0人  XiaoShanHsj

9.1 DMA控制器8237A

每个8237A芯片有四个独立的DMA通道,每个通道具有不同的优先权,每个通道有4种工作方式,一次可传送的最大数据可达64KB。8237A可以级联

9.1.1 8237A的内部结构和引脚

内部结构主要由两类寄存器组成,一类是通道寄存器,另一类是控制和状态寄存器

1.请求和响应信号

这组信号接受和响应外设DMA请求,同时向处理器提出总线请求并接受总线响应。

DREQ0~DREQ3——DMA通道请求

HRQ总线请求

HLDA总线响应

DACK0~DACK3——DMA通道响应

2.DMA传送控制信号

在DMA传送期间,这组信号控制系统总线

A0~A7地址线——三态输出线,输出低八位存储器地址

DB0~DB7数据线,输出高八位存储器地址

ADSTB地址选通,将高8位地址锁存在外部锁存器中

AEN地址允许,将锁存的高8位地址送入系统总线,与芯片此时输出的低8位地址组成16位存储器地址

EOP结束信号

3.处理器接口信号

8237A不作为主控芯片进行DMA传送时,它接受微处理器的控制

DB0~DB7用于数据交换

A0~A3地址线,低四位输入地址线,用于选择芯片内部寄存器

\overline{IOR},CPU利用它读取8237A内部寄存器

表9-1

9.1.2 8237A的工作时序

1.空闲时期

此时,8237A由微处理器控制作为一个接口芯片,在每一个时钟周期都采样通道的请求输入线DREQ

2.有效时期

(1)当在Si的下降沿检测到有DREQ请求时,则在下一个周期就进入S0状态,并且在Si的上升沿,使HRQ信号为高。当在S0的上升沿采样到HLDA信号有效,就进入S1状态

(2)典型的DMA传送由S1,S2,S3,S4组成。S1使地址允许AEN信号有效

(3)在S2时期,8237A向外设输出DMA响应信号DACK。8237A不提供I/O地址,在地址线上的总是存储器地址,请求DMA传送的外设需要利用DMA相应信号进行译码以确定外设数据缓冲器。

(4)S3和S4状态完成数据传送。若S4前不能完成传送,则要使READY信号线变低,插入Sw状态

(5)如果是数据块传送,则在S4之后直接进入S2继续传送,因为连续地址高八位是不变的,直到终止计数

9.1.3 8237A的工作方式

1.DMA传送方式

(1)单字节传送方式

一次传送一个字节,效率略低,但它会保证在两次DMA传送之间,CPU有机会重新获得总线控制权,执行一个CPU总线周期

(2)数据块传送方式

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

(3)请求传送方式

DREQ信号有效,8237A连续传送数据,DMA通道的地址和字节数的中间值保持在相应的现行地址和现行字节数寄存器中。

特点是DMA操作可有外设利用DREQ信号控制传送的过程

(4)级联方式

第一级只起优先权网络的作用,实际操作由第二级芯片完成。

2.DMA传送类型

(1)DMA读,把存储器的数据传送到外设

(2)DMA写,把外设数据传送到存储器

(3)DMA检验,空操作。

3.存储器到存储器的传送

通道0存源地址,通道1的地址寄存器存目的地址,字节数寄存器存传送字节数,每传送一个字节需要8个时钟周期。

4.DMA通道的优先权方式

DMA传送不存在嵌套,也不能被抢占

(1)固定优先权方式,优先权从高到低依次为0,1,2,3

(2)循环优先权方式

5.自动初始化方式

每当DMA结束过程\overline{EOP}信号产生时,使现行寄存器恢复初值,包括恢复屏蔽位、允许DMA请求。

9.1.4 8237A的寄存器

1.现行地址寄存器,保持DMA传送的当前地址值。可由CPU写入和读出。

2.现行字节数寄存器,保持DMA传送的剩余字节数。当从0减到FFFFH时,终止计数。

3.基地址寄存器,存放着与现行地址寄存器相联系的初始值。不能被读出

4.基字节数寄存器。传送N个字节应该写入N-1。8237A内部的高/低触发器,触发器为0,则操作的是低字节,为1操作的是高字节。每进行一次操作,触发器会自动改变状态。

5.模式寄存器,存放相应通道的方式控制字    图9-3

6.命令寄存器     图9-4

7.请求寄存器,存放软件DMA请求状态。请求字格式    图9-5

8.屏蔽寄存器

(1)单通道屏蔽字A3A2A1A0=1010,只屏蔽一个

(2)主屏蔽字A3A2A1A0=1111,对4个通道屏蔽位同时进行设置

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

图9-6

9.状态寄存器

低四位反映是否产生TC,高四位反应是否有请求

图9-7

10.临时寄存器,用于存储器到存储器的数据传送

9.1.5 8237A的编程

1.8237A芯片的初始化编程:只要写入命令寄存器。必要时可以先输出主清除命令

2.DMA通道的DMA传送编程。(1)将存储器起始地址写入地址寄存器(2)将本次DMA传送的数据个数写入字节数寄存器(个数要减1)(3)确定通道的工作方式,写入方式寄存器(4)写入屏蔽寄存器让通道屏蔽位复位,允许DMA请求。

上一篇 下一篇

猜你喜欢

热点阅读