基于 DSP 的视频算法系统优化若干策略

发布者:平静心境最新更新时间:2011-11-01 关键字:视频算法  DSP 手机看文章 扫描二维码
随时随地手机看文章

数字视频产品需求近些年出现猛增。主流应用包括视频通信、视频监控与工业自动化,而最热门的要算娱乐应用,如 DVD、HDTV、卫星电视、标清(SD)或高清 (HD) 机顶盒、数码相机与 HD 摄像机、高端显示器(LCD、等离子显示器、DLP)以及个人摄像机等。这些应用都向高质量的视频编解码算法及其标准提出巨大需求,目前主流压缩标准主要有MPEG2、MPEG4和H.264/AVC,而针对这些编解码标准有各种各样的实现方案。本文主要探讨基于TI 的C64系列DSP的视频解码算法标准系统优化过程中需要考虑的若干因素。

        TI的C64系列DSP以其强大的处理能力被广泛用于视频处理领域,然而由于大家对C64系列DSP的结构、指令、的理解程度不一样,造成算法实现时的效果有许多的差异。具体体现在实现算法时所使用的CPU的资源上。如实现H.264 MP@D1解码时所占用CPU的资源上,会有所差异,或者是所包含的算法工具子集上,如实现H.264 MP@D1解码时使用CAVLC而不使用CABAC。造成这些差异,主要原因有如下因素:

算法关键模块的优化
算法系统集成时Memory的管理
算法系统集成时的EDMA的资源分配管理
本文从这三方面逐步探讨算法优化集成中需要考虑的若干因素。

算法关键模块的优化

        一般而言,对于目前主流视频解压缩标准都有类似的很消耗DSP CPU的模块,如H.264/AVC、MPEG4、AVS等编码中运动矢量搜索很占用资源,而且这些模块在整个系统实现过程中调用相当频繁,因此我们首先找出这些模块,这点TI的CCS提供了工程剖析工具(Profile),可以很快找到整个工程中占用DSP CPU资源最多的模块;然后对这些模块进行优化。

        对这些关键算法模块的优化我们分可以分三步进行,如图2所示,先认真分析这部分代码,并进行相应的调整,如尽量减少有判断跳转的代码,特别是for循环中,判断跳转会打断软件流水。使用的方法,可是使用查表或者使用_cmpgtu4、_cmpeq4等Intrinsics来代替比较判断指令,从而巧妙替代判断跳转语句。同时使用TI的CCS中所提供的#pragma提供编译器尽量多的信息,这些信息包括for循环的次数信息、数据对齐信息等。如果经过这部分优化无法满足系统要求,则对这部分模块使用线性汇编实现,线性汇编是介于C和汇编之间的一种语言实现形式,可以控制指令的使用,而不必特别关心寄存器、功能单元(S、D、M、L)的分配和使用,使用线性汇编一般会比使用C语言具有更高的执行效率。如果线性汇编还无法满足要求,则使用汇编实现,要编写出高并行、深软件流水的汇编需要经过画相关图,创建时序表(Scheduling table)等步骤,由于篇幅所限,这里就不熬述。


表1


        优化选项:-pm, -o3,基于C64plus内核,C+Instrinsics 是指在C中使用Instrinsics。

        表1是运动搜索中所需要的计算16×16宏块SAD值时,不同方式下所消耗的DSP CPU的周期数。由此可见,汇编实现所消耗的CPU的周期数最少,但前提是需要充分了解DSP CPU的结构、指令以及算法模块的结构,从而能够编写出高并行、深软件流水的汇编,否则有可能所写出的汇编还没有线性汇编或者C效率更高。为此一个行之有效的方法是,充分利用TI所提供的算法库中的函数,因为算法库中的函数都是已经充分优化过的算法模块,而且大都提供对对应的C、线性汇编和汇编源代码,并有文档进行API介绍。

算法系统集成时Memory的管理

        由于在基于DSP的嵌入式系统开发中,存储资源特别是片内高速存储资源有限,在算法系统集成时Memory的管理对于提高整个系统的优化是非常重要的,这一方面影响数据的读取、搬移速度;另一方面还影响Cache的命中率,下面分程序和数据两方面分析。

        程序区:最大原则是将经常调度使用的算法模块放片内。为做到这点,TI的CCS中提供了#pragma CODE_SECTION,可以把需要单独控制存放的函数段从.text段中独立出来,从而在.cmd文件中对这些函数段进行单独物理地址映射。还可以使用程序动态的方式,将需要运行的代码段先调度进片内memory,如H.264/AVC中CAVLC和CABAC两个算法模块具有互斥性,因此可以将这两个算法模块放在片外而且对应于片内同一块运行区,在运行其中某一个算法模块之前,先将其调入片内,从而充分利用片内有限的高速存储区。程序区的管理考虑到一级程序Cache(L1 P)的命中率,最好将具有先后执行顺序的函数按地址先后顺序配置在

        程序空间中,同时对代码比较大的处理函数将其拆分成小函数。

        数据区:在视频标准编解码中,由于数据块都很大,如一帧D1 4:2:0的图像有622k大小,而且在编解码中都需要开3~5帧甚至更多的缓冲帧,因此数据基本上无法在片内存放。为此在系统的Memory优化管理中,需要开C64系列DSP的二级Cache(对于TMS320DM642用于视频编解码中二级Cache开64k的情况比较多)。同时最好将放片外的被Cache所映射的视频缓冲区的数据以128 byte对齐,这是因为C64系列的DSP的二级Cache的每行大小为128 byte,以128 byte对齐有利于Cache的刷新和一致性维护。

