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

第8章 DMA控制器内容DMA控制器的编程结构;DMA控制器的作为主模块和从模块时的差别8237A的工作模式;8237A的时序;结合例子了解8237A的编程方法。DMAC在系统中CPU系统总线DMAC存储器设备接口DMAC在系统中(从)CPU系统总线存储器设备接口DMACDMAC在系统中(主)CPU系统总线存储器设备接口DMAC DMA控制器一般结构8237A原理4个通道控制寄存器状态寄存器每个通道模式寄存器16位地址寄存器16位数据字节计数器引脚?DMA工作时(输入)DMACAB(A0-3, A4-7,DB0-7)MEMORYMEMW*DBIOR*外设接口每次传输一个字节字节计数器-1地址寄存器+1/-1直到计数器减到0,DMA结束设备(磁盘驱动器)DMA工作时(输出)DMACAB(A0-3, A4-7,DB0-7)MEMORYMEMR*DBIOW*外设接口每次传输一个字节字节计数器-1地址寄存器+1/-1直到计数器减到0,DMA结束设备(磁盘驱动器)8237A工作从模块A3-A0:内部寄存器CS*IOR*, IOW*AEN=0DB7~0:数据总线主模块输出地址低位:A7-A0高位:DB7-DB0AEN=1IOR*, IOW*, MEMR*, MEMW*(输出)工作模式字单字节传输模式块传输模式请求传输模式级联传输模式1/4 单字节传输模式特点传输一个字节字节计数器-1地址寄存器+1/-18237A放弃总线,CPU得到总线2/4 块传输模式连续多个字节传输计数器减到0,EOP*输出08237A放弃总线3/4 请求传输模式与块传输类似每传输一个字节,测试DREQ如果DREQ无效,停止传输,测试继续进行4/4 级联传输方式级联的说明最多5个8237级联最多16个DMA通道一个主8237,4个从8237关于地址增减选择memory地址增每传输一个字节,地址计数器+1,指向存储器的下一个地址地址减每传输一个字节,地址计数器-1,指向下一个存储器地址DMA缓冲区SI(空闲状态)8237作为从模块测试DREQ测试CS*S0:总线请求状态DREQ有效HREQ有效CPU还未响应DMA请求S0重复多次,直到CPU响应总线请求S1:CPU响应总线请求,(DMAC)锁存高8位地址ADSTBDB0~7输出A8~A15注意:需要修改A15~A8时,才有S1状态,否则直接进入S2状态S2:CPU响应总线请求,DMAC修改存储器的低16位地址DMAC送出16位地址DB0~7输出A8~A15A0~A7输出低8位地址Sw,如果外设速度慢传输数据?S3:CPU响应总线请求,(DMAC)更新地址普通时序用到S3(送A15..8)压缩时序直接进入S4(送A7..0)普通时序 S2,S3,S4压缩时序 S2,S4S4:CPU响应总线请求模式测试,如 不是块传输模式,且不是请求传输模式,进入S2Sw:等待状态如果外部设备比较慢,在S2之后插入等待状态8.5控制寄存器-内容1.控制储存器-(1)存储器到存储器的传输通道0的地址寄存器存放源地址通道1,地址寄存器,计数器存储器中进行数据块的拷贝源方法1 程序实现:节省硬件,思考:如何实现?2 DMA方式:速度快源数据-暂存寄存器暂存寄存器-目的存储器每传输一个字节需要两个总线周期暂存器的地址传输目的(4)关于扩展写信号的功能外部设备快-压缩时序,S2,S4外部设备慢-普通时序,S2,S3,S4外部设备更慢-通过ready信号插入Sw状态有些设备,加宽IOW*, IOR*信号,并使其提前到来2. 状态寄存器的格式请求标志DMA请求产生的方式硬件方式DREQ软件方式设置请求标志:DMA请求寄存器3.DMA请求寄存器和屏蔽寄存器请求寄存器DMA的屏蔽使用屏蔽寄存器 屏蔽标志:屏蔽单个通道综合屏蔽命令:一次可屏蔽多个通道DMA屏蔽寄存器(单屏蔽寄存器)综合屏蔽命令(全局屏蔽寄存器)复位命令复位硬件复位软件复位:向复位端口写0MOV AL,0MOV DX, BASE+0DH ;复位端口地址OUT DX,AL6. 8237A各寄存器对应的端口地址可写的寄存器:8个,每个寄存器对应一个唯一的地址可读的寄存器:2个,每个寄存器对应一个唯一的地址访问地址寄存器和字节计数器时A3=0先后触发器(即字节指针)先后触发器(字节指针)的用途8237A数据线8位,地址寄存器和字节计数器16位方法先后触发器(字节指针)=0CPU先设置寄存器低8位,先后触发器变成1CPU设置寄存器高8位,先后触发器变成0为了确保正确操作,设置地址寄存器和字节计数器时,先清除先后触发器。例子:设置字节计数器步骤清除先后触发器(字节指针)设置计数器低8位设置计数器高8位;下面的程序段设置通道0的字节计数器MOV AL,0MOV DX,BASE+0CH ;先后触发器(字节指针

文档评论(0)

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

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

1亿VIP精品文档

相关文档