微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > H.264解码器中CABAC硬件加速器的实现

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的快速解码,能完成高清码流的实时解码任务,在视频解码芯片中有很好的应用价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top