APP下载

AVS编码器的EDMA数据存取策略

2011-07-05任家富

仪器仪表用户 2011年5期
关键词:缓冲区寄存器存储器

郭 璐,任家富

(成都理工大学信息科学与技术学院,成都610059)

0 引言

AVS视频压缩标准具有很高的编码效率,但也有较高的算法复杂度。编码过程由于数据的重复使用不可避免的会产生大量数据的搬移,加重了DSP的负担并耗费了很多时间。另外移植的嵌入式操作系统也占用部分内存,待处理的视频数据不得不放在外部存储器中。提高编解码速度必须解决数据存储问题,本文采用的TMS320DM6446[1]是TI最新推出的面向多媒体处理的数字信号处理器(DSP)。它的增强型直接内存存取(EDMA)对DSP图像处理系统非常重要,可以在没有CPU参与的情况下完成映射存储空间中数据搬移从而减轻了DSP负担。灵活使用EDMA可以大大提高数据传输效率。本文研究了用DSP将数据从SDRAM到内部存储器的快速搬移以及数据从内部存储器到显示终端的快速传输问题,提高了实时图像处理系统的实时性。

1 EDMA的基本结构

增强的直接存储器访问控制器主要包括传输控制器EDMATC和通道控制器EDMACC两个主要部分:

1)传输控制器处理片内L2高速缓冲存储器的外部存储设备之间的数据传输,包括EDMA通道控制器传输,EMIF接口存储器和缓冲之间的传输,以及非高速缓冲存储器访问等。

2)通道控制器是EDMA中用户编程的一部分,支持一系列复杂的传输,包括一维和二维传输,事件触发的传输和CPU触发的传输,并支持PING-PONG缓冲[2]的复杂载入和编址模式,如环形缓存,帧提取和分类等。

EDMA的传输原理[3]:每个数据传输都由传输请求TR(Transfer Request)触发。传输请求具有完成传输任务所需要的所有信息:源地址、目的地址、传输优先级和单元计数等。传输时,根据优先级对传输请求进行排列。队首的任务首先占用EDMA传输控制器的队列寄存器,然后按照传输要求进行真实的数据传输。传输过程中,传输递交、优先级排列、数据传输环节的运行和CPU频率相同。外部设备的数据传输速度由外部设备决定,外部设备均有缓冲区以匹配高速度的EDMA。EDMA具有高效的传输机制,可以同时承担多个传输数据任务。DSP中的3个常用的请求器为L2缓存/存储控制器、EDMA通道和HPI,不同的传输任务也有不同的请求。然而,无论哪种请求器发出请求,EDMA传输控制器处理每个传输请求的方式都是一样的。当传输请求被提交后,就由传输框架TC为其设定优先级。TC拥有和外部设备独立的读总线,优先级设置后的传输请求TR进入请求队列等待处理,传输请求的优先级决定了哪个TR先被提交。

2 EDMA实现数据搬移

图像处理系统在两处数据传输中采用了EDMA传输方式:外部SDRAM到DSP内部L2Cache的数据传输;McBSP0到显示终端的数据传输。EDMA实现数据搬移的工作流程图如图1所示。

图1 EDMA实现数据搬移的工作流程图

2.1 SDRAM到L2 Cache的数据搬移

搬移的数据为2维图像数据,图像来自视频采集板卡的数据图像,该图像存储在SDRAM中,因此DSP是通过EDMA从SDRAM中将数据传输到DSP内部存储器,然后DSP进行相应的图像处理。因此EDMA采用2-D数据传输模式。

2.1.1 同步传输模式

一个EDMA通道的同步传输有两种方式[4]:

1)读/写同步(FS=0):EDMA通道在收到同步事件后,对于non-2D,向目的地址传输一个数据单元;对于2D传输,向目的地址传输一个阵列的数据。

2)帧/块同步(FS=1):对于non-2D传输,同步事件回触发一帧数据的传输;对于2D传输,帧同步将传输整个数据块(一组阵列)。

2.1.2 传输地址的更新

EDMA传输参数中有SUM/DUM参数字段[5],可以控制源/目标地址的更新方式,地址更新是指在一个数据块的传输过程中,源/目标地址的自动修正。不同的地址更新模式使得用户可以创建多种数据结构。

2.2EDMA控制中断CPU

