《【2017年整理】EDMA3原理以及应用》由会员分享,可在线阅读,更多相关《【2017年整理】EDMA3原理以及应用(4页珍藏版)》请在金锄头文库上搜索。
1、摘要:增强型直接内存访问 EDMA 是 DSP 中一种高效的数据传输模块,能够不依赖 CPU 进行数据的搬移,是在高速接口的使用中,十分重要的设备。与之前的 EDMA 模块相比,EDMA3 在传输的同步方式、地址跳变、触发方式上都变得更为灵活。在 TI 的新型 DSP 中,外设根据数据传输是否依赖 EDMA3 而分成了 2 种。AIF 是一种高速接口模块,用于基带模块与射频模块间数据的传输。该接口需要 EDMA3 为其提供待传输的数据及搬移已接收的数据。本文介绍了 TI DSP 中的新一代 EDMA3 模块的结构及参数配置,并结合多核心 DSP TMS320C6474 中的高速 AIF 接口,
2、给出了一种 EDMA3 的配置方式,为高速接口模块的使用,打下基础。关键词:DSP;EDMA3 ;TMS320C6474;AIF0 引言TMS320C6474 是 TI 推出的推出的一款高性能多核心 DSP,基于 65nm 工艺,在单一的裸片上集成了 3 个 1GHz 的 C64x+内核,实现了 3GHz 的原始 DSP 性能。显著降低了成本和功耗,并节省板级空间,使设计人员不必在电路板上集成多个数字信号处理器就能完成诸如同时执行多通道处理任务或同时执行多软件应用 等高强度、高性能任务。在 TMS320C6474 DSP 中,C64x+ 核心、EDMA3 及片上外设是通过 2 种交换网络互连的
3、。交换网络使主从器件间能够进行低延时的多路数据传输。通过交换网络,CPU 能够向 VCP2 发送数据而不影响 RAC 与 DDR2 内存控制器间的数据传输。当对系统中的从设备进行访问时,交换网络能够对多个主设备进行仲裁。片上外设可以分为两类:主设备及从设备。主设备是指能够不使用 EDMA3 就能在系统中进行读写操作的设备;从设备指必须使用 EDMA3 才能进行数据传输的设备。AIF 接口 (Antenna Interface)是 TMS320C6474 中的一种高速接口,是一种从设备,用于基带模块与射频模块间天线数据的传输,在使用 OBSAI 协议时,单条链路速率最高可达 4x 即 3.072
4、Gbps。本文将对 EDMA3 的结构及参数配置进行详细介绍,并给出一种当 AIF 待发射数据及已接受到的数据连续存放在 DDR2 时,EDMA3 的配置方式。文中提到的 EDMA3 是TI 的新型数据传输模块,普遍适用于 TI 的 DSP。1 EDMA3 的结构及参数配置1.1 EDMA3 概述增强的直接存储器访问 EDMA3 控制器是 TI DSP TMS320C6474 中的一个高效数据传输引擎,其结构适合数据的高速传输。直接存储器访问 DMA 是一种重要的数据访问方式,可以在没有 CPU 参与的情况下,由 DMA 控制器完成 DSP 存储空间的数据转移, 应用包括:适用于软件触发的页面
5、传输(例如:在片外存储空间 SDRAM 与片内存储空间 DSP L2 SRAM 间进行传输) ;适用于事件触发的外设,例如串口及 UTOPIA 接口;对多变的数据结构进行子帧的提取及排列;减轻 CPU 在数据传输方面的负担。EDMA 控制器主要包括通道控制器 EDMA3 channel controller (EDMA3CC)和传输控制器 EDMA3 transfer controller(s) (EDMA3TC)两个主要部分。通道控制器 EDMA3CC 是用户控制 EDMA 控制器的接口,是 EDMA 中用户编程的一部分。EDMA3CC 包括参数RAMParameter RAM(PaRAM)
6、,通道控制寄存器及中断控制寄存器。传输控制器 EDMA3 TC 负责数据的搬移并分别向源地址和目的地址发出读/写命令,源地址和目的地址是在EDMA3CC 中设定的,下文将着重介绍 EDMA3CC。1.2 通道控制器 EDMA3 channel controller (EDMA3CC)1.2.1 EDMA3CC 概述通道控制器 EDMA3CC 是 EDMA3 控制器与用户之间的接口。主要用于对收到的请求或事件按优先级进行排序并向 EDMA3TC 提交传输请求(TR) 。EDMA3CC 提供了在三个维度上完全正交的传输方式、独立的源变址和目的变址、支持链同步传输方式允许单一事件进行多次传输。EDM
7、A3CC 支持两种传输方式:A 同步传输指单次事件进行一个维度上的传输;AB 同步传输指单次事件进行两个维度上的传输。EDMA3CC 支持两种通道: 64 个 Direct Memory Access (DMA) channels 通道支持事件同步、手动同步(CPU 通过置位事件寄存器来触发)及链同步(一次传输结束后触发另外一个传输) ;8 个 Quick DMA (QDMA) channels 在修改 PaRAM 入口后自动触发。上述每一个通道(DMA/QDMA) 均与一个给定的事件队列及一 PaRAM 集关联。DMA 通道拥有比 QDMA 更高的优先级。一共有 256 个 PaRAM 参数
8、集用来定义通道的传输,每个参数集都可以用于任意一个 DMA/QDMA 通道,或者 LINK 设置。除此之外,EDMA3CC 还含有 2 个传输控制 /事件队列,每个队列含有 16 个事件入口。2 个事件队列间的优先级是用户可编程的。EDMA3CC 允许地址增量/FIFO 地址传输模式,增强了传输的灵活性;LINK 机制使 PaRAM 集能够进行自动更新;链方式能够使单一事件执行多个传输;可以在传输完成或出错时产生中断。EDMA3CC 的主要模块有:PaRAM、EDMA3 事件及中断处理寄存器、传输完成检测模块、事件队列及存储器保护寄存器。1.2.2 EDMA3 的传输类型 EDMA3 的传输是
9、在 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 并不直接
10、支持 ABC 同步传输,但可以通过将多个 AB 同步传输通过链方式来间接支持。A 同步传输方式相对 AB 同步传输方式简单,下面着重分析 AB 同步传输方式。在一个 AB 同步的传输中,EDMA3 同步事件会在 2 个维度上即一帧对传输进行初始化。即每个事件所提交的传输请求会要求传输一帧的数据,即 BCNT 个 array,每个 array 含有 ACNT 个连续字节,因此一次传输 BCNTxACNT 个字节。因此,在 AB 同步传输的PaRAM 时,进行传输的次数为 CCNT 次,即该参数表对应的事件数为 CCNT 个。阵列 array 间通过 SRCBIDX 及 DSTBIDX 两个参数进
11、行分隔,如下图所示,阵列 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 集,每个
12、PaRAM 可用于DMA、QDMA 通道及 LINK 设置。PaRAM 的各字段含义如下:OPT 字段主要负责 EDMA3 传输的传输方式(AB 同步/A 同步) 、传输完成模式(正常/提前) 、链接触发方式(中间每次 /最后一次/全部) 、中断产生方式(中间每次/最后一次/全部)及 PaRAM 是否进行更新及 LINK。针对在 AIF 传输中 EDMA 的应用,OPT 字段应设置为 AB 同步传输方式,正常传输完成模式,仅在最后一次传输完成时产生中断,对PaRAM 进行更新及 LINK。SRCBIDX/DSTBIDX 用于指示在一帧中,数据源/目的的阵列 array 间隔的字节数。SRCCI
13、DX/DSTCIDX 用于指示在块传输中,数据源/目的的帧间地址变化的字节数。SRCBIDX/DSTBIDX、SRCBIDX/DSTBIDX 使用二进制补码,使地址值索引值可正可负,即 EDMA 传输时,数据源/ 目的的地址可以减小。在使用 AIF 模块时,无论是发送还是接收,传输的数据均是连续存放的,因此有SRCBIDX=DSTBIDX=ACNT;SRCCIDX=DSTCIDX=ACNT*BCNT。EDMA3CC 提供了 LINK 机制,使得一个完整的 PaRAM 集能够从其他 PaRAM 集中重载。当完成传输时,现有的 PaRAM 集会从该参数集中指向的用于 LINK 的 PaRAM 集中
14、重载所有参数信息。在当前的 PaRAM 集的传输事件参数耗尽时,就会进行 LINK 操作。EDMA3CC 提交了 PaRAM 集中定义的所有传输请求时,一个事件参数就耗尽了。由于 AIF 的传输特性,EDMA3 要进行连续不断的传输操作,因此,EDMA3 的LINK 要设置为自 LINK 方式,即当耗尽当前 PaRAM 集时,从另一 PaRAM 集向当前PaRAM 集重载所有信息,而这个 PaRAM 集的所有参数设置与当前 PaRAM 集的原始参数完全相同。在 AB 同步传输时, PaRAM 集会在每帧传输完成后更新源地址及目的地址,并将CCNT 减 1。当 CCNT=1 时,说明该 PaRA
15、M 集即将耗尽,如果之前在 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
16、.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 及同步方式有关。事件与通道的关系是固定的,每个