大家好,又见面了,我是你们的朋友全栈君。
DMA(direct memory access)是一种外设与存储器或者存储器与存储器之间直接传输数据的方式,在进行DMA存取时,CPU让出总线控制权,不在采用输入输出指令的方法进行数据存取,而采用一个专门的硬件DMAC(Direct Memory Access Control)控制电路,减少了中间环节,从而提高了传输速率。
DMA直接实现I/O与存储器之间的数据传送。 ①当I/O接口准备好,希望进行DMA操作时,就像DMAC发出DMA请求信号DRQ(DMA Request) ②DMAC将此请求信号转变成对CPU的总线请求信号(Hold Request) ③CPU当前总线执行周期结束,相应DMAC操作,发出应答信号HLDA(Hold Acknowledgment),此时,由DMAC接管对总线的控制 ④由DMAC对存储器寻址,并发出相应的控制信号(DACK,/RD,/WR),使存储器与I/O接口之间直接交换数据 ⑤在传送一字节数据时,DMAC自动修改存储器地址和传送字节计数器,并检测传送是否结束 ⑥DMA传送结束,DMAC向CPU发出结束信号(EOP),并释放总线,使得CPU重新获得总线控制,恢复正常工作
(1) Si状态:空闲周期,Si的下降沿检测到有一个或几个DREQ请求,在Si的下一个上升沿向CPU发出DMA请求,HRQ有效; (2) S0状态:等待CPU对总线请求的响应,S0的上升沿采样到HLDA信号有效, 下一周期进入S1状态; (3) S1状态:地址允许信号AEN有效,存储单元高8位地址通过DB0DB7输出,发出地址选通信号ADSTB,下降沿对高8位地址进行锁存,地址低8位/由地址线A0A7 输出,且整个DMA传送期间保持; (4) S2状态:8237A向外设输出DMA响应信号DACK,读写信号相继有效; (5) S3状态和S4状态进行数据传送; (6) 块传送方式下:S4后传送下一个字节 ,地址高8位不变,低8位变化,不需要S1直接进入S2,直到发生TC事件。 (7) 若S4之前不能完成数据传送,可令READY为低,在S3和S4之间插入Sw,以加宽DMA传送周期。
(1) 传送过程:8237A获取总线控制权后,传送一个字节,字节数寄存器减1,地址寄存器加1或减1,HRQ变为无效,释放总线,HRQ很快再次有效,接收到HLDA有效信号后,传送下一字节,重复以上过程,直到字节数从0减到FFFFH,发生TC事件,DMA传送结束。 (2) 特点:效率低,但能保证两次DMA传送之间CPU有机会重新获取总线控制权。
(1) 传送过程:由DREQ启动后就连续传送数据,直到TC事件发生或外部输入有效的/EOP信号为止。 (2) 特点:一次请求能传送一个数据块,效率高;但整个DMA传送期间CPU长时间无法控制总线。
连续传送数据,当出现以下三种情况之一时停止。 (1) 字节数寄存器从0减到FFFFH,发生TC事件; (2) 由外部送来一个有效的 信号; (3)外部输入的DREQ信号变为无效。 当第三种情况发生时,当外设准备好数据后,传送可以继续下去。 特点:DMA操作可由外设控制传送的过程。
若干片8237A构成主从式DMA系统
(2) 主屏蔽字格式
237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令。8237A “软件命令”的特征: (1) 不需要通过数据总线写入控制字; (2) 直接由地址和控制信号译码实现。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145075.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有