发布时间:2010-11-14 阅读量:1009 来源: 我爱方案网 作者:
图 1 监控系统框架图
在远程监控端,摄像头,录像机等视频采集模块采集图像数据,然后经远程端的MPEG-4视频编码模块进行实时编码,将视频数据转化成符合MPEG-4标准的比特流并通过网络传输到本地监控端。在本地监控端,视频解码模块将接收到的比特流解码转化,恢复出原来的图像数据,并交由视频显示模块显示。同时,本地监控端的控制模块可以对系统各模块进行参数配置和运行调整,包括视频采集、编解码、显示模块的制式选择,帧率设定,网络手动调整等。
3. 实现方案
传统视频监控系统普遍以PC机或工作站为平台,全软件实现系统的视频编解码、网络传输等功能,这类系统往往存在系统配置要求过高等弊端。本系统在PC平台MPEG-4简单框架基础上,将远程监控端的编码模块代码移植到DSP芯片上,在DSP硬件平台上完成视频编码,而解码模块的本地监控端仍然采用在PC机的软件平台实现。这样同时实现了监控实时高效和控制灵活的特点,并提高了系统开发速度。
我们选用TMS320C6205 DSP[1]芯片来做编码芯片,它是TI公司推出的高性能定点DSP,其时钟频率为200MHz,采用超长指令字结构(VILW),8个32bit指令字组成一个总字长为256bit的指令字包,这样程序的并行运算能力可以做到8条同时运行。C6205 DSP主要由CPU(DSP核)、片内存储器和外设三部分组成。CPU(DSP核)主要包括两组寄存器和8个功能单元,每组寄存器包括16个32位的通用寄存器。片内存储器采用的是程序寄存器和数据寄存器分开的哈佛结构,程序寄存器和数据寄存器各为512Kb大小。外设主要有外部存储器接口(EMIF)、直接存储器访问(DMA)、低功耗逻辑、串口、扩展总线、主机口以及定时器。
4. 优化设计
4.1 初始软件优化
本系统所包含的MPEG-4编解码模块软件部分,是根据MPEG-4 14496-2视频部分的简单框架[2]参考代码进行优化和整合而成。首先是对C语言参考代码做以下的修改与优化。
(1)修改视频数据交换方式,由原来的硬盘事先录制视频方式转换成实时内存视频交换方式。MPEG-4参考代码的编码器是针对事先已经录制好的视频内容进行编码,继而进行解码,这显然不能满足实时监控的要求;另外由于是以硬盘存储方式进行中间数据交换,而硬盘数据交换的速度有限,从而限制了编解码器的编解码速度。仅经过这一步修改后的视频编解码系统在同一系统条件下,编解码速度获得极大提高。
(2)运算集中的功能块运用快速算法。如在视频编码中,被2000年MPEG Noordwijkerhout会议采纳为优化算法的运动向量场适应搜索技术 (MVFAST)[3]的快速运动估计算法,能同时保证很高的图像质量和搜索速度。另外,图形图像中常用的DCT变换,也采用广泛应用的整数DCT快速算法,把浮点运算转换成整型数据运算,降低运算复杂度。实验证明,在保证图像质量几乎不变的情况下,这些快速算法大大降低运算复杂度,进一步提高编解码效率。
(3)优化源代码,去除在简单框架中特别是本远程监控系统中不需要的参数、结构体和函数等。优化源代码以减小代码执行时间和代码大小,如去除不必要的数据移动和条件判断及跳转,并尽量使用简单运算指令而避免使用复杂数学运算,如用移位操作和位逻辑操作替代部分的除法(/)、乘法(*)、模运算(%)、比较运算等。对实现同一功能的重复函数进行合并,去掉不被用到的数据空间。在本远程监控系统中,没有用到MPEG-4的Alpha图像通道、B编码方式和图像增强层,从而相应的参数和函数都可以去除,从而获得最终远程监控系统中所需的最小功能模块集。
4.2 利用硬件特性优化
为了进一步提高系统性能,我们要充分发挥C6205的运算能力。因此优化必须从它的硬件结构出发,最大程度的利用八个功能单元,使用软件流水线,尽量让程序无冲突地并行执行。
(1)使用库函数。TI公司对TMS320C62XX的用户提供了功能强大的IMAGE LIB库支持。在这个库中,包含许多常用函数,可以完成DCT/IDCT变换、小波变换、DCT量化、自适应滤波等功能。这些函数都是优化过的,完全能够实现软件流水,效率很高。
(2)改写线性汇编。虽然DSP芯片对C代码编译效率已经达到90%以上[4],为了提高代码的性能,我们可以对主要影响系统速度的关键代码段用线性汇编或者汇编来改写。在MPEG-4编码系统中,运动估计模块占60%以上的运算量,对运动估计算法进行线性汇编改写,对提高系统整体性能将有很大帮助。这一优化效果在后面的结果分析中给出。
(3)存储器优化。存储器优化主要是高效的利用片内存储器。DSP对不同的存储单元的访问速度是有区别的,对片内寄存器的访问速度最快,对片内存储器的访问速度比片外存储器的访问速度快10-20倍。因此合理地配置和使用存储空间,对系统整体效率影响很大。应该尽可能地把访问比较频繁的常数表和代码段装入片内RAM,如果过大,则把其中一部分装入片外存储器
(4)跳转指令优化。每个跳转指令有5个延迟间隙,因此程序执行时间延长;另外,循环内跳转也使软件流水受到阻塞。一般直接使用逻辑判断语句可以去除不必要的跳转。
4.3其它基本的优化方法和技巧
(1)充分利用C6205一次读取32位数的特点,并利用一个指令周期能读取两个数据的特点。使用字一次访问2个16位数据,将其分别放在32位寄存器的高16位和低16位字段。这样可以使程序读取数据的速率提高一倍,从而大大提高执行效率。
(2)减少指令相关性。C6000编译器如果确定两条指令是不相关的,则安排它们并行执行。比如关键字const可以指定一个变量或者一个变量的存储单元保持不变。这有助于帮助编译器减少指令不相关性,便于并行。
(3)循环展开。多重循环的特点是在优化器优化时只在最内层循环中形成软件流水,这样循环语句就不能充分利用C6的软件流水线。针对这种状况可以考虑将多重循环拆开形成一个单层循环,可以拆外层循环也可以拆内层循环,一般视具体情况而定。这样就可以充分利用优化器构成的软件流水。
最后就是利用DSP编译器CCS本身自带的编译优化选项进行优化。
5. 实验结果
本文的优化设计在CCS2.0开发环境下进行编译仿真。
单独对占系统主要运算量的运动估计算法函数进行优化仿真,以对单张1/16 CIF大小的图像作为测试对象,分别对全搜索的运动估计算法和快速运动估计算法进行了优化仿真,测试结果如下
采用好的算法和进行优化后,对运算速度的提高非常明显。
用Foreman标准序列对系统进行测试,系统运行参数如下:
制式: QCIF (176×144)
格式: YUV (4:2:0)
码率: 48,000 bps
系统平台:CCS2.0仿真编译器,Intel P4-1.5GHz, 256M SDRAM, Win2K专业版
优化前后的仿真测试结果为:
在优化后,系统帧速有了很大提高,已经能够满足实时视频监控的需求。
6. 总结
本文根据实际需求设计了基于TMS320C6205 DSP的MPEG-4数字监控系统,并从软硬件特性两方面对系统代码进行了优化,并给出了测试结果。实验结果表明优化后系统性能有了很大提升。
参考文献:
[1] 任丽香,马淑芬,李芳慧. TMS320C6000系列DSPs的原理与应用[M] 电子工业出版社 2000
[2] MPEG-4 Video Verification Model version 18.0 [S], ISO/IEC JTC1/SC29/WG11 N3908, January 2001/Pisa
[3] Prabhudev Irappa Hosur and Kai-Kuang Ma, Motion Vector Field Adaptive Fast Motion Estimation [J], Second International Conference on Information, Communications and Signal Processing (ICICS ’99), Singapore, 7-10 December 1999.
[4] Texas Instruments. TMS320C6000 Optimizing C Compiler User’s Guide SPRU187K October 2002
本期EIT探讨了从工业4.0到工业5.0的转变,以及即将实现的技术进步
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
作为我国中西部地区历史最悠久的光电领域全产业链综合性年度盛会,规模和档次逐年增加和提高,CCWPE2025又新增了多个行业组织联办单位,同时将进一步扩容和丰富论坛内容。