积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> DSP >> 算法
  相关分类: 应用论文 | TI DSP | 新产品 | 算法 | 下载 | DSP代码示例 | ADI DSP | freescale DSP |
基于DSP的视频算法系统的优化策略
 
作者:王华斌,丁刚,德州仪器   来源:电子系统设计    点击数:421   更新时间:2008-3-10
您可以添加到网摘 让更多人关注此文章:

    

近年来,对数字视频产品的需求增长迅速。数字视频产品的主流应用包括视频通信、视频监控与工业自动化,最热门的则为娱乐应用,如 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。

造成这些差异的主要原因有:算法关键模块的优化;算法系统集成时内存的管理;算法系统集成时EDMA的资源分配管理。本文将从这三方面探讨算法优化集成过程中需要考虑的因素。

算法关键模块的优化

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

对这些关键算法模块的优化可以分三步进行。如图1所示,先认真分析这部分代码,并进行相应的调整,例如尽量减少有判断跳转的代码,特别是在for循环中,因为判断跳转会打断软件流水。可以用查表或者用_cmpgtu4、_cmpeq4等Intrinsics来代替比较判断指令,从而巧妙地替代判断跳转语句。同时还可以采用TI的CCS中所提供的#pragma,为编译器提供尽量多的信息。这些信息包括for循环的次数信息、数据对齐信息等。如果经过这部分优化后还无法满足系统要求,则对这部分模块使用线性汇编来实现。

线性汇编是介于C和汇编之间的一种语言实现形式,可以控制指令的使用,而不必特别关心寄存器和功能单元(S、D、M、L)的分配和使用。使用线性汇编一般会比使用C语言具有更高的执行效率。如果线性汇编无法满足要求,则使用汇编实现。为编写高并行、深软件流水的汇编,需要经过创建相关图、时序表(Scheduling table)等步骤,由于篇幅所限,这里就不再讨论。

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







点击放大
图1:基于TI DSP的视频算法关键模块的优化步骤(左);图2:基于TI DSP的视频算法的优化集成过程(右)。

算法系统集成时内存的管理

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

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


[1] [2]  下一页



相关文章
· 基于 TPS54310的雷达视频信号模拟器的电源设计[12]
· 基于DSP+μC/OS-Ⅱ的励磁系统的研究[45]
· 基于DSP+μC/OS-Ⅱ的励磁系统的研究[46]
· 基于ADSP-BF533的μClinux嵌入式系统移植与开发[82]
· TMS320C54x代码在OMAP5910上的实现[149]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
ARM联手IBM等三家公司开发32n
Hitachi Elect
中国芯片供需缺口达七成
西班牙研发出视觉鼠标 眨眼
首条OLED生产线昆山投产 
宇航服电子元器件:航天员的“生命保护
美研发出可卷曲太阳能电池
美国研发嗅觉感受器获新进展 
首尔半导体就日亚(NICHIA)专利
MIPS 科技授权国家集成
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
写给迷茫中的嵌入式新手...
Arm/DSP/FPGA的比较...
Arm/DSP/FPGA的比较...
Arm/DSP/FPGA的比较...
[分享]逆变器的买与用...
[分享]电力系统直流电源装置的...
单片机如何控制TFT真彩色LC...
请教:2051的C程序...
中国为何没有世界级的企业和企业...
AVR的EEPROM,到底怎么...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网