DMA(1) 外部DMA请求/应答协议
这里主要讲述4种类型的DMA请求/应答协议。
(1)握手模式
Handshake模式:DMA完成一次请求后等待Request信号无效,如果Request无效,DMA会无效ACK两个时钟周期,再等待下一次Request。
在握手模式下,一个单独的DMA请求信号对应一个DMA应答信号。而且在该模式下,一次DMA操作意味着在DMA操作中的一对或不可分的读和写周期。在DMA操作中,总线控制器不能把`总线的使用权分配给其他总线控制者。如果想在DMA操作中响应高优先级的总线控制,则必须用单步模式,单步模式是把一个DMA操作看成是分离的读和写操作周期。
由nXDREQ产生的DMA请求引起一个字节、一个半字或者一个字被传送出去。在握手模式下,每一个数据的传送都需要DMA请求。
(2)demand mode 需求模式
Demand模式:如果DMA完成一次请求后Request仍然有效,那么DMA就认为这是下一次DMA请求,并立即开始下一次的传输。
(这里应该是有问题:需求模式在一次dma request 后就开始等待下一个 dma request 不采用传统的计数方式,不会霸占总线不放 , 长时间占用总线是whole mode )
请求模式表示,只要DMA请求信号有效,DMA传送周期将连续进行。不像完整服务模式,需求模式不允许将总线控制权交给高优先级的总线控制者,即使它在DMA操作中向总线控制器发出请求。也就是说,在需求模式下,DMA垄断总线控制权。
(3)单步模式
单步模式意味着有两个DMA应答周期,分别为DMA读和写周期。单步模式通常用于测试和调试,因为在读与写之间总线控制权可能会交给其他总线控制者。在nXDACK的非有效区,比如在读与写周期之间,总线控制器将再次评估总线优先级,以决定新的总线控制权。因此,单步模式下的数据传输将慢于握手模式下的数据传输。
当DMA请求信号变低时,如果没有高优先级的总线请求,则总线通过降低DMA应答信号来表明对DMA操作的总线分配。在DMA应答信号的第一个低电平段,将有一个DMA的读周期。在DMA读周期后,DMA应答信号将有一个上升沿来表示DMA读周期的结束;同时,如果在DMA应答信号上升时DMA请求信号一直为低电平,则表明下面将是DMA写周期。但是如果在DMA应答信号上升时DMA请求信号也为高电平,则DMA写周期将会延迟到新的DMA请求信号被激活。
(4)whole mode 完整服务模式
在完整服务模式下,一次DMA请求将产生连续的DMA传输,直到规定的DMA传输数据完成。
在完整服务模式下,如果DMA传送操作的数量太大,DMA操作长时间占用总线,将引起一些问题,因为其他总线服务将无法进行。为了解决此问题,在完整服务模式下,每传送完一个单元,DMA将释放总线控制权。当DMA释放总线控制权后,其他总线就可以拥有总线控制权;如果其他总线拥有了总线控制权,则在完成该服务后将继续执行剩余的DMA操作,而且不需要再次激活nXDREQ。
附加:
摘S3C2440芯片手册:
两种模式的差异在其是否等待DACK无效。
在握手模式下,DMA控制器在开始一个新传输前等待无效DREQ。如果DREQ无效,其使得DACK无效并等待另外有效DREQ.
(DREQ , DACK都对应有相应的引脚和外设相连的,可以看原理图)
在请求模式下,DMA控制器不会等到DREQ无效,其仅将DACK置无效且如果DREQ有效则开始另一个传输。
posted on 2016-11-08 14:19 Red_Point 阅读(4016) 评论(0) 编辑 收藏 举报