EDMA3模块及其在AIF接口中的应用

 摘要:增强型直接内存访问EDMA 是DSP 中一种高效的数据传输模块,能够不依赖CPU 进行数据的搬移,是在高速接口的使用中,十分重要的设备。与之前的EDMA 模块相比,EDMA3在传输的同步方式、地址跳变、触发方式上都变得更为灵活。在TI 的新型DSP 中,外设根据数据传输是否依赖EDMA3 而分成了2 种。AIF 是一种高速接口模块,用于基带模块与射频模块间数据的传输。该接口需要EDMA3 为其提供待传输的数据及搬移已接收的数据。本文介绍了TI DSP 中的新一代EDMA3 模块的结构及参数配置,并结合多核心DSP TMS320C6474 中的高速AIF 接口,给出了一种EDMA3 的配置方式,为高速接口模块的使用,打下基础。
  
  关键词:DSP;EDMA3;TMS320C6474;AIF
  
  0 引言
  
  TMS320C6474 是TI 推出的推出的一款高性能多核心DSP,基于65nm 工艺,在单一的裸片上集成了3 个 1GHz 的C64x+内核,实现了3GHz 的原始DSP 性能。显著降低了成本和功耗,并节省板级空间,使设计人员不必在电路板上集成多个数字信号处理器就能完成诸如同时执行多通道处理任务或同时执行多软件应用等高强度、高性能任务。
  在 TMS320C6474 DSP 中,C64x+核心、EDMA3 及片上外设是通过2 种交换网络互连的。交换网络使主从器件间能够进行低延时的多路数据传输。通过交换网络,CPU 能够向VCP2 发送数据而不影响RAC 与DDR2 内存控制器间的数据传输。当对系统中的从设备进行访问时,交换网络能够对多个主设备进行仲裁。
  片上外设可以分为两类:主设备及从设备。主设备是指能够不使用EDMA3 就能在系统中进行读写操作的设备;从设备指必须使用EDMA3 才能进行数据传输的设备。
  AIF 接口(Antenna Interface)是TMS320C6474 中的一种高速接口,是一种从设备,用于基带模块与射频模块间天线数据的传输,在使用OBSAI 协议时,单条链路速率最高可达4x即3.072Gbps。
  本文将对 EDMA3 的结构及参数配置进行详细介绍,并给出一种当AIF 待发射数据及已接受到的数据连续存放在DDR2 时,EDMA3 的配置方式。文中提到的EDMA3 是TI 的新型数据传输模块,普遍适用于TI 的DSP。
  
  1 EDMA3 的结构及参数配置
  
  1.1 EDMA3 概述增强的直接存储器访问EDMA3 控制器是TI DSP TMS320C6474 中的一个高效数据传输引擎,其结构适合数据的高速传输。直接存储器访问DMA 是一种重要的数据访问方式,可以在没有CPU 参与的情况下,由DMA 控制器完成DSP 存储空间的数据转移, 应用包括:适用于软件触发的页面传输(例如:在片外存储空间SDRAM 与片内存储空间DSP L2 SRAM间进行传输);适用于事件触发的外设,例如串口及UTOPIA 接口;对多变的数据结构进行子帧的提取及排列;减轻CPU 在数据传输方面的负担。
  EDMA 控制器主要包括通道控制器EDMA3 channel controller (EDMA3CC)和传输控制器EDMA3 transfer controller(s) (EDMA3TC)两个主要部分。通道控制器EDMA3CC 是用户控制EDMA 控制器的接口,是EDMA 中用户编程的一部分。EDMA3CC 包括参数RAMParameter RAM(PaRAM),通道控制寄存器及中断控制寄存器。传输控制器EDMA3 TC 负责数据的搬移并分别向源地址和目的地址发出读/写命令,源地址和目的地址是在EDMA3CC中设定的,下文将着重介绍EDMA3CC。
  
  1.2 通道控制器 EDMA3 channel controller (EDMA3CC)
  1.2.1 EDMA3CC 概述通道控制器 EDMA3CC 是EDMA3 控制器与用户之间的接口。主要用于对收到的请求或事件按优先级进行排序并向EDMA3TC 提交传输请求(TR)。EDMA3CC 提供了在三个维度上完全正交的传输方式、独立的源变址和目的变址、支持链同步传输方式允许单一事件进行多次传输。
  EDMA3CC 支持两种传输方式:A 同步传输指单次事件进行一个维度上的传输;AB 同步传输指单次事件进行两个维度上的传输。
  EDMA3CC 支持两种通道:64 个Direct Memory Access (DMA) channels 通道支持事件同步、手动同步(CPU 通过置位事件寄存器来触发)及链同步(一次传输结束后触发另外一个传输);8 个Quick DMA (QDMA) channels 在修改PaRAM 入口后自动触发。
  上述每一个通道(DMA/QDMA)均与一个给定的事件队列及一PaRAM 集关联。DMA 通道拥有比QDMA 更高的优先级。一共有256 个PaRAM 参数集用来定义通道的传输,每个参数集都可以用于任意一个DMA/QDMA 通道,或者LINK 设置。除此之外,EDMA3CC还含有6 个传输控制/事件队列,每个队列含有16 个事件入口。6 个事件队列间的优先级是用户可编程的。EDMA3CC 允许地址增量/FIFO 地址传输模式,增强了传输的灵活性;LINK机制使PaRAM 集能够进行自动更新;链方式能够使单一事件执行多个传输;可以在传输完成或出错时产生中断。
  EDMA3CC 的主要模块有:PaRAM、EDMA3 事件及中断处理寄存器、传输完成检测模块、事件队列及存储器保护寄存器。  
  1.2.2 EDMA3 的传输类型EDMA3 的传输是在3 个维度上定义的:
  1. Array (A):一次传输中的一维指ACNT 个连续字节。
  2. Frame (B):一次传输中的二维指BCNT 个含有ACNT 个字节的阵列array。每个在二维传输中的array 是通过SRCBIDX/DSTBIDX 来分隔的。
  3. Block (C):一次传输中的三维指CCNT 个含有BCNT 个阵列的帧,每个阵列array 含有ACNT 个字节。在三维上进行的传输是通过SRCCIDX/DSTCIDX 与前次传输进行分隔的。
  在这三种维度上,EDMA3 只支持两种同步方式的传输:A 同步传输和AB 同步传输,而EDMA3 并不直接支持ABC 同步传输,但可以通过将多个AB 同步传输通过链方式来间接支持。A 同步传输方式相对AB 同步传输方式简单,下面着重分析AB 同步传输方式。
  在一个 AB 同步的传输中,EDMA3 同步事件会在2 个维度上即一帧对传输进行初始化。
  即每个事件所提交的传输请求会要求传输一帧的数据,即BCNT 个array,每个array 含有ACNT 个连续字节,因此一次传输BCNTxACNT 个字节。因此,在AB 同步传输的PaRAM时,进行传输的次数为CCNT 次,即该参数表对应的事件数为CCNT 个。
  阵列 array 间通过SRCBIDX 及DSTBIDX 两个参数进行分隔,如下图所示,阵列N 的起始地址等于阵列N-1 的起始地址加上SRCBIDX/DSTBIDX。帧间通过SRCCIDX 及DSTCIDX 参数进行分隔。对于一个AB 同步传输,一个传输请求TR 被提交后,地址的更新是通过对帧头阵列的地址加SRCCIDX/DSTCIDX 来实现的。
  1.2.3 参数 RAM Parameter RAM (PaRAM)DMA 及QDMA 通道传输内容(源/目的地址、数量、索引值等)是由EDMA3CC 中被称为PaRAM 的传输参数表(PaRAM table)控制的。传输参数表划分成多个PaRAM 集。共有256 个PaRAM 集,每个PaRAM 可用于DMA、QDMA 通道及LINK 设置。PaRAM 的各字段含义如下:
  OPT 字段主要负责EDMA3 传输的传输方式(AB 同步/A 同步)、传输完成模式(正常/提前)、链接触发方式(中间每次/最后一次/全部)、中断产生方式(中间每次/最后一次/全部)及PaRAM 是否进行更新及LINK。针对在AIF 传输中EDMA 的应用,OPT 字段应设置为AB同步传输方式,正常传输完成模式,仅在最后一次传输完成时产生中断,对PaRAM进行更新及LINK。
  SRCBIDX/DSTBIDX 用于指示在一帧中,数据源/目的的阵列array 间隔的字节数。
  SRCCIDX/DSTCIDX 用于指示在块传输中,数据源/目的的帧间地址变化的字节数。
  SRCBIDX/DSTBIDX、SRCBIDX/DSTBIDX 使用二进制补码,使地址值索引值可正可负,即EDMA 传输时,数据源/目的的地址可以减小。
  在使用 AIF 模块时,无论是发送还是接收,传输的数据均是连续存放的,因此有SRCBIDX=DSTBIDX=ACNT;SRCCIDX=DSTCIDX=ACNT*BCNT。
  EDMA3CC 提供了LINK 机制,使得一个完整的PaRAM 集能够从其他PaRAM 集中重载。当完成传输时,现有的PaRAM 集会从该参数集中指向的用于LINK 的PaRAM 集中重载所有参数信息。在当前的PaRAM 集的传输事件参数耗尽时,就会进行LINK 操作。
  EDMA3CC 提交了PaRAM 集中定义的所有传输请求时,一个事件参数就耗尽了。
  由于 AIF 的传输特性,EDMA3 要进行连续不断的传输操作,因此,EDMA3 的LINK要设置为自LINK 方式,即当耗尽当前PaRAM 集时,从另一PaRAM 集向当前PaRAM 集重载所有信息,而这个PaRAM 集的所有参数设置与当前PaRAM 集的原始参数完全相同。
  在 AB 同步传输时,PaRAM集会在每帧传输完成后更新源地址及目的地址,并将CCNT减1。当CCNT=1 时,说明该PaRAM 集即将耗尽,如果之前在OPT 选择了进行更新及LINK,则EDMA3CC 将会把Link Address 处的PaRAM 集的所有信息复制到当前的PaRAM 集处,进行后续传输,被链接的PaRAM 集保持不变。
  1.2.4 DMA 传输的触发方式有三种方式可以触发在DMA 通道上的传输:
  1.Event-triggered transfer request 事件触发传输请求:外设、系统、外部事件产生的传输请求。
  2.Manually-triggered transfer request 手动触发传输请求:CPU 向相应的事件置位寄存器(ESR/ESRH)中写1 来触发传输。
  3.Chain-triggered transfer request 链触发传输请求:另一传输完成时触发的传输。
  外设或引脚产生事件时,事件寄存器中相应位将置1(ER.En = 1)。如果事件使能寄存器(EER)相应位被使能(EER.En = 1),那么EDMA3CC 将会按优先级处理该事件并将其排队。
  当该事件到达队列头时,EDMA3CC 会向EDMA3TC 提交传输请求。
  如果与该事件相关联的PaRAM 集有效,一个传输请求包将提交给EDMA3TC,且ER中的En bit 被清除。此时,EDMA3CC 能接收新的事件。如果与该事件相关联的PaRAM 集无效,则不会提交传输请求,相应的ER 中的En bit 被清除同时在事件丢失寄存器中的相应位会被置位(EMR.En = 1)。
  64 个DMA 通道中的一些通道是与硬件事件绑定的,因此允许来自外设或外部器件的事件来触发传输。当DMA 通道接收到事件时,会请求进行数据传输。传输的数据量则与通道的参数配置ACNT、BCNT、CCNT 及同步方式有关。事件与通道的关系是固定的,每个DMA 通道有指定的事件与之关联。若一个通道不存在与之关联的事件或该事件未使用,则该通道可以使用手动触发方式或链接触发方式,或者作为QDMA 通道来使用。
  AIF 的EDMA 数据传输是事件触发的,FSYNC 产生定时事件,控制待发送/接收数据的搬移。
  
  2 AIF 模块中EDMA3 的配置
  
  TMS320C6474 上的天线接口Antenna Interface(AIF)主要用于在蜂窝通信系统中射频子系统与基带子系统间基带天线数据的传输。AIF 含有高速串并-并串转换器SerDes,能兼容CPRI 及OBSAI 两种协议。AIF 相当于一个buffer 使系统不会遗漏任何天线数据。
  AIF 中每条链路buffer 的实体大小为2KB,但可以循环寻址至4MB 大小的空间。通过地址翻转使得对2KB buffer 的线性访问能达到4MB,能够简化大规模数据传输时EDMA3的配置。
  Buffer 中的数据结构跟数据类型DL/UL 有关,但无论哪种数据类型,Inbound/OutboundRAM在2KB 大小空间内都能存放最多16 个AxC,每AxC 32chips 的数据。Inbound/Outbound并不是指上行及下行。通过Inbound (input port)及Outbound(output port)的数据可以是DL 也可以是UL,因此,DL 及UL 决定了buffer 中的数据结构。DL 数据的突发大小是4 chips;UL 数据的突发大小是8 chips。突发大小指的是一次事件触发的EDMA 搬移的最小数据量。
  使用 AIF 的接收及发射的数据类型都为DL,下行数据流向为DDR2->AIF OutboundRAM;上行数据流向为AIF Inbound RAM->DDR2;传输的是LTE 的数据,由于AIF 并不直接支持LTE 数据类型,但直接支持WCDMA,因此下行为LTE 的2 天线数据,相当于WCDMA 下的16 AxC,对应AIF 的LINK 速率选为4x。DDR2 侧的待发送数据连续存放,不涉及地址跳变,EDMA 的主要参数配置如下:
  上行接收的是 LTE 的2 天线的数据,只对一天线的数据进行处理,则需要EDMA3 在搬移数据时对2 天线的数据进行剥离。对应于WCDMA 下AxC 号为0、2、4、6、8、10、12、14 的数据为LTE 天线0 的数据。AIF Inbound RAM 中的数据连续存放,DDR2 中前一半为天线0 的数据,后一半数据无效。主要配置参数如下:
  应选用外部事件触发的方式触发EDMA3 进行数据搬移,所选的DMA 通道与事件相对应。
  相应的 PaRAM 的OPT 及LINK 字段应配置为LINK 到拥有同样参数的PaRAM,使得数据传输能持续进行。
  
  3 结论
  
  本文对 TI DSP 中的新一代EDMA3 模块进行了详细的介绍,着重分析了其通道控制器的结构及参数配置。并结合TMS320C6474 中的高速AIF 接口,给出了一种使用EDMA3 进行数据搬移的方法,为使用高速接口模块,做好准备。

你可能感兴趣的:(数据结构,网络,存储,buffer,任务,interface)