算法系统集成时的EDMA的资源分配管理

        由于在视频处理中,会经常有块数据的搬移,而且C64系列DSP提供了EDMA,逻辑上有64个通道,因此对EDMA的配置使用对优化系统是非常重要的。为此可以使用下述步骤进行充分配置系统的EDMA资源。

1. 统计系统中各种需要使用EDMA的情况及其大概需要占用的EDMA物理总线的时间,如表2所示:

注意:该表针对视频通过视频端口(Video Port)(720*480,4:2:0,30Frame/s),音频通过McBSP(采样率为44k)进入DSP,压缩好的数据数率在2Mbps左右,数据通过PCI每488uS输出一个128byte的包(PCI口工作频率为33MHz),外挂SDRAM的时钟频率为133MHz,只做一个参考应用例子。

2. 统计好这些信息后,需要依据系统对各种码流实时性、及其传输数据块大小对各个被使用的EDMA通道进行优先级分配。一般而言,由于音频流传输块小,因此占用EDMA总线的时间短,而视频传输块比较大,占用EDMA总线的时间较长,因此将输入音频所对应的EDMA通道的优先级设定为Q0(urgent),视频的优先级设定为Q2(medium),输出码流所对应的EDMA通道的优先级设定为Q1(high),音视频算法处理中所调度的QDMA的优先级设定为Q3(low)。当然这些设定在真正系统应用中可能还需要调整的。

实际的基于TI DSP视频算法优化集成过程,会是基于图1所示的步骤,先初步配置Memory,并选择相应编译优化选项,如果编译的结果已经可以达到实时性要求之后就结束后面的优化;否则开始优化Memory和EDMA的配置,从而提高对Cache和内部总线的利用率;如果还无法达到要求则通过剖析整个工程确定消耗CPU资源最高的代码段或者函数,对这些关键模块进行优化,采用线性汇编、甚至汇编直到整个系统可以满足要求为止。

 

关键字:视频算法  DSP 引用地址:基于 DSP 的视频算法系统优化若干策略

上一篇:赛灵思继续以创纪录的速度投放7系列FPGA
下一篇:基于DSP控制的数字移相器—变压变频器模块的设计

推荐阅读最新更新时间:2024-05-02 21:41

ISSCC上工程师比拼数字无线电
  通过集成无线电器件以降低手机成本是ISSCC(国际晶体管电路讨论会)上一大主题。当其他人正在展示去除外部被动器件的技术时,几家大的手机芯片制造商在ISSCC上描述了他们目前的集成式数字RF器件。   Broadcom、Infineon和TI展示他们最新的器件,这些器件将更多的射频工作纳入2.5G数字器件上,典型的是与基带处理器集成。另外,Broadcom和前ADI手机射频小组(现属于联发科)描述了去除3G手机设计中被动器件的方法。   这些“非常昂贵的SOC开发”部分是受到进入新兴巨大市场的刺激,TI技术人员Bob Staszewski说。   在成熟的市场,诸如芬兰、台湾和香港已经100%饱和,所以持续的增长都依靠进入
[焦点新闻]
利用以太网硬件在环路实现高带宽DSP仿真方案
通常情况下,在设计基于FPGA的大型信号处理系统的时候,设计人员往往需要进行费时费力的 仿真 。以Xilinx System Generator for DSP为代表的FPGA设计工具,通过提供可靠的硬件在环接口(该接口可以直接将FPGA硬件置入设计仿真),来解决这种问题。 通过在硬件上模拟部分设计,这些接口可以大大提高 仿真 的速度——通常可以提高一个甚至多个数量级。使用硬件在环还可以让设计人员实时进行FPGA硬件调试和验证。 System Generator for DSP 可以为多类FPGA开发平台提供硬件在环接口。这些平台通常通过不同的物理接口和PC建立通信。举例来说,一个JTAG协仿真接口可以允许任何一个具备JTAG头和
[电源管理]
利用以太网硬件在环路实现高带宽<font color='red'>DSP</font>仿真方案
基于DSP的双电动机同步控制平台设计
  1 双电动机同步控制系统   控制对象为两台三相直流无刷电动机,额定功率为3 kW,额定转速为1 500 r/min,主要用在需要同步行走的场合,控制两台电动机同步行走。   直流无刷电动机的控制系统主要由控制部分、驱动及逆变电路部分、转子位置检测及电流采样电路构成。其中,以TMS320F28335为核心的控制部分负责控制运算、模拟采样等任务;驱动电路将控制电路输出的弱电信号进行功率放大,输出具有一定驱动能力的强电信号去控制逆变电路的开关管工作,实现将直流电逆变转换供给电动机,达到对电动机的控制目的;位置检测部分检测电动机转子信号,并送给控制部分处理;电流采样部分完成对直流电源母线电流的检测。整个系统外围器件少,减小了设计难
