微型计算系统原理及应用第五版(7章DMA).ppt

微型计算系统原理及应用第五版(7章DMA).ppt

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

高/低触发器 该触发器为0,控制读写低字节 该触发器为1,控制读写高字节 软、硬件复位后,触发器为0 每次读写通道寄存器,自动改变触发器状态。如果对16位寄存器的操作用两次连续读写进行,就不必清除这个触发器 清除高/低触发器软件命令(A3A2A1A0=1100)将使高/低触发器清零 3个软件命令 清除高/低触发器软件命令 A3A2A1A0 =1100,使高/低触发器清零 主清除命令 A3A2A1A0=1101,使高/低触发器清零 还使命令、状态、请求、临时寄存器清零 使屏蔽寄存器置为全1(禁止DMA请求) 主清除命令与硬件的RESET信号具有相同的功能 清屏蔽寄存器命令 A3A2A1A0=1110,使4个屏蔽位都清零(允许DMA请求) 5. 模式寄存器 存放相应通道的方式控制字 选择某个DMA通道的工作方式 其中用最低2位选择哪个DMA通道 请看方式字的格式 方式字格式 D7 D6 D5 D4 D3 D2 D1 D0 00 请求模式 01 单字节模式 10 数据块模式 11 级联模式 0 地址增量(加1) 1 地址减量(减1) 0 禁止自动初始化 1 允许自动初始化 00 DMA校验 01 DMA写 10 DMA读 11 非法 ×× 若D7D6=11 00 通道0 01 通道1 10 通道2 11 通道3 6. 命令寄存器 存放8237A的命令字 设置8237A芯片的操作方式 影响每个DMA通道 复位时使命令寄存器清零 设置D2=0才使8237A可以作为DMA控制器 请看命令字的格式 命令字格式 D7 D6 D5 D4 D3 D2 D1 D0 0 DACK低有效 1 DACK高有效 0 DREQ高有效 1 DREQ低有效 0 滞后写 1 扩展写 × 若D3=1 0 固定优先权 1 循环优先权 0 正常时序 1 压缩时序 × 若D0=1 0 允许DMAC工作 1 禁止DMAC工作 0 允许通道0地址改变 1 禁止通道0地址改变 × 若D0=0 0 禁止存储器之间传送 1 允许存储器之间传送 7. 请求寄存器 存放软件DMA请求状态 除硬件DMA请求外,当工作在数据块传送方式时也可以通过软件发出DMA请求 若是存储器到存储器传送,则必须由软件请求启动通道0 请看请求字的格式 请求字格式 D7 D6 D5 D4 D3 D2 D1 D0 任意 0 复位 1 置位 00 通道0 01 通道1 10 通道2 11 通道3 8. 屏蔽寄存器 控制外设硬件DMA请求是否被响应(为0允许),各个通道互相独立。3种方法: 单通道屏蔽字只对一个DMA通道屏蔽位进行设置 主屏蔽字对4个DMA通道屏蔽位同时进行设置 清屏蔽寄存器命令使4个屏蔽位都清零(允许) 复位使4个通道全置于屏蔽状态 当一个通道的DMA过程结束,如果不是工作在自动初始化方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次DMA传送 请看屏蔽字的格式 单通道屏蔽字格式 D7 D6 D5 D4 D3 D2 D1 D0 任意 0 清屏蔽位 1 置屏蔽位 00 通道0 01 通道1 10 通道2 11 通道3 主屏蔽字格式 D7 D6 D5 D4 D3 D2 D1 D0 任意 Di=0 清通道I屏蔽位Di=1 置通道I屏蔽位 9. 状态寄存器 可由CPU读取 低4位反映读命令这个瞬间每个通道是否产生TC(为1,表示该通道传送结束) 高4位反映每个通道的DMA请求情况(为1,表示该通道有请求) 状态位在复位或被读出后,均被清零 10. 临时寄存器 在存储器到存储器的传送方式下,临时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元 传送完成,临时寄存器只会保留最后一个字节,可由CPU读出 复位使临时寄存器内容为零 8237结构图(只画出了一个通道) 8237结构图(只画出了一个通道) 7.5.5 8237A的编程 8327A芯片的初始化编程:只要写入命令寄存器 可先输出主清除命令,进行软件复位 然后写入命令字 命令字影响所有4个通道的操作 7.5.5 8237A的编程(续1) DMA通道的DMA传送编程: 将存储器起始地址写入地址寄存器(如果采用地址减量工作,则是结尾地址) 将本次DMA传送的数据个数写入字节数寄存器(个数要减1) 确定通道的工作方式,写入方式寄存器 写入屏蔽寄存器复位通道屏蔽位,允许DMA请求 请看实例 DMA通道0的刷新编程 out 0dh,al ;DMAC主清除命令 mov al,0 out 08,al ;DMAC命令字: mov al,0 out 00,al ;通道0的地址寄存器低字节 out 00,al ;通道0的地址寄存器高字节 mov al,0ffh out 01,

文档评论(0)

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

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

1亿VIP精品文档

相关文档