首页 理论教育 快速DMA(QDMA):高效数据传输解决方案

快速DMA(QDMA):高效数据传输解决方案

时间:2023-07-02 理论教育 版权反馈
【摘要】:QDMA的最大特点就在于,由“伪映射”寄存器来进行DMA传输申请的实际提交工作。QDMA控制器中有许多机制保证了在提交DMA请求时可以具有非常高的效率。除此之外,在QDMA的传输申请发出之后,QDMA物理寄存器的内容会保持不变。与EDMA类似,QDMA具有较低的可编程序的优先级。当QDMA申请和EDMA申请同时发生时,QDMA的申请将被首先发出。3)由于QDMA和L2 Cache控制器共享一个传输申请模块,因此Cache的传输操作可能也会延迟QDMA传输申请的递交。

快速DMA(QDMA):高效数据传输解决方案

在应用系统中,有时需要与外设(如McBSP)之间进行固定速率的数据传输。通常用户可以利用EDMA来完成这些任务,周期性地实时提供所需要的数据。但是在有些应用中,可能需要由CPU执行的代码来直接控制一段数据的搬移,此时采用QDMA就非常合适。QDMA支持几乎所有EDMA具有的传输模式,并且QDMA提交传输申请的速度比EDMA要快得多。实际上,QDMA是TMS320C64x中搬移数据最有效的一种方法。

QDMA的操作由两组参数RAM来进行设置。第1组的7个参数RAM和EDMA的参数RAM一致,也包括通道选择、源和目的地址等参数。第2组的7个参数RAM是第1组参数RAM的“伪映射(pseudo-mapping)”。实际上,正是通过“伪映射”,参数RAM实现了QDMA存取性能的优化

与EDMA相比,QDMA不支持事件参数链接,但是QDMA支持同样的通道完成中断机制,并可以产生EDMA事件,从而去链接另外一个EDMA通道。QDMA通道完成中断的控制与EDMA完全相同,用户需要使能TCINT位,并设置传输结束代码TCC。当QDMA操作结束时,QDMA的结束事件会被捕获到EDMA的CIPR中,如果此时CIER中有与TCC代码对应的位使能,那么QDMA结束事件就产生一个EDMA_INT中断信号。此外,当QDMA_OPT参数的TCC值等于8~11时,就可以将QDMA传输和一个EDMA通道的传输连接起来,此时同样还需要设置CCER。

QDMA的所有参数RAM都各自有一个“副本(Shadow)”,也就是“伪映射”参数。QDMA的最大特点就在于,由“伪映射”寄存器来进行DMA传输申请的实际提交工作。对地址为02000000h~02000010h的QDMA物理寄存器的写操作与通常的存储操作一样。而在每次写入一个“伪映射”寄存器时,相同的内容会被自动写入对应的QDMA物理RAM中,同时,将根据在物理RAM中设置的值,发出DMA传输申请。典型的QDMA操作顺序如下。

QDMA控制器中有许多机制保证了在提交DMA请求时可以具有非常高的效率。首先,QDMA寄存器对L2的存储操作类似于一般的写操作,而不同于对外设的写操作。一个QD-MA传输仅仅要求1~5个CPU周期(5个QDMA寄存器,每个需要一个周期写入)递交传输请求,这依赖于需要配置的寄存器数。所以,可以将QDMA应用于需要紧耦合的循环算法

除此之外,在QDMA的传输申请发出之后,QDMA物理寄存器的内容会保持不变。因此,只要应用程序的其他地方没有修改这些寄存器,那么对于同样的QDMA传输,以后就不用再重新设置这些寄存器,这样,以后的各次QDMA传输申请可以仅在1个周期后即被发出。仅有的1个周期的延迟用来写入相应的伪寄存器以便递交传输请求。

与EDMA类似,QDMA具有较低的可编程序的优先级。QDMA的通道选项寄存器(QOPT)的PRI域可以指定QDMA的优先级。对于TMS320C621x/C671x DSP,级0(Level0,紧急优先级)保留给L2 Cache读写访问。(www.xing528.com)

当QDMA申请和EDMA申请同时发生时,QDMA的申请将被首先发出。但是这只是提交申请的次序,实际上两者间存取操作的优先级是由各自的PRI值的设置来决定。一个具有级1(Level 1)优先级的EDMA请求比具有级2(Level 2)优先级的QDMA请求的优先级更高,即使两个事件同时发生并且QDMA请求首先发出。因此,EDMA/QDMA请求的优先级是由PRI位段的设置来决定的,而不是依赖于请求的顺序。

QDMA可能在以下几种条件下发生延迟。

1)一旦执行了对某个“伪映射”寄存器的写入(导致发出QDMA传输申请),其后对于QDMA物理寄存器的写入都会被延迟,直到前面的传输申请完成提交工作。

2)提交申请操作一般需要2~3个EDMA周期,通常CPU不会注意到这个延迟,因为写QDMA寄存器是通过L1 D写缓冲实现的,对缓冲的写操作最终会填满缓冲区,从而延迟CPU执行后续的读/写操作。

3)由于QDMA和L2 Cache控制器共享一个传输申请模块,因此Cache的传输操作可能也会延迟QDMA传输申请的递交。一旦发生这样的竞争,L2控制器会被给予更高的访问优先权

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