论文部分内容阅读
基于上下文自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding, CABAC)是H.264/AVC两种可选的熵编码方案之一。相对于另一种熵编码——上下文自适应变长编码(Context-based Adaptive Variable Length Coding, CAVLC),CABAC具有更高的编码效率:在相同画面质量下,CABAC比CAVLC压缩效率提高10%-15%。另一方面,CABAC压缩效率的提高是以高复杂性为代价,若用软件进行实时解码,需要CPU具备较高的运行频率,动辄上G。因此,CABAC多以硬件加速来实现。但是,由于CABAC算法复杂,依存度较高,实现高效的CABAC硬件解码器需要克服许多挑战。本文研究了CABAC解码器原型芯片的设计与实现方法,主要贡献如下:(1)优化CABAC解码器电路面积。根据分析CABAC解码流程,提出一种新型上下文索引生成电路,将非残差部分的上下文增量单独设置成一个表,而上下文索引偏移量大部分是由逻辑电路生成,上下文索引查找表缩小到768bits,大大减小了查找表面积。(2)优化CABAC解码速率。利用电路冗余结构和电路并行性特点,将上下文索引生成模块和上下文模型存储器分别拆分成两个部分,并将概率存储器复制一份,使部分语法元素的解码能够实现流水操作,减少了流水暂停概率,提高了解码速率。利用旁路解码的特点进行旁路加速解码,在必要的时候能够每个周期解码2个旁路位或者一个规则位和一个旁路位,从而进一步提高解码器的解码速率。采用简洁的首一检测逻辑电路达到一个周期完成归一化目的。采用单一桶式移位寄存器达到连续读取变长码流功能。用标准测试码流对其进行软件仿真,仿真结果显示CABAC解码速度达到1.75cycle/bit。用一个常规CABAC解码器(采用单一的上下文指针生成电路,无流水)与优化后的解码器在性能和面积上做比较。结果显示所提构架在面积增加9.3%的情况下得到2倍的解码速度。(3)设计实现CABAC解码器原型芯片。在FPGA上设计实现了CABAC解码器原型芯片,采用Verilog语言对所提构架进行硬件实现,用EDA软件对其进行仿真,在FPGA上验证其功能,用EDA综合工具对其进行逻辑综合。本解码器被并整合到一个完整的H.264解码器中,并在FPGA原型上进行设计实现。实验结果表明,解码器最大频率达100MHz,平均解码速率达1.75 Cycle/Bin,能够满足HD1080i格式的视频的实时解码要求。在0.25微米工艺下设计实现了VLSI芯片。本解码器综合后面积为1616667.5um2,最高运行频率达到166.7MHz,当时钟为100M时动态功耗为23.8987mW,静态功耗为738.5497mW。