位置:51电子网 » 技术资料 » 通信网络

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

发布时间:2008/5/29 0:00:00 访问次数:444

  摘要:本文设计了一种适用于h.264标准的exp-golomb硬件解码器,通过在电路设计中采用桶形移位器、首一检测器等关键单元,实现了码长的快速检测和码流的连续处理,单个时钟周期内可解一个句法元素,有效减少了硬件资源的损耗。

  关键词:exp-golomb;视频解码;h.264标准

引言

  itu-t(国际电信联盟)和mpeg(运动图像专家组)联合推出了新一代视频压缩标准h.264/mpeg-4-10 avc。它在dct变换、熵编码、去块滤波等方面采用了一系列新技术,在相同的重建图像质量下比h.263和mpeg-4节约了50%的码率,在高码率应用中表现更加优越。同时,它具有良好的网络亲和性,对网络传输具有更好的支持。

  但是,在获得优越性能的同时,h.264编码和解码的计算量和复杂度均有大幅度提升。h.264算法在编码端比h.263复杂3倍以上,在解码端复杂2倍左右。对于较高分辨率的视频源,单纯依靠软件方式实现h.264视频压缩算法,往往不能胜任,尤其难以进行实时解码。因此,采用硬件方式实现h.264视频压缩算法具有重要的意义。

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

exp-golomb编码原理及解码算法分析

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

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

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

exp-golomb解码器

硬件结构设计

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

输入码流缓冲移位模块

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

码长检测模块

  该模块的主要组成部件是一个16位的首一检测器,其功能是检测出输入序列中第一个“1”之前连续“0”的个数。码长(2m+1)的获取只需将首一检测的结果与一个“1”位进行位拼接即可实现,无需额外电路。另外,考虑到响应速度和路径延时,首一检测器的设计采用分组并行探测方式,其硬件结构如图2所示。输入的16位码流分成4组,每组4位均通过一个4输入与门,得到4位输出信号后送至优先编码器1,从而判断出首“1”所在区间。同时与门的四个输出还作为选择器mux的控制信号,片选出存在首“1”的4位数据,并将其送至优先编码器2,判断出首“1”的具体位置。最后将两个编码器的输出进行位拼接即可得到首“1”前连续“0”的个数m。

codenum计算模块和句法元素映射模块

<

  摘要:本文设计了一种适用于h.264标准的exp-golomb硬件解码器,通过在电路设计中采用桶形移位器、首一检测器等关键单元,实现了码长的快速检测和码流的连续处理,单个时钟周期内可解一个句法元素,有效减少了硬件资源的损耗。

  关键词:exp-golomb;视频解码;h.264标准

引言

  itu-t(国际电信联盟)和mpeg(运动图像专家组)联合推出了新一代视频压缩标准h.264/mpeg-4-10 avc。它在dct变换、熵编码、去块滤波等方面采用了一系列新技术,在相同的重建图像质量下比h.263和mpeg-4节约了50%的码率,在高码率应用中表现更加优越。同时,它具有良好的网络亲和性,对网络传输具有更好的支持。

  但是,在获得优越性能的同时,h.264编码和解码的计算量和复杂度均有大幅度提升。h.264算法在编码端比h.263复杂3倍以上,在解码端复杂2倍左右。对于较高分辨率的视频源,单纯依靠软件方式实现h.264视频压缩算法,往往不能胜任,尤其难以进行实时解码。因此,采用硬件方式实现h.264视频压缩算法具有重要的意义。

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

exp-golomb编码原理及解码算法分析

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

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

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

exp-golomb解码器

硬件结构设计

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

输入码流缓冲移位模块

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

码长检测模块

  该模块的主要组成部件是一个16位的首一检测器,其功能是检测出输入序列中第一个“1”之前连续“0”的个数。码长(2m+1)的获取只需将首一检测的结果与一个“1”位进行位拼接即可实现,无需额外电路。另外,考虑到响应速度和路径延时,首一检测器的设计采用分组并行探测方式,其硬件结构如图2所示。输入的16位码流分成4组,每组4位均通过一个4输入与门,得到4位输出信号后送至优先编码器1,从而判断出首“1”所在区间。同时与门的四个输出还作为选择器mux的控制信号,片选出存在首“1”的4位数据,并将其送至优先编码器2,判断出首“1”的具体位置。最后将两个编码器的输出进行位拼接即可得到首“1”前连续“0”的个数m。

codenum计算模块和句法元素映射模块

<

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!