1 eDMA介绍
1.1 eDMA的结构
eDMA模块框图如图1所示。
从eDMA的模块结构图可以看出,eDMA模块包括两个主要模块:eDMA引擎和传输控制描述符TCD单元。其中,eDMA引擎的功能主要包括源地址和目的地址的计算和实际的数据搬移操作;TCD单元的功能是为每个通道定义传输的源地址和目的地址、次循环的大小、单次传输的字节量及传输方式等信息。
eDMA引擎由如下4个子模块组成:
①地址路径模块。执行传输控制描述符的2个通道(通道X和通道Y)的注册,并处理所有的总线地址计算。被注册的通道用于装载从传输控制描述符区域读取的传输控制描述符内容。
②数据路径模块。执行数据的读写,包括16字节的寄存器存储区域,并支持多种数据排列方式。
③编程模型/通道仲裁模块。执行eDMA编程模型和通道仲裁。eDMA外部请求输入和中断输出都连接到该模块。
④控制模块。提供所有针对eDMA引擎的控制功能,包括对数据读和写的匹配。如需要读取的源数据大小为16位,而目标数据大小为32位,则每2次读取只需要1次写入。
传输控制描述符区域由如下两部分组成:
①内存控制器。该逻辑执行必需的双向端口控制,处理eDMA引擎和内部外围总线的通道。
②内存阵列。TCD存储区是一个单端口同步的RAM阵列。每个通道都有1个TCD单元,每个TCD有32字节,由11个寄存器组成。
1.2 eDMA的操作
MCF5329的eDMA有16个数据传输通道,每一个通道由一个传输控制描述符TCD进行描述。TCD不仅记录了数据传输的源和目的地址,还记录了当前传输地址相对于起始地址的偏移。该偏移由一个主循环(maior loop)和一个次循环(minor loop)来表示。当一个通道在传输时,次循环中的数据传输完成之后,eDMA引擎中的当前源地址、目的地址和外循环的大小会被写回TCD存储区域,并执行通道连接的其他通道传输。每一个次循环执行完,当前外循环计数器就会减1;当外循环计数器减为O时,eDMA会向处理器发起一次中断请求,请求下一次eDMA传输的源和目的地址。一次主循环所能传送的最大字节数由用户所分配的eDMA缓冲区大小决定。
1.3 eDMA基本数据流
eDMA基本数据流可被划分为三段。
第一段是通道激活。以外围硬件请求激活通道为例,eDMA请求输入信号首先经由控制子模块进入编程模型和通道仲裁模块,确定采用固定优先级还是联合通道仲裁(固定优先级仲裁是先给具有最高优先级的通道服务,联合通道优先级是先给通道编号最大的通道服务);确定通道后,被确定的通道号通过地址路径模块发送并转换成需要的地址,用于在当地存储区域中存取传输控制描述符TCD;相应的描述符读取出来后被装载到地址路径模块中的通道X或通道Y寄存器中。
第二段是真正的数据传输。源数据被读取出来临时,存储在数据路径块中,然后在时钟的驱动下将数据写入到目标地址。整个读写过程持续到次循环数据结束。
第三段是TCD的更新和中断请求的发生。一旦一个次循环数据传输完毕,数据流就进入第三段。在该段中,地址路径逻辑会更新相应TCD中的特定区域,如源地址、目标地址和外循环计数。如果外循环计数减为O,则要进行额外的设置,包括最终地址调节。如果在此时有中断请求发生,需要重新读取一个新的TCD。
2 TLV320DAC23介绍
TLV320DAC23是TI公司推出的一颗高性能立体声音频编解码(CODEC)芯片,采样率可以从8 kHz到96kHz,传输字长可自由选择为16位、20位、24位或32位;最大输出信噪比可达到100 db;控制端口可兼容SPI、2一wire等协议;回放模式下功率为18 mw,省电模式下小于15μW。该芯片适用于便携式设备的数字音频处理。
(1)控制接口
控制接口用于对器件TLV320DAC23的寄存器编程,以及设置音频芯片的工作参数。它兼容两种模式:SPI三线模式、2一wire模式。
MODE:模式选择。MODE为0时采用2一wire模式,为1时采用SPI模式。
SCLK:控制端口串行数据时钟。
SDIN:控制端口串行数据输入。
CS:控制端口输入锁存/地址选择。SPI模式下,CS用于数据锁存控制,2一wire模式下,CS定义器件地址域的第7位。SPI模式下,1个控制字为1 6位:高7位为控制地址,低9位为控制字。16位的控制字由MSB位开始传输,每位在SCLK的上升沿被锁存,整个16位的控制字在最低位被CS锁存进TLV320DAC23。
(2)数字音频接口
数字音频接口用于输入TLV320DAC23的D/A数据。
BCLK:I2S串行比特时钟。主模式时BCLK为输出,从模式时BCLK为输入。
DIN:I2S串行数据输入。
DOUT:I2S串行数据输出。
LRCIN/LRCOUT:字时钟输入/输出信号,两个信号共有的帧信号。在主模式中由DAC23产生该信号,在从模式中由主设备(如DSP或MCU)产生该信号。
TLV320DAC23支持4种音频接口模式:右对齐模式、左对齐模式、I2S模式、DSP模式。这4种模式都是最高有效位MSB在前,字长16~32位(右对齐除外,它不支持32位)。
(3)时钟接口
MCLK:芯片主时钟信号。当TLV320DAC23作为主设备时,该信号由芯片自身产生;当TLV320DAC23作为从设备时,该信号由外部产生。
CLKOUT:时钟输出信号。可以为MCLK或MCLK/2。