依据图3编码流程,level编码所需的时钟周期与TC和T1之差有关,不同的数据块所需的时钟周期不同,而编码前需经过扫描和统计。当非零系数较多时,level编码采用传统的串行方式所需的时钟周期可能比统计模块所耗要多,导致不稳定的吞吐量。另一方面,获得level的码字需知道该系数的 prefix、suffix以及levelsuffixsize,而levelsuffixsize的大小是自适应变化的,与上一个已编码系数的绝对值大小有关,这给并行处理带来了一定困难。为此,采用并行处理和两级流水线相结合的结构并行处理2个非零系数,如图4所示。第一级初始化 suffixlength,求coeffs的绝对值及中间变量levelcode;第二级更新suffixlength,计算prefix,suffix 和levelsuffixlength。模块coeffs SIPO buffer实现串行输入并行输出,输入输出关系如图5所示。
3 实验验证分析
Level编码电路结构采用Verilog HDL语言描述,在ModelSim SE 6.0上进行仿真,使用Synplicity公司的Synplify Pro完成综合过程。最后采用Xilinx公司VirtexⅡ系列的xc2v250 FPGA进行实现和验证。
图6给出了ModelSim的仿真波形,其结果与JVT校验软件模型JM16.2[7]的值一致。从图6可以看出,并行编码TC-T1个level值比串行方式节省(TC-T1)/2个时钟周期,当非零系数较多时,也能获得稳定的吞吐量。表1给出了Synplify Pro综合的硬件资源报告。系统允许的最高时钟频率为158.1 MHz,硬件资源消耗如表1所示。综上所述,本设计满足H.264实时高清视频编码的要求。
参考文献
[1] Joint Video Team(JVT) of ISO/IEC MPEG and ITU-T VCEG.Draft ITU-T RecommendaTIon and Final Draft International Standard of Joint Video Specification(ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC)[S].JVT-G050r1,FaiRFax,VA,2003.
[2] ANTHONY J,FAOUZI K,HEIKO S,et alo.Performance comparison of video coding standards using lagrangian coder control[J].IEEE Int.Conf.on Image Processing,2002:501-504.
[3] THOMAS W,GARY J.SULLIVAN,GISLE Bj,AJAY L. Overview of the H.264/AVC video coding standard[J].IEEE Trans.on Circuits and Systems for Video Technology,2003,13(7):560-576.
[4] CHEN Tung Chien,HUANG Yu Wen,TSAI Chuan Yung,et al.Architecture design of context-based adaptive variable-length coding for H.264/AVC[J].IEEE Trans.Circuits Syst.II,2006,53(9):832-836.
[5] LEE W,JUNG Y,LEE S,et al.High-speed CAVLC encoder for H.264/AVC using parallel zig-zag scanning[J].IEEE Electronics Letters,2009,45(24):1226-1227.
[6] ITU-T,H.264.Advanced Video Coding for Generic Audio visual Services,2007.
[7] JointVideoTeam(JVT)referencesoftware,2009[Online].Available:http://iphome.hhi.de/suehring/tml/download/jm16.2.zip.