分类: 嵌入式
2014-08-02 22:08:43
目前H.264编码系统的实现主要有四类解决方案,分别是基于ARM平台方案、专用视频编码数字信号处理器(Digital Signal Processor,DSP)平台方案、专用集成芯片(Application Specific Integrated Circuit, ASIC)平台方案和现场可编程门阵列(Field Programmable Gate Array, FPGA)平台方案。
由于ARM平台方案的开发周期较短,因而目前基于ARM平台的H.264编码器解决方案占有很大的市场份额。但是由于H.264标准的高度复杂,受ARM本身运算能力的制约,ARM 平台下的H.264编码系统性能不高。
基于专用视频编码DSP平台的H.264方案成本较高,而且往往需要和ARM协调配合才能完成整套编码系统。
基于ASIC方案的H.264编码方案成本较高,设计研发周期较长,购买H.264编码器的固核也需要支付昂贵的费用,而且芯片一旦成型后,所有的设计、实现方法、接口等均较难变更,基本上不可能满足可编程性⑴。
而基于FPGA平台方案与前三种方案相比,其结合了三种方案的部分优势,弥补了一些固有的不足。FPGA方案的可编程可升级性能力大大降低了系统集成商在选用ASIC芯片方案时可能遇到的一些后期风险,同时FPGA接近ASIC的强运算能力则又弥补了 ARM方案在编码性能上的瓶颈,而且片上系统(System on Chip, SoC)技术使得系统实现更加灵活。
对H.264编码模块的FPGA实现和嵌入式平台上的H.264编码系统的实现,研究内容主要参考国内外核心期刊最近三年的论文,以把握最新的研究动向。
对于H.264编码模块的FPGA实现,近年来国内外学者也做众多相关的研究。
2011年,西安电子科技大学的吴硕详细分析了 H.264基本档次中的离散余弦变换与量化、基于上下文自适应可变长编码两个部分,并利用FPGA完成了变换量化及熵编码模块的Verilog HDL代码设计及仿真验证,但距离整个编码系统的FPGA实现仍有相当距离,大量工作留待后续完成[2]。
2011年,武汉大学的罗军、黄启俊、常胜等人完成了 H.264中的整数离散余弦变换及量化算法的实现,并用ALTERA公司的Cyclone II系列FPGA实现了硬件验证测试[3]。设计方案最高工作时钟频率为84.88MHz,可在一个时钟周期之内完成对一个4X4矩阵数据的变换量化处理,可满足高速高吞吐量数据流处理的要求。
2012年,杭州电子科技大学的刘斌、何剑锋和孙玲玲等人在FPGA上实现了流水线结构的H.264 DCT硬件电路[4]。除了常规地把二维4X4 DCT变换转换成二次一维DCT变换,该设计还在DCT变换之间加一个两端口的RAM,以实现数列的转置。该设计釆用较少的资源实现了较好的功能,获得了可靠的实验结果。
2012年,中国科学院光电技术研究所的孙健、任国强和李其虎等人根据哥伦布编码和解码的特点,设计了一种高速的哥伦布编解码器[5]。用查找表的方式代替了首1检测等复杂操作,直接得出要编解码码字的长度,使得指数哥伦布编解码器的关键路径变短,速度变快。并对采用了多级流水的方式提升了编码解码时钟频率。在Virtex-5平台上进行测试,结果表明,该编解码器的吞吐率均可达到 400MPixel/so
2012年,山东科技大学的任怀鲁在FPGA上构建了面向H.264编码器的SoC验证平台。釆用Wishbone总线连接32位微处理器OIU200以及其他的必要IP核构建基本SoC平台,并在此基础上集成H.264硬件编码模块;根据H.264编码器的数据流要求,设计了输入/输出宏块顺序的多端口 SDRAM控制器;移植了 uC/OS-II实时操作系统和uC/TCP-IP协议栈,用于输出编码后比特流[6]。但是,所做的工作只是设计了课验证SoC平台,并没有对H.264编码本身做任何设计和验证。
2012年,西安电子科技大学的初秀琴、吴硕、常方等人,针对H.264标准中 CAVLC(Context-based Adaptive Variable Length Coding)熵编码算法运算复杂度高、不易于实时实现的问题,提出了一种CAVLC熵编码算法高效实现的体系结构[7]。该设计提出在上游模块釆用逆Zigzag扫描替代Zigzag扫描以省去逆序操作,在不增加上游模块运算量的同时提高了 CAVLC模块的效率。在ALTERAEP2C35 FPGA上对模块测试,编码系统时钟可达147.78MHz,可以满足高清、实时应用的编码要求。
2013年,中国电子科技集团公司第五十四研究杨贵新等人提出了基于TI双核处理器DM6446为核心的应用平台,实现了 H.264编解码算法,并针对DM6446芯片的特点和H.264编解码算法自身的特点,对编码程序进行了优化[8]。测试结果表明,运行DCT处理函数需要49个时钟周期,运行iDCT处理函数需要55个时钟周期,优化效果明显,但是速度仍不足够以处理实时视频。
2010年,在第十七届电子电路与系统国际会议上,Ramos, Fabio Luis Livi等人提出了一种高吞吐量的CAVLC硬件结构[9]。所设计的硬件结构包含三级流水线,并在扫描数据的同时,完成处理两个系数,对两个耗时最多的语法元素Level和Runbefore进行并行处理。硬件结构最终在Xilinx Virtex-5 FPGA上综合并得到验证,测试对1080p的高清视频实现115 fps的编码速度。
2011年,在第七届多功能系统、信号与设备国际会议上,S. Sinaou,H.LoukilJ,A. Ben Atitallah, N. Masmoud等人提出的一种优化的H.264帧内4X4的算法,改变了传统了顿内4X4预测的顺序,并用了流水线结构,减少巾贞内4X4预测时间。算法最终在ALTERA EP2S60 FPGA加以实现[19]。
2011 年,Jos6 Porfirio A. de Carvalho, Ricardo Jacobi e Pedro de A. Berger 等人.,提出了 一种基于 CABAC(Context-based Adaptive Binary Arithmetic Coding)解码新的架构与优化,同时支持H.264 1080P视频解码[11]。该架构在FPGA上得到验证,在75 MHz主频下,编、解码性能可以达到33Mbin/s。但是,由于该架构实现资源较多,硬件利用率并不高。
2012年,在第25届超大规模集成电路设计国际会议上,Jimit Shah、K.S.Raghunandan和Kuuruvilla Varghese提出了 H.264解码预测巾贞的优化架构[i2]。该架构是基于多级存储器层次结构,延迟较少,资源利用率较高。所提出的架构在Xilinx XC5VLX50T FPGA平台上得到验证,测得顿速率可以达到每秒64顿,只使用了 13%的LUT(LookUpTable)。但是,所做工作只是对预测顿的优化,编码效率不够过,不能满足网络传传输要求。
读书笔记:这里可以看到验证fpga系统的若干指标,比如解码性能,硬件占用率
对嵌入式平台上的H.264编码系统的实现,国内外学者也做了相关的研究。
2009年,上海交通大学的陈信余、戎蒙恬和李萍等人将H.264编码算法中
的中贞内预测模块进行优化,同时将优化过的算法运用到开源的视频编码器X264
中,并将该编码器移植到ARM926EJ-S平台中[13】。测试表明,优化过后的x264
在ARM926EJ-S平台上的编码速度提高了一倍,但是对于QCIF(;i76X 144)格式视频文件编码速度仍只有2FPS。
2010年,西安电子科技大学的孙雪雁使用视频编解码芯片MB86H51设计了一套H.264编解码系统,并且使用FPGA搭建出一个系统平台,使MB86H51芯片完成以DVI作为视频输入输出接口的H.264编解码功能[14]。虽然这套H.264编解码系统达到了较高实时性的要求,但是整个系统重点仍是对MB86H51芯片的控制和使用上,FPGA仅仅完成了数据调度和MB86H51配置。
2011年,北京邮电大学的王天时、别红霞使用TI公司的DaVinci系列处理器构建了 H.264编码传输系统[15]。利用高集成度视频处理芯片TMS320DM6446进行H.264编码,ARM核进行编码数据传输,实现了视频流网络传输技术。
2012年,浙江大学的吕明洲和陈耀武使用含有高清视频图像协处理器(High
Definition Video Image Co-processor, HDVICP)子系统的 TI 异构多核TMS320DM6467处理器实现了高清视频的H.264编码[i6]。使用HDVICP内部的7个针对多种视频编解码标准而设计的加速引擎(边界强度计算引擎、变换量化引擎、熵编码引擎、顿内预测估计引擎、环路滤波引擎、运动补偿引擎、运动估计引擎)实现了 H.264中编码的并行加速,实际测试对1080P高清视频的编码速度可以达到30fps。
2010年,在消费类电子产品国际研讨会上,来自新加坡南洋理工大学的VimN,Ansary M.等人展示了如何在TI达芬奇DM6446评估板DVEVM上构建了幵源RTSP多媒体服务器LIVE555,将H.264编码后的视频流打包,实现以太网传输【17]。
2013 年,I-Shou University 的 Wang C C, Wang H C, Tsai Y C 等人基于 ADIBF548 DSP上设计了一种高效的H.264编码器[18]。他们对全零系数的整数DCT和量化提出了优化改进算法,提高编码速度,并对DMA和两级缓存进行优化。测试结果表明,对QCIF(176X 144)格式视频的编码速度可以达到30Q)s。
2013 年 Anna University 的 P. NirmalKumar、MiiraliKrishnan E 和Gangadharan E.等人提出一种结合DSP硬件平台与FPGA协处理器架构的H.264编解码器的设计[19]。其中基于FPGA协处理器设计完了 H.264的运动估算、运动补偿模块,能够更好的实现控制逻辑,提高帧速率,支持高清分辨率的视频编码。但是没有充分发挥FPGA在SoC设计上的优势,DSP部分完全可以由嵌入式微处理器实现。
由上述国内外研究现状可知,由于H.264标准复杂,对于H.264编码模块的FPGA实现,大部分研究仍停留在部分模块的实现,或者模块的优化上。虽然有少数学者在FPGA平台上实现了 H.264编码系统的部分功能,但无公幵发表文献说明如何在FPGA平台上完整地实现H.264标准的全部编码功能。
而嵌入式平台的H.264编码系统实现,大多数都是基于DSP平台或者ARM平台上,也有使用专用的编码芯片,而在FPGA上实现整套编码系统依旧较少。FPGA处理速度相对于软件处理算法的速度有很大的提升,能更好地解决数据处理过程地实时性问题。同时n>核设计灵活性大、可移植性强,硬件SoC设计方案的优势很明显,所以H.264编码IP核设计和基于FPGA平台的H.264编码系统实现意义重大。
作为现阶段使用范围最广、编码性能最好的视频编码,H.264编码仍旧是众多课题的研究热点。基于FPGA的H.264编码系统设计方案具有很强的可编程性和高效的编码能力,相关技术还处于起步发展阶段。所设计实现的H.264编码IP核可重复使用,符合SoC设计潮流;所构建的编码系统为后续算法改进和测试提供了平台,拥有广阔应用价值。
本章主要从国内和国外两方面介绍H.264编码的研究现状,研究参考了国内外核心期刊最近三年的论文,并提出本设计的研究意义。下面是全文的组织结构:
第1章:绪论。介绍H.264编码的研究背景,国内外研究现状及研究意义。
第2章:相关知识介绍。介绍了视频编码技术原理和性能评估标准,介绍了
H.264标准和H.264编码的基本框架,对H.264编码的原理和实现过程进行了详
细的阐述,同时介绍了 AMBAAXI总线协议和系统所需要的硬件平台ZedBoard。
第3章:总体设计。概述了系统功能、性能要求和系统的层次分析,将桢内预测编码模块进行划分、优化,给出各模块的设计方案。最后给出了系统设计的方案。
第4章:基于FPGA的H.264编码模块实现。详细阐述了顿内亮度预测模块、帧内色度预测模块、整数DCT变换模块、哈达玛变换模块、量化模块、逆整数DCT变换、逆量化模块、CAVLC摘编码、有符号Exp-Golumb熵编码、重建模块等模块的实现。
第5章:基于FPGA的H.264编码系统实现。设计了基于AXI-Stream接口的H.264编码IP核,并构建编码SoC系统,移植了 Linux操作系统,设计了 Linux下的H.264编码IP的驱动;同时完成了 USB摄像头设备,实现视频的采集;编写的QT界面,移植了 QT运行库,实现视频的动态显示;最后介绍了整个编码系统的软件实现,完成了整套的视频采集、动态显示、编码和存储系统。
第6章:测试和性能分析。针对设计的H.264编码模块,从模块功能角度,使用ModdSim对其一一进行功能仿真,并使用Xilinx ISE测试模块最大工作频率Fmax,从理论上推断编码性能;对在ZedBoard平台上所实现的H.264编码系统的编码功能、编码性能进行测试,得出测试结论。
第7章:总结与展望。总结课题所做研究工作,指出不足以及待完善的地方,
并对下一步的工作予以展望。
信息量很大,谢谢作者的整理。读书笔记待展开。