eDMA是enhanced Direct Memory Access的简称,即增强型直接内存存取。它是用于快速数据交换的重要技术,具有独立于CPU的后台批量数据传输能力,能够满足实时处理中高速数据传输的要求。在ColdFire系列MCU中的MCF5329EVB平台上实现的音频系统,为了满足系统的实时性要求,采用eDMA来完成音频数据的传输。MCF5329EVB提供了一个eDMA控制器,可以满足大量数据的实时传送需求。
1 eDMA介绍
1.1 eDMA的结构
eDMA模块框图如图1所示。
从eDMA的模块结构图可以看出,eDMA模块包括两个主要模块:eDMA引擎和传输控制描述符TCD单元。其中,eDMA引擎的功能主要包括源地址和目的地址的计算和实际的数据搬移操作;TCD单元的功能是为每个通道定义传输的源地址和目的地址、次循环的大小、单次传输的字节量及传输方式等信息。
eDMA引擎由如下4个子模块组成:
①地址路径模块。执行传输控制描述符的2个通道(通道X和通道Y)的注册,并处理所有的总线地址计算。被注册的通道用于装载从传输控制描述符区域读取的传输控制描述符内容。
②数据路径模块。执行数据的读写,包括16字节的寄存器存储区域,并支持多种数据排列方式。
③编程模型/通道仲裁模块。执行eDMA编程模型和通道仲裁。eDMA外部请求输入和中断输出都连接到该模块。
④控制模块。提供所有针对eDMA引擎的控制功能,包括对数据读和写的匹配。如需要读取的源数据大小为16位,而目标数据大小为32