《实验二DMA特性及8237应用实验.doc》由会员分享,可在线阅读,更多相关《实验二DMA特性及8237应用实验.doc(8页珍藏版)》请在三一办公上搜索。
1、实验二、DMA特性与8237应用实验一、实验目的 1掌握8237DMA控制器的工作原理。 2了解DMA特性与8237的几种数据传输方式。 3掌握8237的应用编程。二、实验设备 PC机一台,TDPITE实验装置或TD-PITC实验装置一套。三、实验原理与内容直接存储器访问(Direct Memory Access,简称DMA),是指外部设备不经过CPU的干预,直接实现对存储器的访问。DMA传送方式可用来实现存储器到存储器、存储器到I/O接口、I/O接口到存储器之间的高速数据传送。18237芯片介绍8237是一种高性能可编程DMA控制器,芯片有4个独立的DMA通道,可用来实现存储器到存储器、存储
2、器到Io接口、IO接口到存储器之间的高速数据传送。8237的各通道均具有相应的地址、字数、方式、命令、请求、屏蔽、状态和暂存存放器,通过对它们的编程,可实现8237初始化,以确定DMA控制的工作类型、传输类型、优先级控制、传输定时控制与工作状态等。8237的外部引脚如图4。17所示。 8237的内部存放器分为两类: 4个通道共用的存放器。包括命令、方式、状态、请求、屏蔽和暂存存放器。4个通道专用的存放器。包括地址存放器(基地址与当前地址存放器)和字节计数器(根本字节计数器和当前字节计数器)。8237的内部结构图如图418所示。存放器格式如图419图423所示。表42列出了8237内部存放器和软
3、命令与其操作信息。2.DMA实验单元电路图3.实验内容 将存储器1000H单元开始的连续10个字节的数据复制到地址0000H开始的10个单元中,实现8237的存储器到存储器传输。实验参考线路图如图425所示。实验系统中提供了MYO和MYl两个存储器译码信号,译码空间分别为800000H9FFFFH和AOOOOHAFFFFH。在做DMA实验时,CPU会让出总线控制权,而8237的寻址空间仅为0000HFFFFH,8237无法寻址到MYO的译码空间,故系统中将高位地址线A19A17连接到固定电平上,在CPU让出总线控制权时,MYO会变为低电平,即DMA访问期间,MYO有效。具体如如下图所示。 实验
4、程序清单(A8237ASM)STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: 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,ALMO
5、V AL,OOHMOV DX,0604H ;通道l(Dest), 存放需要复制到的目的地址,也可以根据需;要修改相应地址OUT DX,ALMOV AL,OOHOUT DX,ALMOV AL,OAHMOV DX,0602H ;传输字节个数为0AH=10D,共可以复制修改11个数,可以;根据需要修改可传输字节个数OUT DX,ALMOV AL,OOHOUT DX,ALMOV AL,OAHMOV DX,0606H ;传输字节个数OUT DX,ALMOV AL,OOHOUT DX,ALMOV AL,88HMOV Dx,0616H ;通道O方式字OUT DX,ALMOV AL,85H ;通道l方式字OU
6、T DX,ALMOV AL,81HMOV DX,0610H ;命令字OUT DX,ALMOV AL,04H MOV Dx,0612H ;请求字OUT DX,ALMOV AL,OOHMOV Dx,061EH ;屏蔽字OUT DX,ALMOV AX,4COOHINT 21H ;程序终止CODE ENDS END START四、实验步骤1实验接线图如图425所示,按图连接实验线路。2根据实验要求,参考流程图426编写实验程序。3编译、程序无误后,将目标代码装入系统。4初始化首地址中的数据,通过E8000:2000命令来改变。(注:思考为何通道中送入的首地址值为1000H,而CPU初始化时的首地址为2
7、000H。)答:由于接线中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的相关知识。