0%

ch9DMA8237

DMA8237

内存与外设之间的数据传输控制方式

程序控制方式

中断方式

[以上方式都需要CPU执行程序来控制数据传输;]

  • 中断过程需要额外的保护断点、标志操作;
  • 中断响应和中断返回时,都要清除指令队列,重新装入程序;

DMA方式

[外设和存储器之间直接进行数据传输,不经过CPU。]

  • DMA过程中,DMAC能独立控制三大总线来访问存储器和I/O端口,

    像CPU一样提供数据传送所需的地址信息和读写控制信息==>存储器

    -DMAC内部有地址寄存器和字节计数器

DMA

DMA操作过程三个阶段

  1. DMA请求;
    • 外设要求以DMA方式为它服务时,==DMA请求信号DREQ==>DMAC
    • DMAC检查该信号是否被屏蔽及其优先权,if 该信号有效则
    • DMAC===发送总线请求信号HRQ==>CPU的HOLD
  2. DMA响应和数据传送;
    • DMAC接管总线===DACK信号==>外设,使之成为DMA传送时被选中的设备
    • DMAC==内存地址以及I/O读写和存储器读写控制信号==>存储器
    • 在外设和存储器之间数据传送
  3. 传送结束;
    • DMAC放弃总线,撤消总线请求(HRQ==0),
    • CPU检测到HRQ(HOLD)==0后,HLDA==0,
    • CPU重新获得总线控制权

8237地址

一片8237占用连续16个端口地址,用DMA+00H~DMA+0FH表示。其中,DMA表示该片8237的基地址。

在AT以上的微机中,使用2片8237,其地址为:

第一片8237,基地址DMA=0000H,使用0000H~000F I/O地址。

第二片8237,基地址DMA=00C0H,使用00C0H~00CF I/O地址

8237-addr

传输模式:

单字节传输模式

  • 每次DMA操作只传送一字节,接着8237释放总线;

块传输模式

  • 8237获得总线控制权后,连续传送多个字节,每传输一个字节,当前字节计数器减1当前地址寄存器加1或1,直到所要求的字节数传输完(当前字节计数器减至0),8237在EOP引脚上发出结束信号,然后释放总线

请求传输模式

  • 在传输过程中,8237要检测DREQ信号(询问外设),当DREQ==0时,8237暂停传输(不释放总线),当DREQ再次==1后,继续进行传输。

级联传输模式

  • 多片8237级联时,可以构成主从式DMA系统。级联的方式是把从片的请求线HRQ==>主片的DREQ引脚,主DACK==>从片的HLDA引脚

8237寄存器

8237-reg

8237的初始化编程

1.输出主清除命令

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

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

4.写入方式寄存器

5.写入屏蔽寄存器

6.写入控制寄存器

7.写入请求寄存器

若有软件请求,就写入指定通道,便可以开始DMA传送的过程。

若无软件请求,由通道的DREQ启动DMA传送过程

eg. 若要利用通道0,由外设(磁盘)输入32KB的一个数据块,传送至内存8000H开始的区域(增量传送),

采用数据块连续传送的方式,传送完不自动初始化,

外设的DREQ和DACK都为高电平有效。要编程首先要确定端口地址。

地址的低4位以区分8237A的内部寄存器,高4位地址A7~A4,经译码后,连至选片端CS#,假定选中时高4位为7

solution:依据要求,

  1. 方式控制字为84H;

    mode

  2. 屏蔽寄存器的单屏蔽字为00H;

    pinbi

  3. 命令字0A0H

    control

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
OUT		7DH,AL		 ;输出主清除命令:对端口0DH写入0,使8237复位,70+DH=>复位寄存器
MOV AL, 00H
OUT 70H, AL;输出基地址和现行地址低8位,70+0H=>基地址 reg 0
MOV AL, 80H
OUT 70H, AL;输出基地址和现行地址高8位

MOV AL, 00H
OUT 71H, AL ;70+1H=>基字节 counter
MOV AL, 80H
OUT 71H, AL;给基字节数和现行字节数
;寄存器赋值为32768
MOV AL, 84H
OUT 7BH, AL ;输出方式字,70+BH=>mode reg
MOV AL, 00H
OUT 7AH, AL ;输出屏蔽字,70+AH=>屏蔽 reg
MOV AL, 0A0H
OUT 78H, AL ;输出命令字 , 70+8H=> control reg

1.简述DMA数据传送方式过程、特点和优点。

2.在DMA方式数据传输过程中,是由DMAC控制总线。

3.CPU与外设之间的数据传送控制方式有哪三种?