《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于DSP处理系统的多路数据传输方法与实现
基于DSP处理系统的多路数据传输方法与实现
来源:电子技术应用2014年第4期
余福荣1,罗海波2,胡 宇1,张志芳1
(1.中国空间技术研究院503所,北京10086;2.中国科学院沈阳自动化研究所,辽宁 沈阳1100
摘要: 提出了一种EDMA多通道传输链乒乓结构的多路数据传输方法,介绍了EDMA3控制器的控制原理,论述了该方法的实现过程,并在基于TMS320C6455的图像处理系统中实现了3路数据的同步传输。实验与分析结果表明,相对于多个通道分别传输的方法,该方法传输效率提高了18%,CPU资源节省率达到66%,而且数据传输更稳定可靠。
中图分类号: TN911
文献标识码: A
文章编号: 0258-7998(2014)04-0025-04
The method and implementation of multi-channel data transmission based on DSP processing systems
Yu Furong1,Luo Haibo2,Hu Yu1,Zhang Zhifang1
1.503 Institute, China Academy of Space Technology,Beijing 10086,China;2.Shenyang Institute of Automation,the Chinese Academy of Sciences,Shenyang 110016,China
Abstract: The paper proposes an approach which adopts the technology of multi-channel EDMA transfer chaining with ping-pong buffering for data transmission. Firstly,the configuration of EDMA3 controller is presented. Then the implementation process of the method is discussed. The method is verified by the experiment,in which three-channel image data is transferred synchronously to image processing system based on TMS320C6455 DSP. The result shows that,compared with the mode of respective data transmission with multi-channel, the efficiency of the data transmission would be improved by 18%, and 66% CPU resource can be saved. Furthermore, the data transmission via the proposed method is more safe and reliable.
Key words : DSP;EDMA;data transmission;processing system

    数字信号处理器(DSP)广泛应用于图像处理、通信与医疗等海量数据处理领域。在很多基于DSP的多路实时数据处理系统[1]中,需要将大量的数据传输到DSP片内存储器进行实时处理,因此如何实现多路海量数据传输,充分发挥DSP的数据处理能力,是实时数据处理系统的关键技术之一。
    传统基于DSP的数据传输方法一般采用中断或者查询方式实现,都是通过CPU控制程序来传送数据,降低了CPU的使用效率。TI公司C6x系列DSP具有增强型直接存储器访问(EDMA)控制器[2],它在后台控制数据读写,实现数据传输,不占用DSP的CPU资源,从而提高了DSP的数据处理能力。EDMA控制传输方法已应用于许多基于DSP的处理系统[3-4]中,但是,大多系统没有使用EDMA传输链方式,参考文献[4]虽采用了EDMA传输链技术,但它只是使用EDMA传输链实现其数据传输主通道EDMA参数的更新,是针对小量串数据传输设计的,不适用于多路大量数据传输。
    本文提出一种EDMA多通道传输链乒乓结构的数据传输方式,实现多路大量数据的高效同步传输,大大提高了数据传输效率。
1 EDMA3控制机制[5]
    EDMA3是TI公司的第三代直接存储器访问控制器,有64个通道,每个通道有一个特定的事件与之关联,每个事件相当于一个同步信号,由这些事件触发相应通道的数据传输。
1.1 EDMA3通道控制器
    EDMA3通道控制器(EDMA3CC)可以捕获多达64个事件,包括外部事件、直接写事件寄存器或EDMA通道链事件。捕获EDMA事件后,事件队列逻辑根据对应通道设置给该事件分配队列,队列中事件按先进先出顺序进行处理。队列中先处理的事件根据其通道参数集配置发送传输请求,EDMA3传输控制器(EDMA3TC)接收到传输请求后启动数据传输。
1.2 参数RAM (PaRAM参数集)
    EDMA3控制器是基于RAM结构的,在DSP片内RAM 中采用统一地址空间存储EDMA3通道参数,共有256个参数RAM(PaRAM参数集),每个参数集长度为8个32位数据,具体参数包括数据源地址、目的地址、传输数据大小、数据索引以及通道选项(OPT)等。参数结构如图1所示。

1.3 EDMA的链接
    当通道选项OPT中参数链接控制位STATIC设为0时,在一次传输申请后,EDMA控制器会自动根据链接地址装载下一次传输需要的参数,这样就可将不同的传输参数集链接起来,形成一个参数链,为同一个通道服务。当OPT中传输完成链接后使能位TCCHEN设为1,同时设置OPT中传输完成号字段TCC为需要链接的通道号N,在当前通道事件触发EDMA控制传输完成后,就会触发N通道事件,启动该通道的EDMA控制数据传输,实现EDMA的多通道链传输。
2 基于EDMA传输链的多路数据传输方法
    本方法实现的示意图如图2所示。在数据发送端,设计多个RAM 缓存对用于缓存多路数据,并根据多路数据间的关联生成一个同步信号,链接到处理端DSP的EDMA通道1上,用于触发该通道的数据传输。同时,在数据接收端DSP内,对应设计多个Buffer缓存对用于接收多路数据,并配置多个EDMA通道,每个EDMA通道控制1路数据传输,将数据传输方式设置为多通道传输链乒乓传输方式,通道1链接到通道2,通道2链接到通道3,通道3再链接到其他通道。

    首先,在数据发送端,采用乒乓方式同时缓存多路数据,一个缓存用于数据接收缓存,另一个缓存用于数据发送。接收完数据后,产生的同步信号触发处理端DSP的EDMA通道1控制数据传输。在数据处理端,同样采用乒乓方式接收数据,一个用于缓存数据接收,另一个缓存中的数据可用于处理。通道1数据传输完成后启动EDMA通道2数据传输,通道2数据传输完成后启动EDMA通道3数据传输,实现多路数据的同步传输。
    相对于通常采用的多个EDMA通道单独控制传输方式,本方法主要优点是:(1)只需要一个同步事件,避免了多个EDMA同步事件传输竞争,使得数据传输有序而可靠。(2)一次同步传输只需一个传输完成中断服务程序,节省了多个中断服务程序所需时间。(3)数据处理端接收到的多路数据已经按EDMA事件同步,节省了数据同步处理时间,提高了系统的实时性。(4)本方法在数据发送与处理端都采用乒乓方式传输,确保数据传输的高效率与可靠性。
3 多路图像处理系统的数据传输实现
3.1 系统工作原理

    本图像处理系统主要由DSP、FPGA和图像源构成,其中DSP采用TI公司的TMS320C6455芯片,FPGA使用XC4VLX60芯片。整个系统的工作流程为:FPGA同时采集3路数字图像,然后进行预处理,并产生同步信号,触发DSP的EDMA控制3路图像数据传输到DSP,在DSP中进行3路图像数据的实时处理。为了提高系统的实时性,一次同步只连续传输3路图像的16行数据,传输完的数据即可进行相关处理。该图像处理系统工作原理如图3所示。

3.2 系统数据传输的实现
    在FPGA中设计3对PING/PONG缓存,分别用于存储3路图像数据,每个缓存的大小设为能存储16行的图像数据量;同时,设计了一个同步控制模块,该模块根据3路图像的帧场同步与行计数产生一个同步信号,并将该信号连接到DSP的GPIO5上,用来触发DSP的EDMA控制数据传输。同样,在DSP中设计3对PING/PONG缓存分别用于接收3路图像数据,同时设计3个通道分别控制3路数据传输,并将EDMA设为多通道传输链的工作模式。
    FPGA以乒乓缓存方式分别接收完3路图像16行数据后,产生一个同步信号,该信号触发DSP的EDMA通道1进行图像1数据传输;传输完该图像16行数据后,EDMA自动链接到通道2传输图像2数据;传输完图像2数据后,EDMA又会自动链接到通道3传输图像3数据,一次同步传输完成3路16行图像数据传输。
3.3 EDMA多通道传输链的设计
    FPGA输出的同步信号链接到DSP的GPIO5、GPIO5事件对应的EMDA通道为53,用于控制图像1数据传输;控制图像2与图像3的传输通道分别设为6与7通道。其中,53通道采用64与65参数集对(对应地址为0x02A04800和0x02A04820)配置EDMA实现数据乒乓传输。同样,6通道采用72与73参数集对,7通道采用80与81参数集对。
    本文EDMA参数集配置代码采用TI公司提供的C6455片级支持库CSL函数[6]进行设置。以53通道64参数集为例进行说明,其他通道参数设置类似。
    其中53通道64乒参数集的关联配置代码如下:
    chAttr.chaNum = 53;
    hEdma3ChannelY = CSL_edma3ChannelOpen
    (&InputChObjY, CSL_EDMA3, &chAttr, &status);  
    hParamY_Ping = CSL_edma3GetParamHandle
    (hEdma3ChannelY, 64, &status);
    将OPT的STATIC设置为0,实现EDMA通道的乒乓传输,并将53通道参数集OPT的TCCHEN设置为1,TCC设置为6,将53通道链接到6通道。同样,将53通道的TCCHEN设置为1,TCC设置为7,将6通道链接到7通道;将7通道TCCHEN设置为0,TCC设置为0,关闭通道链接功能。具体EDMA多通道传输链示意图如图4所示。

    其中53通道64参数集OPT字段的配置代码如下:
    myParamSetup.option =CSL_EDMA3_OPT_MAKE
    (0,CSL_EDMA3_TCCH_ EN, 0,0,6,\
    CSL_EDMA3_TCC_NORMAL, 3,\
    CSL_EDMA3_STATIC_DIS,\
    CSL_EDMA3_SYNC_A,0,0);
    其他参数设计如下:SRC(通道源地址)设置为片外FPGA的3路缓存映射地址,乒乓缓存分别映射到DSP内存的不同空间;DST(通道目的地址)设置为Buffer-Ping/BufferPong地址,实现乒乓接收数据。本设计采用一维传输,只需设置ACNT、BCNT与CCNT值,其他BCNT、SRCBIDX等传输参数采用默认值0即可,一次传输16行图像数据,需将3个通道的ACNT设置为16x720。LINK设置参数的连接地址,本软件设计通过参数集句柄关联方式设置LINK链接地址,53通道参数集对的链接句柄分别为hParamY_Pong与hParamY_Ping,对应的地址为0x04820和0x04800,其他通道设置类似。
    其中53通道64参数集其他主要配置代码如下:
    myParamSetup.srcAddr = (uint32_t)RAM10;
    myParamSetup.dstAddr = (uint32_t)BufferPing1;
    myParamSetup.linkBcntrld =
    CSL_EDMA3_LINKBCNTRLD_MAKE (hParamY_Pong, 1);
    myParamSetup.cCnt =1;
    myParamSetup.aCntbCnt =
    CSL_EDMA3_CNT_MAKE(720*16,1); 
4 实验结果与分析

 


    实验测试平台为基于TMS320C6455的实时图像处理系统,系统时钟为1 000 MHz,DSP与FPGA之间的传输速率为100 MHz,传输图像大小为720×576,一次同步传输16×720个图像1数据、16×720个图像2数据以及16×720个图像3数据。
    实验结果如表1所示。完成一次16行3路图像数据传输,采用多个通道传输需要3个EDMA通道事件,并需要3个传输完成中断服务程序,接收后需要做同步处理。而采用多通道链传输只需要1个EDMA通道事件以及1个传输完成中断服务程序,接收后不需要做同步处理。

    由表1实验数据可知,采用EDMA多通道链传输方法,数据传输总体效率提高了18%。由于数据传输由EDMA在后台控制完成,不占用 CPU资源, CPU资源节省率达到66%。
    文中主要论述了基于DSP处理系统的多路数据传输方法与实现过程,创新地提出了一种EDMA多通道传输链乒乓传输方法,实现多路数据同步传输。实验结果表明,采用该方法实现多路数据传输,能大大提高数据传输效率,节省CPU资源,减少系统时延,并且避免了多个EDMA事件与中断的竞争,提高数据传输的可靠性与系统稳定性。
    本文方法已成功应用到某型号无人机项目中,数据传输稳定可靠,可以广泛应用在基于DSP的多路数据处理系统中。
参考文献
[1] 李波,孟庆磊.基于通用DSP的多路视频编码器的优化实现[J].电子学报,2006,34(11):2104-2017.
[2] Texas Instruments Inc..TMS320C6000 DSP enhanced direct  memory access(EDMA) controller reference guide[Z].2005.
[3] 陆军,高乐,刘涛.基于DSP与FPGA的全景图像处理系统设计与实现[J].电子技术应用,2012,38(6):24-26.
[4] 杨俊波,赵继敏.基于TI6000系列DSP的多路信号采集系统[J].工业控制计算机,2008,21(1):56-59.
[5] Texas Instruments Inc..TMS320C6455 enhanced DMA(ED-MA3) controller user′s guide[Z].2007.
[6] Texas Instruments Inc..TMS320C6455 chip support library  API reference guide[Z].2006.

此内容为AET网站原创,未经授权禁止转载。