DMA的应用举例(电子信息).pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DMA的应用举例 DMA的应用举例 1.8237A在系统中的典型连接 我们注意到8237A只能输出A0~A15共16位地址信号,这对于一般8位CPU构成的系统来说是比较方便的,因为大多数8位机的寻址范围就是64KB。而在8086/8088系统中,系统的寻址范围是1MB,地址线有20条,即A0~A19。为了能够在8086/8088系统中使用8237A来实现DMA,需要用硬件提供一组4位的页寄存器。 通道0、1、2、3各有一个4位的页寄存器。在进行DMA传送之前,这些页寄存器可利用I/O地址来装入和读出。当进行DMA传送时,DMAC将A0~A15放在系统总线上,同时页寄存器把A16~A19也放在系统总线上,形成A0~A19这20位地址信号实现DMA传送。其地址产生如图所示。 图是8237A在PC机中的连接简图。利用74LS138译码器产生8237A的CS,8237A的接口地址可定为000H~00FH (注:在CS译码时XA4未用)。 8237A利用页寄存器74LS670、三态锁存器74LS373和三态741S244形成系统总线的地址信号A0~A19。8237的IOR、IOW、MEMR、MEMW接到74LS245上,当芯片8237A空闲时,CPU可对其编程,加控制信号到8237A。而在DMA工作周期,8237A的控制信号又会形成系统总线的控制信号。 2. 8237A应用举例 (1)用8237A实现存储器到存储器传输8237A与80x86处理器相连时,使用地址锁存器作为地址锁存。假设将内存地址00000H~13FFFH的内容传输到14000H~17FFFH中,用DMA控制传输。其控制程序如下,其中CX寄存器为计数,SI、DI分别作为源、目的寄存器,ES段寄存器为数据地址。 LATCHB EQU 10H CLEAR_F EQU 7CH CH0_A EQU 70H CH1_A EQU 72H CH1_C EQU 73H MODE EQU 7BH CMMD EQU 78H MASKS EQU 7FH REQ EQU 79H STATUS EQU 78H TRANS PROC FAR USE AX MOV AX,ES MOV AL,AH SHR AL,4 OUT LATCHB,AL OUT CLEAR_F,AL MOV AX,ES SHL AX,4 ADD AX,SI OUT CH0_A,AL MOV AL,AH OUT CH0_A,AL MOV AX,ES SHL AX,4 ADD AX,DI OUT CH1_A,AL MOV AX,CX DEC AX OUT CH1_C,AL MOV AL,AH OUT CH1_C,AL MOV AL,88H OUT MODE,AL MOV AL,85H OUT MODE,AL MOV AL,1 OUT CMMD,AL MOV AL,0EH OUT MASKS,AL MOV AL,4 OUT REQ,AL REPEAT IN AL,STATUS RET TRANS ENDP 在存储器到存储器传输的DMA编程控制中,先将地址送地址锁存器,然后清除先/后触发器,接着再对DMA通道作初始编程。通道0作为源、通道1作为目的,传输字计数器值减“1”后装入字计数寄存器。然后,对每一个通道的屏蔽寄存器编程,命令寄存器选择块传输,通道0被使用,DMA请求软件初始化。在过程返回前,还要对状态寄存器测试是否已计数结束,以防止再传输其他的数据。另外,在程序中使用了MASM6.0的重复执行语句REPEAT-UNTIL。 (2)编程举例 若要利用通道0,由外设(磁盘)输入32KB的一个数据块,传送至内存8000H开始的区域(增量传送),采用块连传送的方式,传送完不自动初始化,外设的DREQ和DACK都为高电平有效。 要编程首先要确定端口地址。地址的低四位用以区分8237A的内部寄存器,高四位地址A7~A4经译后,连至选片端CS,假定选中时高4位为5。 方式控制字  2) 屏蔽控制字 3) 命令字 初始化程序如下: OUT 5DH,AL ;输出主清除命令 MOV AL,00H OUT 50H,AL ;输出基和现行地址的低8位 MOV AL ,80H OUT 50H,AL ;输出基和现行地址的高8位 MOV AL,00H OUT 51H,AL MOV AL,80H O

文档评论(0)

151****7975 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档