基于H.264的Exp-Golomb解码器ASIC设计

基于H.264的Exp-Golomb解码器ASIC设计,第1张

 

本文的研究目标是设计H.264标准中的Exp-Golomb解码器,在对其算法进行深入探讨的基础上,提出了一种高效且低成本的ASIC实现方案。

Exp-Golomb编码原理及解码算法分析

        在H.264基本规范中,除了残差变换系数采用CAVLC编码方式外,其它句法元素均使用Exp-Golomb编码。Exp-Golomb编码是一种有规则的变长编码方式,在各类视频编码标准中被广泛应用。Exp-Golomb编码基于符号的概率统计进行编码,用短码字来表示出现概率高的信息,用长码字来表示出现概率低的信息,码长与被编码数成指数对应关系,从而使总体平均码字最短。与定长编码方式相比,节省了大量存储空间。

        在H.264中采用的是0阶Exp-Golomb编码,编码规则如图1所示。
 

基于H.264的Exp-Golomb解码器ASIC设计,第2张

        Exp-Golomb码字的逻辑结构为:[M zeros][1][INFO]。其中M个0和中间的1称为前缀,INFO是M位的信息值,因此,每个Exp-Golomb码字的长度都为2M+ 1。每个索引字codenum经过编码都可以对应一个如上结构的码字,它们之间的关系是:

codenum=2M+INFO-1 (1)

        由式1可知,进行Exp-Golomb解码可先探测出码字前连续O的个数,再取出后缀,经该公式计算即可得到codenum值。在H.264中存在四种Exp-Golomb码:无符号型ue(v)、有符号型se(v)、映射型me(v)和截断型te(v)。因此,对于解出的codenum值,根据句法元素类型的不同有四种映射方式,如表2所示。根据相应描述完成映射后,输出syntax即为解码值。
 

基于H.264的Exp-Golomb解码器ASIC设计,第3张

Exp-Golomb解码器硬件结构设计

        基于以上解码算法设计的Exp-Golomb解码器硬件结构如图1所示。整个系统主要由以下模块组成:输入码流缓冲移位模块、码长检测模块、 codenum生成模块以及句法元素映射模块。系统上电复位后,首先由码流缓冲移位模块提供待解码字,然后由码长检测模块中的首一检测器探测出连续0 的个数,即时计算得出当前码长送至累加器。同时,首一检测的结果和待解码字一起送至codenum计算模块,经移位、相减得到codenum值。最后将 codenum送至四个映射单元处理,最终解码句法元素由选择器输出至寄存器。整个解码流程用一个时钟周期完成。下文将详细叙述各功能子模块的硬件结构。
 

基于H.264的Exp-Golomb解码器ASIC设计,第4张

输入码流缓冲移位模块

        输入码流缓冲移位模块是实现H.264实时解码的关键模块。由于在每个变长解码流程中,码长不可能事先确定,所以在解出码值的同时必须定位下一个码字。这就要求该模块具有快速响应和并行输出的特点。由于H.264中定义Exp-Golomb码最大码长不超过32,设计中采用两个32位寄存器,一个32位桶形移位器及一个累加器的组合来实现该功能,如图1左端所示。其中,寄存器Rn负责从外部模块读取数据,并和寄存器R1一起作为桶形移位器的输入; 在每个解码周期,桶形移位器移出已解码流的同时还要装载新的待解码流;而累加器则计数已处理码长,传送桶形移位器移位长度,判断并控制R0的读取和R1的更新。这样就为后续处理单元提供了连续不间断的码流。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2641483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存