H.264解码器中CABAC硬件加速器的实现
时间:09-17
来源:互联网
点击:
CABAC的加速策略
状态机的设计
二进制算术解码的状态机是本设计的核心,该部分效率的高低将直接影响到CABAC硬件加速器的解码速度。在CABAC模块没有被启动时,状态机将一直停留在初始状态,当一个新片开始时,初始化解码引擎;当收到CPU发出的解码请求时,首先进入预解码状态,读取上下文模型变量,然后在下一个时钟进入二进制算术解码状态,完成1bit数据的解码。在CABAC解码过程中,系统会根据句法元素的种类和当前数据的位置选择解码模式。
流水线的设计
CABAC对1bit数据进行解码的过程可分为两个步骤:读取上下文模型变量、解码并更新上下文模型变量。本设计采用两级流水线结构,在对当前数据进行解码的同时,可读取下个数据的上下文模型变量,因此加快了解码速度。
码流读取的双缓冲设计
在进行解码的时候,为了提高传输效率,采用双缓冲的形式。在总线给其中一个缓冲传输数据的时候,解码器可从另外一个缓冲里读取数据进行解码,从而使传输和解码同时进行,有效提高了传输效率。
设计结果与性能仿真
在设计完成后,利用JVT提供的标准测试码流进行测试,通过了仿真验证。结果显示,本设计平均每2个时钟周期可完成1bit数据的解码。
在SMIC 0.18mm CMOS工艺标准单元库的基础上进行DC(Design Compile)综合,硬件加速器的面积为0.38mm2(不包括片外SRAM所占用的面积),工作频率可达166MHz,达到了预期要求。
为了显示硬件加速器的优势,选择参考软件JM7.4的函数biari_decode_symbol完成二进制算术解码和归一化。Visual C++6.0编译器的编译结果显示该函数使用了109个汇编指令,因此用软件完成1bit数据的解码至少需要100个时钟周期。而利用本设计完成同样的步骤时,最多只需3个时钟周期,很好地达到了加速器的作用。
结语
由于采用了一系列的优化方案,同时,在设计时考虑了解码速度及解码系统中各个模块之间的协调,本文实现了熵解码CABAC的快速解码,能完成高清码流的实时解码任务,在视频解码芯片中有很好的应用价值。
状态机的设计
二进制算术解码的状态机是本设计的核心,该部分效率的高低将直接影响到CABAC硬件加速器的解码速度。在CABAC模块没有被启动时,状态机将一直停留在初始状态,当一个新片开始时,初始化解码引擎;当收到CPU发出的解码请求时,首先进入预解码状态,读取上下文模型变量,然后在下一个时钟进入二进制算术解码状态,完成1bit数据的解码。在CABAC解码过程中,系统会根据句法元素的种类和当前数据的位置选择解码模式。
流水线的设计
CABAC对1bit数据进行解码的过程可分为两个步骤:读取上下文模型变量、解码并更新上下文模型变量。本设计采用两级流水线结构,在对当前数据进行解码的同时,可读取下个数据的上下文模型变量,因此加快了解码速度。
码流读取的双缓冲设计
在进行解码的时候,为了提高传输效率,采用双缓冲的形式。在总线给其中一个缓冲传输数据的时候,解码器可从另外一个缓冲里读取数据进行解码,从而使传输和解码同时进行,有效提高了传输效率。
设计结果与性能仿真
在设计完成后,利用JVT提供的标准测试码流进行测试,通过了仿真验证。结果显示,本设计平均每2个时钟周期可完成1bit数据的解码。
在SMIC 0.18mm CMOS工艺标准单元库的基础上进行DC(Design Compile)综合,硬件加速器的面积为0.38mm2(不包括片外SRAM所占用的面积),工作频率可达166MHz,达到了预期要求。
为了显示硬件加速器的优势,选择参考软件JM7.4的函数biari_decode_symbol完成二进制算术解码和归一化。Visual C++6.0编译器的编译结果显示该函数使用了109个汇编指令,因此用软件完成1bit数据的解码至少需要100个时钟周期。而利用本设计完成同样的步骤时,最多只需3个时钟周期,很好地达到了加速器的作用。
结语
由于采用了一系列的优化方案,同时,在设计时考虑了解码速度及解码系统中各个模块之间的协调,本文实现了熵解码CABAC的快速解码,能完成高清码流的实时解码任务,在视频解码芯片中有很好的应用价值。
解码器 DSP Verilog 总线 仿真 CMOS 相关文章:
- 便携式BD播放机系统的设计(05-24)
- 基于单片机AT89C51SND1C的MP3方案设计(07-24)
- 应用处理器连接汽车和消费电子两大领域(02-26)
- 基于MSP430单片机的低功耗主动式RFID标签设计(06-12)
- 基于Blackfin的图像处理,及其性能与CMOS传感器中ISP的比较(08-25)
- TI高管详解收购Luminary Micro的MCU业务态势(07-23)