[嵌入式]
VK3214在DSP串口扩展中的应用
  DSP (数字信号处理器)芯片是一种特别适合于进行数字信号处理运算的微处理器件,由于其强大的数据处理能力和高效的运行速度,其应用越来越广泛。但是它的另外一个特点是配备的串行口不多,而目前很多芯片采用串行口进行通信,因此为了与多个芯片进行通信,需要对串口进行扩展。本文利用 VK3214 串口扩展芯片,很好地解决了这个问题。    VK3214 的功能特点    VK3214 是四川维肯公司研制的4通道UART异步收发器,可以实现4个串口的扩展,其功能特点如下:(1)主串口为标准的三线UART串口(RX,TX,GND),无需其它地址信号、控制信号线, 可编程波特率设置,最高速度可以达到1M bit/s,可选择的奇校验,偶校验
[嵌入式]
8051、ARM和DSP指令周期的测试与分析方法
在实时控制系统中,选择微控制器的指标时最重要的是计算速度的问题。指令周期是反映计算速度的一个重要指标,为此本文对三种最具代表性的微控制器(AT89S51单片机、ARM7TDMI核的LPC2114型单片机和TMS320F2812)的指令周期进行了分析和测试。为了能观察到指令周期,将三种控制器的GPIO口设置为数字输出口,并采用循环不断地置位和清零,通过观察GPIO口的波形变化得到整个循环的周期。为了将整个循环的周期与具体的每一条指令的指令周期对应起来,通过C语言源程序得到汇编语言指令来计算每一条汇编语言的指令周期。 1、 AT89S51工作机制及指令周期的测试 AT89S51单片机的时钟采用内部方式,时钟发生器对振荡脉冲进行
[单片机]
8051、ARM和<font color='red'>DSP</font>指令周期的测试与分析方法
DSP FPGA 实时信号处理系统
实时信号处理系统要求必须具有处理大数据量的能力,以保证系统的实时性;其次对系统的体积、功耗、稳定性等也有较严格的要求。实时信号处理算法中经常用到对图象的求和、求差运算,二维梯度运算,图象分割及区域特征提取等不同层次、不同种类的处理。其中有的运算本身结构比较简单,但是数据量大,计算速度要求高;有些处理对速度并没有特殊的要求,但计算方式和控制结构比较复杂,难以用纯硬件实现。因此,实时信号处理系统是对运算速度要求高、运算种类多的综合性信息处理系统。   1 信号处理系统的类型与常用处理机结构 根据信号处理系统在构成、处理能力以及计算问题到硬件结构映射方法的不同,将现代信号处理系统分为三大类:   ·指令集结构(ISA)系统。在由各种
[嵌入式]
采用集成DSP与微处理器内核的嵌入式应用
嵌入式应用包括信号处理算法与控制算法,在多种实时嵌入式系统中,这两种算法共同执行必需的功能,因此我们应了解控制算法与数字信号处理器 (DSP) 算法是如何实现互操作性的。在手机和 MP3 播放器等应用中,要解决上述互操作性问题,传统做法是分别用 RISC 处理器和DSP来处理控制算法与信号处理算法。例如,在手机中,信号处理功能负责处理音视频应用中的回声消除与编解码工作。由于DSP 架构是专门设计用于执行信号处理算法的,因此信号处理算法在 DSP 上的 运行效率很高;而手机中的控制软件则负责执行状态机,即控制用户界面、键盘及其它非信号处理功能。 开发包括信号处理与控制算法且要求这两种算法间实现互操作性的嵌入式应用时,我们要面临几大挑
[应用]
TMS320LF240x DSP控制器的应用实践
引 言 TI公司在1982年成功推出其第一代DSP芯片之后,相继推出了多种适合不同应用、不同规格的DSP系列。TMS320F240x DSP是为了满足控制应用而设计的,属于TMS320C2xx系列。通过把一个高性能的DSP内核和微处理器的片内外部设备集成在一个芯片的方案,TMS320LF240x DSP成为传统微控制器和昂贵的多片设计的一种廉价替代产品。3OMIPS的处理速度,使TMS320IF240x DSP可以远远超过传统的16位微控制器和微处理器的性能。笔者曾用该系列芯片中的TMS320F2406开发过电动执行机构,得到了满意的结果。结合自己的开发经验,笔者简要介绍TMS320LF240xDSP的硬件结构、C程序开发过
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved