文档库 最新最全的文档下载
当前位置:文档库 › 实验二、DMA特性及8237应用实验

实验二、DMA特性及8237应用实验

实验二、DMA特性及8237应用实验
实验二、DMA特性及8237应用实验

实验二、DMA特性及8237应用实验

一、实验目的

1.掌握8237DMA控制器的工作原理。

2.了解DMA特性及8237的几种数据传输方式。

3.掌握8237的应用编程。

二、实验设备

PC机一台,TD—PITE实验装置或TD-PITC实验装置一套。

三、实验原理及内容

直接存储器访问(Direct Memory Access,简称DMA),是指外部设备不经过CPU的干涉,直接实现对存储器的访问。DMA传送方式可用来实现存储器到存储器、存储器到I/O接口、I/O接口到存储器之间的高速数据传送。

1.8237芯片介绍

8237是一种高性能可编程DMA控制器,

芯片有4个独立的DMA通道,可用来实现存储

器到存储器、存储器到I/o接口、I/O接口

到存储器之间的高速数据传送。8237的各通

道均具有相应的地址、字数、方式、命令、请

求、屏蔽、状态和暂存寄存器,通过对它们的

编程,可实现8237初始化,以确定DMA控制

的工作类型、传输类型、优先级控制、传输定

时控制及工作状态等。8237的外部引脚如图

4。17所示。

8237的内部寄存器分为两类:

4个通道共用的寄存器。包括命令、方式、

状态、请求、屏蔽和暂存寄存器。4个通道专

用的寄存器。包括地址寄存器(基地址及当前

地址寄存器)和字节计数器(基本字节计数器

和当前字节计数器)。

8237的内部结构图如图4.18所示。

寄存器格式如图4.19~图4.23所示。

表4.2列出了8237内部寄存器和软命令及其操作信息。

2.DMA实验单元电路图

3.实验内容

将存储器1000H单元开始的连续10个字节的数据复制到地址0000H开始的10个单元中,实现8237的存储器到存储器传输。实验参考线路图如图4.25所示。

实验系统中提供了MYO和MYl两个存储器译码信号,译码空间分别为800000H~9FFFFH 和AOOOOH~AFFFFH。在做DMA实验时,CPU会让出总线控制权,而8237的寻址空间仅为0000H~FFFFH,8237无法寻址到MYO的译码空间,故系统中将高位地址线A19~A17连接到固定电平上,在CPU让出总线控制权时,MYO会变为低电平,即DMA访问期间,MYO有效。具体如下图所示。

实验程序清单(A8237.ASM)

STACK SEGMENT STACK

DW 64 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV AL,OOH

MOV DX,061AH

OUT DX,AL ;总清命令

AAl: MOV AL,OOH

MOV DX,0600H ;通道O(Source),存放需要复制的地址,由于接线中A0对

;应于XA1,因此地址向前移一位,相当于乘2。故实际地址

;为2000H。可修改为2000H,则对应4000H的地址,想查看

;复制结果,在相应地址中修改即可。

OUT DX,AL

MOV AL,1OH

OUT DX,AL

MOV AL,OOH

MOV DX,0604H ;通道l(Dest),存放需要复制到的目的地址,也可以根据需

;要修改相应地址

OUT DX,AL

MOV AL,OOH

OUT DX,AL

MOV AL,OAH

MOV DX,0602H ;传输字节个数为0AH=10D,共可以复制修改11个数,可以

;根据需要修改可传输字节个数

OUT DX,AL

MOV AL,OOH

OUT DX,AL

MOV AL,OAH

MOV DX,0606H ;传输字节个数

OUT DX,AL

MOV AL,OOH

OUT DX,AL

MOV AL,88H

MOV Dx,0616H ;通道O方式字

OUT DX,AL

MOV AL,85H ;通道l方式字

OUT DX,AL

MOV AL,81H

MOV DX,0610H ;命令字

OUT DX,AL

MOV AL,04H

MOV Dx,0612H ;请求字

OUT DX,AL

MOV AL,OOH

MOV Dx,061EH ;屏蔽字

OUT DX,AL

MOV AX,4COOH

INT 21H ;程序终止

CODE ENDS

END START

四、实验步骤

1.实验接线图如图4.25所示,按图连接实验线路。

2.根据实验要求,参考流程图4.26编写实验程序。

3.编译、链接程序无误后,将目标代码装入系统。

4.初始化首地址中的数据,通过E8000:2000命令来改变。(注:思考为何通道中送入的首地址值为1000H,而CPU初始化时的首地址为2000H。)

答:由于接线中A0对应于XA1,因此地址向前移一位,相当于乘2。若更改为3000H,则实际地址是6000H。

5.运行程序,待程序运行停止。

6.通过DS000:0000命令查看DMA传输结果,是否与首地址中写入的数据相同,可反复验证。

7.自己思考DMA的其它的传输方式,设计实验进行验证。

五、实验截图

1.通道0地址为1000H时,将传输字节个数改为0BH(即12个)用E命令修改8000:2000H 中的内容,再用D命令显示8000:0000H中的内容:

2.将通道0的地址改为2000H,即对应于8000:4000H,下图为修改前8000:0000H的内

容:

3. 将通道0的地址改为2000H后,修改8000:4000H的内容:

4. 将通道0的地址改为2000H后,8000:0000H的内容变化如图:

六、实验心得

通过此次实验,我对8237芯片的功能和工作原理,工作过程有了更深刻的认识;通过用D和E命令显示和修改地址中的内容,进一步复习了Debug的相关知识。

相关文档