解码器运动补偿模块的流水设计方法及系统的制作方法
【专利摘要】本发明提供一种解码器运动补偿模块的流水设计方法,其包括参考数据读取、帧间插值、加权预测、数据重建4个子模块,其还至少包括:1)帧间插值模块完成参考数据读取时,将运动补偿模块划分为2个流水段:第一个流水段和第二个流水段;2)在第一个流水段完成参考数据读取和帧间插值的数据输入的工作;3)在第二个流水段,完成帧间插值的数据输出、加权预测计算、数据重建的工作;4)第一个流水段与第二个流水段处于并行的工作状态,运动补偿模块启动和结束时段除外;采用本发明中的设计方案,处理一个双向预测宏块需要的时钟周期数为(11+7)*(32+1)=594,对应完成1080P高清实时解码,前者所需要的解码器工作频率为144.342MHz,所需要耗费的解码器工作频率有43.75%的收益;另外,本发明的硬件实现复杂度远低于8x8的设计方案,相对于传统4x4设计方案仅有非常小幅度的增加。
【专利说明】解码器运动补偿模块的流水设计方法及系统【技术领域】
[0001]本发明涉及一种基于H.264解码器的运动补偿模块的流水线设计,尤其是一种基于4x4子块作为最小处理单元的H.264解码器的运动补偿模块的流水线设计的方法及系统。
【背景技术】
[0002]目前主流的H.264解码器通常采用基于宏块的多段流水线设计,最常见的H.264解码器通常划分为:熵解码模块和运动向量产生模块、反变化量化模块和取数据模块、运动补偿模块和帧内插值模块、去块滤波模块4个流水段,其中上述的运动补偿模块主要完成参考数据选择、帧间插值、加权预测、数据重建功能。作为H.264解码器中访存及运算量最大的模块,运动补偿模块的硬件开销及其完成单个宏块所需要的周期数等两项指标对
H.264解码器IP的性能具有非常大的影响。
[0003]现有设计中,运动补偿模块常见的主要有基于8x8子块和4x4子块作为最小处理单元的两种设计方法,前者以8x8子块作为最小处理单元,能够并行处理8个像素点,其优点是处理速度快,但相应的缺点则是需要在参考数据读取、帧间插值、加权预测、数据重建等运动补偿的每个阶段均要支持8个像素点的并行操作,从而造成硬件开销过大;后者以4x4子块作为最小处理单元, 同时处理4个像素点,优点是只需要支持4个像素点的并行操作,硬件开销小,但缺点则是由于并行度的下降,导致硬件的处理速度较低,可能会使得运动补偿模块成为解码器最高工作频率的瓶颈。
[0004]综上所述,鉴于以上所述现有技术的缺点,如何使得运动补偿模块在满足解码器设计频率要求的前提下,又不耗费过多的硬件资源,是本领域技术人员所亟需要解决的问题。
【发明内容】
[0005]本发明的目的在于:在采用4x4子块作为最小处理单元的运动补偿模块设计方案中,通过在运动补偿模块内部引入4x4子块间的流水线设计,在小幅增加控制逻辑复杂度的基础上,获得了与以8x8子块作为最小处理单元设计方案相近的处理速度,能够满足在小于150MHz的工作频率下完成1080P高清实时解码的需求,克服了传统的4x4子块设计方案高清解码工作频率需求过高的缺点,并且相应的硬件实现复杂度却远低于8x8的设计方案,相对于传统4x4设计方案仅有非常小幅度的增加。
[0006]为实现上述目的,本发明提供一种解码器运动补偿模块的流水设计方法,其包括参考数据读取、帧间插值、加权预测、数据重建4个子模块,其还至少包括:
[0007]I)帧间插值模块完成参考数据读取时,将运动补偿模块划分为2个流水段:第一个流水段和第二个流水段;
[0008]2)在第一个流水段完成参考数据读取和帧间插值的数据输入的工作;
[0009]3)在第二个流水段,完成帧间插值的数据输出、加权预测计算、数据重建的工作;[0010]4)第一个流水段与第二个流水段处于并行的工作状态,运动补偿模块启动和结束时段除外。
[0011]优选地,上述的两段式流水设计是基于4x4子块作为最小处理单元,所述的处于并行工作状态的2个流水段分别处理的是连续的2个4x4子块。
[0012]优选地,所述步骤2)、3)中对应的每个流水段的开销为11个时钟周期。
[0013]基于上述目的,本发明还一种解码器运动补偿模块的流水设计系统,其包括:参考数据读取、帧间插值、加权预测、数据重建4个子模块,其至少还包括:流水控制模块,以控制各个子模块之间形成流水结构。
[0014]优选地,所述流水控制模块在运动补偿模块启动后,在插值模块完成参考数据读取时,将运动补偿模块划分为2个流水段:在第一个流水段完成参考数据读取和帧间插值的数据输入的工作;在第二个流水段,完成帧间插值的数据输出、加权预测计算、数据重建的工作;2个流水段大部分时间内都处于并行工作状态。
[0015]优选地,上述的两段式流水设计是基于4x4子块作为最小处理单元,所述的处于并行工作状态的2个流水段分别处理的是连续的2个4x4子块。
[0016]优选地,每个流水段的开销为11个时钟周期。
[0017]如上所述,本发明解码器运动补偿模块的流水线设计方法及系统,具有以下有益效果:如果采用现有技术的4x4子块设计方案,完成一个双向预测宏块所需要的时钟周期数为(20+13) *32=1056,而采用本发明中提到的基于4x4子块流水的设计方案,处理一个双向预测宏块需要的时钟周期数为(11+7) *(32+1) =594。对应完成1080P高清实时解码,前者所需要的解码器工作频率为256.608MHz,采用4x4子块流水线设计方案为144.342MHz,所需要耗费的解码器工作频率有43.75%的收益;另外,由于继承了基于4x4子块设计方案的物理面积小的优点,本发明的硬件实现复杂度远低于8x8的设计方案,相对于传统4x4设计方案仅有非常小幅度的增加。
【专利附图】
【附图说明】
[0018]图1是:典型的H.264运动补偿模块结构框图;
[0019]图2是:运动补偿模块内部各子模块数据流波形示意图;
[0020]图3是:基于二维脉动阵列的运动补偿模块的插值模块结构示意图;
[0021]图4是:本发明运动补偿模块划分流水前后的数据流比较示意图。
【具体实施方式】
[0022]以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效。
[0023]请参阅图1至图4。须知,本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
[0024]附图1给出了现有技术中典型运动补偿模块的子模块组成框图或者称为划分示意图,其通常包括参考数据读取、帧间插值、加权预测、数据重建4个子模块组成部分,各子模块的功能如下:
[0025]>参考数据读取:从运动补偿模块与前一级模块间的stage buffer (流水段间缓存)中读回当前4*4子块解码所需要的参考块信息;
[0026]>帧间插值:将参考块信息输入到模块内的二维脉动阵列及插值滤波器阵列中,经过6抽头插值滤波计算后,输出数据块预测值;
[0027]>加权预测:根据加权预测公式完成加权预测操作;
[0028]>数据重建:根据加权预测模块输出的加权预测数据块信息与残差信息恢复得到原始数据块信息;
[0029]>运动补偿控制:用于完成对宏块内部各个4x4子块的运动补偿控制;
[0030]附图2给出了现有技术的运动补偿模块内部各子模块数据流波形示意图,从图中可以看到完成一个4x4子块的运动补偿需要的总周期数为20。在c0-c2(时钟周期O到时钟周期2)完成参考数据读取,在c2-cl4完成帧间插值,在cll-cl6完成加权预测,在cl5_cl9完成数据重建,其中帧间插值模块需要的时间最长,需要耗费13个时钟周期,所以帧间插值模块是运动补偿模块流水划分最小粒度的关键。继续的,如附图3所示,在帧间插值模块中,采用现有技术的典型的基于二维脉动阵列的设计结构,二维脉动阵列结构对应图中提到的6级延迟寄存器组和同时工作的行、列滤波器组。对于4x4子块每行的4个并行处理的像素,需要在6级寄存器组中参考数据准备好的情况下才能进行,即完成I行4像素插值至少需要延迟寄存器组中6个周期的准备时间,这样完成I个4x4块的插值至少需要占据延迟寄存器组9个周期,这也是该结构能够支持的最小流水线粒度,所以对于上述典型的运动补偿结构,流水线划分的最小单位为9个cycle (解码器时钟周期)。
[0031]综合上述现有技术的特点以及技术缺陷,本发明方法在逻辑实现时考虑到降低硬件复杂度的需求,在基于4x4子块作为最小处理单元的运动补偿模块设计中,引入两段式流水线设计;本发明把插值模块刚好完成参考数据输入时作为流水线划分的节点,对应每段流水的开销为11个时钟周期;即,现以现有技术中的图2中的cll时刻作为流水线划分节点,按照附图2中的stagel和stage2将运动补偿模块划分为2个流水段,在stagel阶段完成参考数据读取和帧间插值的参考数据输入两部分工作,在stage2阶段,完成帧间插值的数据输出、加权预测计算、数据重建等工作。
[0032]继续的,如附图4下半部分所示,本发明方法在运动补偿模块启动后,流水线控制逻辑首先控制完成宏块O的stagel阶段工作,此时stagel相关电路处于工作状态,stage2相关电路处于空闲状态,然后开始进行宏块O的stage2阶段工作,在此同时启动宏块I的stagel阶段工作,此时stagel、stage2相关电路处在并行工作状态,在当前stagel、stage2完成后,会同时开始宏块2的stagel阶段和宏块I的stage2阶段工作,依次类推,直至最后一个宏块前,stagel和stage2阶段相关电路均处在并行工作状态,在最后一个宏块的stage2阶段开始时,由于后面已经没有需要处理的宏块,此时仅有stage2阶段电路处在工作状态。如上所述,经过本发明的方法的流水线设计后,运动补偿模块的stagel和stage2电路在大部分时间内都是并行工作的,从而提高了硬件的利用效率。
[0033]S卩,如附图1中虚线框圈起部分,在运动补偿控制模块中增加流水线控制相关逻辑,用于控制各个子模块之间形成流水结构,即可实现本发明中提到的方案。
[0034]流水线划分前后的运动补偿各子模块数据流如附图4所示,划分流水前完成一个4x4子块的运动补偿操作,需要11+9=20个周期;划分流水后,每个4x4子块的运动补偿过程被划分为2个流水段,其中stagel需要耗费11个时钟周期,stage2需要耗费9个周期。由于流水线结构中的最小粒度由延时最大的流水段所决定,所以在stage2阶段会存在2个cycle的气泡(空闲)周期。即完成一个4x4子块的运动补偿需要11个周期,相对于划分流水前有45%的时间收益。
[0035]在H.264的视频码流中,存在单向预测和双向预测两类帧间预测宏块,单向预测只参考前向或后向参考帧,仅需要完成16个4x4子块的运动补偿操作,而双向预测宏块需要同时参考前向后向参考帧,需要完成32个4x4子块的运动补偿操作,考虑到在建立流水和结束流水阶段,硬件并未真正形成并行操作,如在流水建立阶段,选参考数据和插值计算部分开始工作后,加权预测和数据重建部分并未开始工作,在流水退出阶段也存在类似问题,所以完成一个双向预测宏块亮度部分的运动补偿需要33个流水周期。类似亮度部分的处理方式,对色度部分的运动补偿过程也做流水处理,会将一对2x2色度块的运动补偿处理时间从13cycle降至7cycle,即完成一个16x16双向预测宏块的总时间为(11+7)* (32+1) =594cycle。相对于未划分流水的运动补偿结构完成一个双向预测宏块的周期数为(20+13)*32=1056cycle,本发明在完成一个双向预测宏块运动补偿的周期数上有43.75%的收益。
[0036]在H.264的视频码流中包含1、P、B三种类型的数据帧格式,其中I帧的解码开销通常要低于P、B帧,由于P帧参考数据量是B帧的一半,使得B帧是解码时间开销最大的帧类型,所以按照全B帧最恶劣的测试码流来评估两种设计需要的解码时间开销,采用未经流水线设计的4x4子块设计方案完成1080P实时解码需要的极限频率为(1920*1080/16*16)*30帧/s*1056=256.608MHz ;采用4x4子块流水线设计方案,所需要的解码器工作频率为(1920*1080/16*16) *30帧/s*594=144.342MHz,所需要耗费的解码器工作频率方面有43.75%的降低。
[0037]上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属【技术领域】中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
【权利要求】
1.一种解码器运动补偿模块的流水设计方法,其包括参考数据读取、帧间插值、加权预测、数据重建4个子模块,其特征在于,还至少包括: O帧间插值模块完成参考数据读取时,将运动补偿模块划分为2个流水段:第一个流水段和第二个流水段; 2)在第一个流水段完成参考数据读取和帧间插值的数据输入的工作; 3)在第二个流水段,完成帧间插值的数据输出、加权预测计算、数据重建的工作; 4)第一个流水段与第二个流水段处于并行的工作状态,运动补偿模块启动和结束时段除外。
2.根据权利要求1所述的流水设计方法,其特征在于,上述的两段式流水设计是基于4x4子块作为最小处理单元,所述的处于并行工作状态的2个流水段分别处理的是连续的2个4x4子块。
3.根据权利要求1所述的流水设计方法,其特征在于,所述步骤2)、3)中对应的每个流水段的开销为11个时钟周期。
4.一种解码器运动补偿模块的流水设计系统,其包括:参考数据读取、帧间插值、加权预测、数据重建4个子模块,其特征在于,至少还包括:流水控制模块,以控制各个子模块之间形成流水结构。
5.根据权利要求4所述的流水设计系统,其特征在于,所述流水控制模块在运动补偿模块启动后,在插值模块完成参考数据读取时,将运动补偿模块划分为2个流水段:在第一个流水段完成参考数据读取和帧间插值的数据输入的工作;在第二个流水段,完成帧间插值的数据输出、加权预测计算、数据重建的工作;2个流水段大部分时间内都处于并行工作状态。
6.根据权利要求4所述的流水设计系统,其特征在于,上述的两段式流水设计是基于4x4子块作为最小处理单元,所述的处于并行工作状态的2个流水段分别处理的是连续的2个4x4子块。
7.根据权利要求4-6任一所述的流水设计系统,其特征在于,每个流水段的开销为11个时钟周期。
【文档编号】H04N7/26GK103458245SQ201310390113
【公开日】2013年12月18日 申请日期:2013年8月30日 优先权日:2013年8月30日
【发明者】商迪, 郑成根, 钱宏达, 闫磊, 柴亮, 王旭升, 王峰, 刘志恒, 管云峰, 孙军, 戴杨 申请人:上海高清数字科技产业有限公司