微机原理 第10章 DMA控制器8237A 习题及参考

微机原理 第10章 DMA控制器8237A 习题及参考
微机原理 第10章 DMA控制器8237A 习题及参考

第十章DMA控制器8237A

1.试说明在DMA方式下,传输单个数据的全过程。

答:内存往外设传输单个数据:

(1)当一个接口准备就绪,要进行DMA传输时,该接口往DMA 控制器发一个DMA请求;

(2)DMA控制器采样到DRED有效电平后,若屏蔽寄存器是开放的,便往控制总线上发一个总线保持请求;

(3)若CPU允许让出总线,则发回一个总线保持允许信号;(4)DMA控制器接到此信号后,就将其内部地址寄存器的内容送到地址总线上;

(5)同时,DMA控制器往接口发一个DMA回答信号,并发出一个内存读信号和一个I/O写信号;

(6)接口收到DMA回答信号后,撤除DMA请求信号,且内存把数据送到数据总线上;

(7)接口锁存数据总线上的数据后,一般往DMA控制器回送一个准备好信号;

(8)DMA控制器的地址寄存器内容加1或减1,字节计数器的值减1;

(9)DMA控制器撤除总线保持请求信号,CPU收回总线控制权。这样,就完成了对一个数据的DMA输出过程。

外设往内存传输单个数据的过程:

(1)当一个接口中有数据要输入时,就往DMA控制器发一个DMA 请求信号;

(2)DMA控制器接到DMA请求后,(若屏蔽触发器是开放的)便往控制总线上发一个总线保持请求信号;

(3)若CPU允许让出总线,则发回一个总线保持允许信号;(4)DMA控制器接到此信号后,就将其内部地址寄存器的内容送到

地址总线上;

(5)同时,DMA控制器往接口发一个DMA回答信号,并发一个I /O读信号和一个内存写信号;

(6)接口收到DMA回答信号后,撤除DMA请求信号,并将数据送到数据总线上;

(7)内存在收到数据后,一般往DMA控制器回送一个准备好信号;(8)DMA控制器的地址寄存器内容加1或减1,字节计数器的值减1;

(9)DMA控制器撤除总线保持请求信号,CPU收回总线控制权。这样,就完成了对一个数据的DMA输入过程。

2.为使DMA控制器正常工作,系统对DMA控制器进行初始化的过程分为哪两个主要方面?

答:

(1) 将数据传输缓冲区的起始地址或结束地址送到地址寄存器中;

(2) 将传输的字节数或字数送到计数器中。

3.8237A什么时候作为主模块工作?什么时候作为从模块工作?在这两种情况下,各控制信号处于什么状态?

答:当DMA控制器得到总线控制权,可以控制系统总线时,便成为总线主模块;当DMA控制器接受CPU对它的读写操作时,便成了总线从模块。

作总线主模块时:它会往总线上提供要访问的内存地址,地址的低八位放在A0 ~ A7上,地址的高八位放在DB0~DB7上,此时,AEN信号为有效的高电平,存储器读和I/O写有效,或者存储器写和I/O读有效。

作总线从模块时:8237A接收16位地址,用较高的12位地址产生片选信号,据此判断本片是否被选中,用低4位地址来选择内部寄存器。片选信号为有效的低电平,HRQ和AEN都为无效的低电平,I/O读

与I/O写不同时有效。

4.8237A有哪几种工作方式?

答:单字节传输模式、块传输模式、请求传输模式、级联传输模式。

5.什么是DMA控制器的自动预置功能?

答:指的是这样一种功能:在计数值到达0时,当前地址寄存器和当前字节计数器会分别从基本地址寄存器和基本字节计数器中重新取得新值,从而进入下一个数据传输过程。

6.用8237A进行内存到内存的传输时,有什么特点?

答:为实现把一个数据块从内存的一个区域传到另一个区域,就要把源区的数据先送到8237A的暂存器中,然后再送到目的区。

特点:

(1)每次内存到内存的传输要用到两个总线周期;

(2)源地址寄存器的值可以通过对控制寄存器的设置而保持恒定,这样,就可以使同一数据传输到整个内存目的区域;

(3)在操作过程中,由于暂存器用来存放被传输的数据,所以在整个传输完成后,如果CPU对暂存器进行读取,则只可读得所传输的最后一个字节。

7.8237A是怎样进行优先权管理的?

答:一片8237A有四个通道,可以分别连接四个I/O设备,这样,就需要解决优先级管理问题,8237A有两种优先级管理方法:

①固定优先级方式——在这种方式下,通道0的优先级最高,通道1的优先级次之,通道3的优先级最低。

②循环优先级方式——在这种方式下,通道的优先级依次循环。通过对优先级进行循环,可以防止某通道垄断总线的情况发生。

8.8237A的单字节传输模式是怎样工作的?

答:8237A每完成一个字节传输后,内部字节计数器便减1,地址寄存器的值加1或减1,接着,8237A释放系统总线,并在释放总线后,立即对DREQ端进行测试,一旦DREQ回到有效电平,则8237A又会立即发总线请求,在获得总线控制权后,又成为总线主模块控制进行DMA传输。

9.块传输模式与请求传输模式有什么相同和不同?

答:

相同:块传输模式与请求传输模式都可以连续进行多个字节的传输,只有当字节计数器减为0,从而在EOP端输出一个负脉冲,或者外部I/O接口往DMA控制器的EOP端送一低电平信号,从而强迫8237A结束DMA传输时,8237A才释放总线而结束DMA传输。

不同:请求传输模式只是在每传输一个字节后,都对DREQ端进行测试,若测试到DREQ端变为无效电平,则马上暂停传输,但测试过程仍然进行,当DREQ端又变成有效电平时,就在原来的基础上继续传输。

10. 按要求编写8237A的初始化程序段:设8237A的端口地址为0000~000FH。将四个通道的地址寄存器值均设为FFFFH。使通道0工作在单字节传输模式,写传输类型,地址加1变化,允许自动预置功能;使通道1、2、3都工作在单字节传输模式,读传输类型,地址减1变化,无自动预置功能。使DREQ为低电平有效,DACK为高电平有效,采用固定优先级管理方法,并启动8237A工作。

答:设,用标号DMA代表DMA控制器端口的首地址0000H。

MOV AL, 04H

MOV DX, DMA+08H ;关闭8237A

OUT DX, AL

MOV AL, 00

MOV DX, DMA+0DH ;发主清命令

OUT DX, AL

MOV DX, DMA

MOV CX, 0004

WRITE: MOV AL, 0FFH

OUT DX, AL

OUT DX, AL ;使4个通道的地址寄存器内容均为FFFFH INC DX

INC DX

LOOP WRITE

MOV DX, DMA+0BH

MOV AL, 54H ;对通道0的模式字设置OUT DX, AL

MOV AL, 69H ;对通道1的模式字设置OUT DX, AL

MOV AL, 6AH ;对通道2的模式字设置OUT DX, AL

MOV AL, 6BH ;对通道3的模式字设置OUT DX, AL

MOV AL, 0

MOV DX, DMA+0EH ;去除通道0~通道3的屏蔽OUT DX, AL

MOV DX, DMA+08H

MOV AL, 0C0H ;启动8237A工作OUT DX, AL

相关主题
相关文档
最新文档