1.Characteristics
EDMA控制器可以独立于CPU处理L2 Cache/SRAM和C64x外设之间的数据传输,包括:Cache服务、非Cache存储器存取、用户编程的数据传输和主机(host)存取
C64x EDMA增强至64个通道(C6211/C6711EDMA为16通道,C6201/C6701为4通道DMA)
带有可编程的优先权和链接(Link)和连接(Chain)数据传输能力
可在C64x可寻址的存储器不同地址间(包括L2 SRAM、外设和外部存储器)传输数据
所谓“通道”并不是指物理传输通道(EDMA控制器、DMA总线),而是指不同内容(传输源地址、目的地址、传输数量、触发方式等)的DMA传输。用户在系统初始化时可事先设置好许多不同的DMA通道,以便实际运行时可以一个接一个地进行不同的DMA传输,而不必临时再设置通道。因此通道数越多
,DMA能力越强。
2.Start Mechanisms
CPU启动(非同步的EDMA):CPU通过写相应寄存器来启动一个EDMA
由事件触发的EDMA:许多事件(如HPI、DSP中断、定时器中断、外部中断、McBSP发送中断、McBSP接收中断、另一个EDMA传输结束等)均可触发相应通道的EDMA传输。但事件必须要由CPU通过相应寄存器来使能。为同步的EDMA。
3.Controller
EDMA控制器由以下部分组成:
事件和中断处理寄存器
事件编码器
参数RAM
硬件地址产生器
事件寄存器完成对EDMA事件的捕获、控制。若有多个事件同时发生,由事件编码器对它们进行处理(将同时发生的事件进行排队)。
参数RAM存放与事件相关(各通道)的传输参数;这些参数送入硬件地址发生器以产生对EMIF/外设的存取地址。
4.Terminology
Element(元素)传输:单个数据(8、16、32bit)从源到目的传输。若需要,每个element传输均可由同步事件触发。
Frame(帧)传输:一组element组成一帧,一帧中的各element在存储器中可以是相邻连续存放的,也可以是间隔存放的。帧传输可受同步事件控制,也可不受同步事件控制。帧一般多用于1
维传输中。
Array(阵列)传输:一组连续的element组成一个阵列,在array中element不允许间隔存放。阵列传输可受同步事件控制,也可不受其控制。
Block(块)传输:多帧或多个array的数组组成一个数据块。启动可为同步或非同步方式。
5。Transfer Types
1D:多个数据帧组成一个1维传输块,块中帧个数可为1-65535。
2D:多个数据阵列组成一个2D传输块。第1维是阵列中的element,第2维是阵列个数,块中阵列个数可以为1-65535。
6。Link&Chain
Link:
可将不同的EDMA传输参数组链接起来,组成一个传输链,为同一个通道服务。在传输链中,一个传
输的结束会导致自动从参数RAM中装载下次传输需要的传输参数,开始下一次传输。
Chain:
由一个EDMA通道传输的结束触发另一个EDMA通道的传输。
7。QDMA
QDMA(即快速DMA): 在某些应用中,需要由CPU执行的代码直接控制一段数据搬移,采用QDMA非常合适
QDMA支持几乎所有的EDMA传输方式,但提交传输申请的速度比EDMA要快得多
QDMA操作由两组存储器映射寄存器进行控制
{dy}组五个寄存器,定义了QDMA传输参数(与EDMA参数RAM中的内容相似)
第二组五个寄存器是{dy}组寄存器的伪映射(pseudo-mapping)借助于它来实现QDMA存取性能的优化
QDMA控制器还有许多机制保证提交DMA申请时的高速率