- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DMA技术专题讲座
第4章、DMA技术; 第四章 DMA技术;背景:程序控制方式和中断方式都需CPU的干预。对于高速、大批量的数据传输,若由CPU一条一条执行指令来完成数据交换,效率低下。
原理:DMA(Direct Memory Access,直接内存传输)方式下,通过专用接口,让存储器与高速外设之间直接交换数据,而无需CPU的干预;并且内存地址的修改、传送开始和结束控制都由硬件电路实现,大大提高了传输速度。
特点:用硬件控制代替软件控制。实现硬件控制的器件称为DMA控制器(DMAC)。它是DMA传输的核心器件。应用场合:高速、大批量的数据传输。; DMA控制器2种工作状态
被动工作状态:CPU对DMAC进行控制和指挥。例如:向DMAC写入内存传送区的首地址、传送字节数和控制字。此时,DMAC相当于一个外设接口,称为总线从模块或受控器。
主动工作状态:进行DMA传输时,DMAC取代CPU,获得总线控制权,成为总线的主控者,向存储器和外设发信号。此时,DMAC称为总线主模块或主控器。; DMA的传送过程;当外设有DMA需求且准备就绪,向DMAC发出DMA请求信号DREQ。
DMAC收到DMA请求后,通过CPU的HOLD引脚向CPU发出总线请求信号HRQ。
CPU收到总线请求后,若允许DMA传输,则会在当前总线周期结束后发出DMA响应信号HLDA。
CPU释放总线控制权(三组总线置高阻态);
CPU向DMAC发HLDA信号,通知DMAC,CPU已释放了总线控制权。;DMAC获得总线的控制权,向外设发DMAC的应答信号DACK,通知外设可以开始进行DMA传输。
DMAC送出地址和控制信号,进行外设与内存间的数据传输。
数据传输完毕后,DMAC通过CPU的HOLD引脚发出撤销总线请求信号。CPU收到该信号后,使HLDA无效,同时收回对总线的控制权。;单字节传送方式
每传送完一个字节数据,DMA控制器放弃总线控制权。传送下一个字节时,再重新申请使用总线。
特点:DMA控制器不会长时间占用总线。CPU可在每个DMA周期结束后立即控制总线。CPU与DMA控制器轮流控制系统总线,因此不会对系统运行产生较大影响。
缺点:DMA传输效率低。;允许 DMA;数据块传输方式
DMA控制器获得总线控制权后,可连续传输多个字节。只有当字节全部传送完毕,或被外部强制停止,它才释放总线控制权。
优点:传输效率高。
缺点:DMA传输期??CPU长时间不能控制总线,若一次传输的数据较多,会对系统产生影响。;11;请求传输方式
类似数据块传输方式。不同之处在于:每传输一个字节后,DMA控制器对外设的DMA请求信号DREQ进行测试;若DREQ无效,则停止DMA传输,归还总线控制权。
优点:实现灵活,DMA操作可由外设利用DREQ信号控制发送过程。;允许DMA;级联传输方式
将多个DMAC连在一起,一个为主,其余为从。从片收到外设的DMA请求后,不是向CPU申请总线,而是向主片申请,再由主片向CPU申请。;DMA读:把数据由存储器传送到外设。
DMA写:把外设输入的数据写入存储器。
存储器到存储器:实现内存区域到内存区域的读写。
DMA校验:不进行数据传送,而是对数据块内部的每个字节进行校验。; 内容概要;8237A是一款可编程的通用DMA控制器,可实现内存到外设、外设到内存、内存到内存的高速传输,最高传输速率可达1.6MB/s。
8237A具有4个独立通道,可通过级联方式进行扩充。最多可扩展4个从片,共16个DMA通道。每个通道一次可传输的最大数据块为64KB。; (1) 8237A 内部结构;8237A包含4个DMA通道和一个公共控制部分。
每个DMA通道包括:
基本地址寄存器(16位)、当前地址寄存器(16位)
基本字节寄存器(16位) 、当前字节寄存器(16位)
请求寄存器位(1位) 、屏蔽寄存器位(1位)
公共控制部分包括:
控制寄存器(8位) 、状态寄存器(8位)、暂存寄存器(8位)
方式寄存器(8位)
;40引脚DIP封装。
信号分组:
请求与应答信号
被动状态下的信号
主动状态下的信号; 请求与应答信号
DREQ0 ~ DREQ3:DMA通道请求信号。有效电平可高可低,由程序控制。优先级:DREQ0最高,DREQ3最低。
HRQ:8237A向CPU发出的使用总线请求信号,高有效。
HLDA:CPU发给8237A的总线请求应答信号,高有效,表示CPU已让出总线使用权。
DACK0 ~ DACK3:DMA通道应答信号。有效电平可由程序设置。同一时刻,只能有一个DACK信号有效。
; 被动状态下的信号线
A0 ~ A3:地址输入线。用于CPU对8237A进行初始化时访问其内部寄存器使用。4位组合可访16个寄存器。
DB0 ~ DB7:双向数据线。用于CPU向8237A进
文档评论(0)