实验二、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 ; OUT DX,AL MOV AL,1OH OUT DX,AL MOV AL,OOH MOV DX,0604H ; OUT DX,AL MOV AL,OOH OUT DX,AL MOV AL,OAH
MOV DX,0602H ; 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 ; OUT DX,AL
MOV AL,85H ; OUT DX,AL MOV AL,81H
MOV DX,0610H ; OUT DX,AL MOV AL,04H
MOV Dx,0612H ; OUT DX,AL
大全
通道O(Source),存放需要复制的地址,由于接线中A0对
;应于XA1,因此地址向前移一位,相当于乘2。故实际地址 ;为2000H。可修改为2000H,则对应4000H的地址,想查看 ;复制结果,在相应地址中修改即可。
通道l(Dest), 存放需要复制到的目的地址,也可以根据需要修改相应地址
传输字节个数为0AH=10D,共可以复制修改11个数,可以
;根据需要修改可传输字节个数
传输字节个数 通道O方式字 通道l方式字 命令字 请求字
;标准文案
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的相关知识。
大全
因篇幅问题不能全部显示,请点此查看更多更全内容