向CPU产生的传输完成中断主要由EDMA控制器完成。但EDMA代表所有16个通道只向CPU产生一个中断(EDMA_INT)[6]。各种控制器寄存器和位段方便EDMA中断的产生。当一个EDMA通道设置OPT寄存器的TCINT位为1,并且提供一个特定的传输完成代码(TCC)时,EDMA控制器便会设置通道中断挂起寄存器(CIPR)的某一位。

编程设置的TCC值指定被置位的CIPR位数,最后向CPU产生的EDMA_INT信号。为了实现这些操作,通道中断使能寄存器(CIER)的CIEn位设置为1,OPT寄存器的TCINT位设置为1,TCC位设置为n。

EDMA控制器能够跟踪EDMA通道传输的完成,并按照指定的传输完成代码设置CIPR的合适位。CPU的ISR将会读取CIPR并决定通道是否已经完成,并执行那些必要的操作。当服务器中断时,ISR会清除CIPR中的位,从而能进一步识别中断。

2.3 EDMA实现McBSP与外设之间的数据传输

在视频数据信号的传输和处理过程中,CPU数据处理必须与EDMA数据传输保持同步,也就是要保证在CPU访问之前EDMA把数据传输到缓冲区中,而在EDMA输出数据之前CPU完成缓冲区中的数据处理[7]。CPU数据处理与EDMA数据传输的同步可以采用Ping_pong双缓冲技术来实现。实现方法如下[8]:在片内存储器L2中开辟两个大小相同的缓冲区Ping_buffer和Pong_buffer,两个缓冲区轮流交替工作。当EDMA传输数据到Ping_buffer时,CPU处理Pong_buffer中的数据;当CPU和EDMA操作完毕,Ping_buffer和Pong_buffer缓冲区互换,EDMA继续传输数据覆盖Pong_buffer中的数据,CPU处理Ping_buffer中的数据。

Ping_pong双缓冲区操作可以通过EDMA的连接来实现。EDMA的连接功能将不同的EDMA传输控制参数连接在一起,组成一个参数链,为同一个通道服务。在实现Ping_pong缓冲技术时,EDMA完成一次数据传输任务时,产生中断通知CPU处理新的数据。设置ping和pong参数组选项参数的连接使能为1,中断使能位为1,这样,在等待EDMA完成数据传输时,CPU可以继续处理后台事务。当FIFO满标志IR发生事件,发送中断信号启动ping将数据搬移到Ping_buffer,则Ping_buffer的FFT运算将由CPU在ping通道中断服务程序中完成,同时,EDMA利用初始化功能从参数RAM中加载pong参数组,将数据搬移到Pong_buffer中,CPU在Pong通道完成中断服务程序中对Pong_buffer中的数据的FFT运算并连接ping通道,如此循环,使系统数据搬移和处理能连续进行。

3 结束语

大批量的图像数据传输和复杂算法的处理一直是高速数字图像处理器的瓶颈,利用DSP的EDMA功能可以在不中断信号处理器工作的同时完成图像数据的搬移,极大地提高了系统的并行性能。

[1] Texas Instruments,TMS320DM644x DMSoC Enhanced Direct Memory Access(EDMA)Controller.2008:67-89.

[2] Texas Instruments,TMS320C6000 DSP Cache User’s Guide.2003:24-77.

[3]于凤芹,张庆荣,吉训生,等.TMS320C6000结构原理与硬件设计[M].北京:北京航天航空出版社,2008:65-67.

[4]刘向宇.DSP嵌入式常用模块与综合系统设计实例精讲[M].北京:电子工业出版社,2009:126-140.

[5]TMS320C6713 Fixed-point Digital Signal Processor Data Manual[M].TI Corporation,2004:203-278.

[6]李方慧,王飞,何佩琨.TMS320C6000系列DSPs原理与应用[M].北京:电子工业出版社,2003:390-408.

[7] Texas Instruments Incorporated Applications using the TMS320C6000 enhanced DMA[R].2006:103-270.

[8]Applications Using the TMS320C6000 Enhanced DMA[M].TI Corporation,2001:121-199.

猜你喜欢

缓冲区寄存器存储器
静态随机存储器在轨自检算法
Lite寄存器模型的设计与实现
常用电子测速法在某数字信号处理器中的应用*
移位寄存器及算术运算应用
缓冲区溢出漏洞攻击及其对策探析
初涉缓冲区
存储器——安格尔(墨西哥)▲
本期导读
Linux系统下缓冲区溢出漏洞攻击的防范
Buffalo推出四硬盘网络存储器 主打Soho一族