第8章 可编程DMA控制器8237A课件.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 可编程DMA控制器8237A课件

2. 8237A的传送类型 8237A主要完成三种不同的传送: (1)I/O接口到存储器的传送 (2)存储器到I/O接口的传送 (3)存储器到存储器的传送 3. 8237A的优先级处理 8237A有两种优先级方案可供编程选择: (1)固定优先级:规定每个通道的优先级是固定的,即通道0的优先级最高,依次降低,通道3的优先级最低。 (2)循环优先级:规定刚被服务的通道的优先级为最低,依次循环。这样,就可以保证4个通道都有机会被服务。若3个通道已被服务,则剩下的通道一定是优先级最高的。 4. 8237A的传送速率 一般情况下,8237A进行一次DMA传送需要4个时钟周期(不包括插入的等待周期)。例如,PC机的时钟周期约为210ns,则一次DMA传送需要210 ns×4+210 ns=1050 ns,多加一个210 ns是考虑到认为插入一个等待周期的缘故。 另外,8237A为了提高传输速率,可以在压缩定时状态下工作。在压缩定时下,每一个DMA总线周期仅用2个时钟周期来实现,从而大大地提高了传送速率。 2. 8237A内部寄存器 (1)当前地址寄存器 (2)当前字节计数寄存器 (3)基地址寄存器 (4)基字节计数寄存器 (5)工作方式寄存器 (6)命令寄存器 (7)状态寄存器 (8) 请求寄存器 (9)屏蔽寄存器 (10)暂存寄存器 (11)软件命令 【例8.1】已知某系统采用一片8237A来设计DMA传输电路,给定8237A的基地址为00H。利用通道0从磁盘将一个1K字节的数据块传送到内存06000H开始的区域中,每传送一个字节,地址增1,采用数据块连续传送方式,禁止自动预置,外设的DMA请求信号DREQ和响应信号DACK均为高电平有效。 对8237A的初始化程序如下: DMA EQU 00H OUT DMA+0DH,AL MOV AX,6000H OUT DMA+00H,AL MOV AL,AH OUT DMA+00H,AL MOV AX,0400H DEC AX OUT DMA+01H,AL MOV AL,AH OUT DMA+01H,AL 写入方式字:数据块传送,地址增量,禁止自动预置,写传送,选择通道 MOV AL OUT DMA+0BH,AL 写入屏蔽字:通道0屏蔽位清0 MOV AL,00H OUT DMA+0AH,AL 写入命令字:DACK和DREQ为高电平,固定优先级,非存储器间传送 MOV AL OUT DMA+08H,AL 写入请求字:通道0产生请求,用软件启动8237A MOV AL,04H OUT DMA+09H,AL 对8237A的初始化及测试程序如下。 初始化程序段: MOV AL, 04 ;4个DMA请求信号 MOV DX, DMA+8 ;DMA+8为控制寄存器的端口号 OUT DX, AL ;输出控制命令,关闭8237A MOV AL, 00 MOV DX, DMA+0DH ;DMA+0DH为主清除命令端口号 OUT DX, AL ;发送主清除命令 MOV DX, DMA ;DMA为通道0的地址寄存器对应端口号 MOV CX,0004 MOV AL, 0FFH OUT DX, AL ;写入地址低位 OUT DX, AL ;写入地址高位 INC DX INC DX ;指向下一通道 LOOP WRITE ;使4个通道地址寄存器均为FFFFH MOV DX, DMA+0BH ;DMA+0BH为模式寄存器的端口 MOV AL,58H OUT DX, AL MOV AL, 42H OUT DX, AL ;设置通道2模式 MOV AL, 43H OUT DX, AL ;设置通道3模式 MOV DX, DMA+8 ;DMA+8为控制寄存器的端口号 MOV AL, 0 OUT DX, AL MOV DX, DMA+0AH ;DMA+0AH为屏蔽寄存器的端口号 OUT DX, AL ;通道0去除屏蔽 MOV AL, 01 OUT DX, AL ;通道2去除屏蔽 MOV AL, 01 OUT DX, AL ;通道1去除屏蔽 MOV AL, 03 OUT DX, AL ;通道3去除屏蔽 对通道1~3的地址寄存器的值进行测试: MOV DX, DMA+2 ;DMA+2为通道1地址寄存器端口 MOV CX, 0003 READ:IN AL, DX ;读字节

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档