基于DSP处理系统的多路数据传输方法与实现
2014-06-03余福荣罗海波张志芳
余福荣 ,罗海波 ,胡 宇 ,张志芳
(1.中国空间技术研究院503所,北京10086;2.中国科学院沈阳自动化研究所,辽宁 沈阳110016)
数字信号处理器(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 PaRAM参数结构
1.3 EDMA的链接
当通道选项OPT中参数链接控制位STATIC设为0时,在一次传输申请后,EDMA控制器会自动根据链接地址装载下一次传输需要的参数,这样就可将不同的传输参数集链接起来,形成一个参数链,为同一个通道服务。当OPT中传输完成链接后使能位TCCHEN设为1,同时设置OPT中传输完成号字段TCC为需要链接的通道号N,在当前通道事件触发EDMA控制传输完成后,就会触发N通道事件,启动该通道的EDMA控制数据传输,实现EDMA的多通道链传输。
2 基于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 多路图像处理系统工作原理
3.2 系统数据传输的实现
在FPGA中设计3对PING/PONG缓存,分别用于存储3路图像数据,每个缓存的大小设为能存储16行的图像数据量;同时,设计了一个同步控制模块,该模块根据3路图像的帧场同步与行计数产生一个同步信号,并将该信号连接到DSP的GPIO5上,用来触发DSP的EDMA控制数据传输。同样,在DSP中设计3对PING/PONG缓存分别用于接收3路图像数据,同时设计3个通道分别控制3路数据传输,并将EDMA设为多通道传输链的工作模式。
根据自身实际情况和《国民营养计划(2017—2030年)》的内容和要求,定期开展营养和食品安全监测与评估。
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乒参数集的关联配置代码如下:
将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字段的配置代码如下:
其他参数设计如下: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参数集其他主要配置代码如下:
图4 EDMA多通道传输链
4 实验结果与分析
表1 一次传输时间与效率统计表
实验测试平台为基于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(EDMA3)controller user′s guide[Z].2007.
[6]Texas Instruments Inc..TMS320C6455 chip support library API reference guide[Z].2006.