熵编码控制方法及熵编码电路的制作方法

文档序号:7655233阅读:162来源:国知局
专利名称:熵编码控制方法及熵编码电路的制作方法
技术领域
本发明涉及视频编码技术,特别涉及基于H.264标准的一种熵编码控制方法和一种熵编码电路。
背景技术
基于H.264视频编解码标准中,编码对象是视频信号中的语法元素(SE),分为残差SE和非残差SE。
其中,残差SE包括表示当前块是否有非零系数的CBF、表示当前位置上的非0系数的绝对值减1的CALM、表示当前位置上的系数是否为0的SCF、表示当前位置上的系数是否为最后一个非0系数的LSCF等类别的数据等;非残差SE包括表示前后向预测的参考图像索引的refIdx、表示当前亮度和色度块的直流和交流分量的非零情况的CBP等类别的数据。
现有的熵编码过程中,分别对非残差SE和残差SE采用不同的编码方式进行编码。
例如,对部分非残差SE采用定长(Fix-length)编码、对另一部分非残差SE采用格鲁姆(Exp-golomb)编码、对残差SE采用自适应变长(Cavlc)编码;或者,对部分非残差SE采用定长(Fix-length)编码、对部分非残差SE采用格鲁姆(Exp-golomb)编码、对其它非残差SE和所有残差SE采用自适应算术(Cabac)编码。
也就是说,熵编码电路中通常包括由定长编码、格鲁姆编码和自适应变长编码所需的逻辑功能单元;或者包括由定长编码、格鲁姆编码和自适应算术编码所需的逻辑功能单元;即自适应变长编码和自适应算术编码为二选一的编码方式。
如图1所示,现有技术中以非残差SE为编码对象的定长编码过程包括接收非残差SE;查找定长表,即根据预设的长度将表示非残差SE的二进制比特串分段输出,分段输出的比特串即为编码结果;对输出的编码结果进行码流拼接。
如图2所示,现有技术中以非残差SE为编码对象的格鲁姆编码过程包括接收非残差SE;查找格鲁姆表中,与非残差SE对应的编码结果输出;对输出的编码结果进行码流拼接。
如图3所示,现有技术中以残差SE为编码对象的自适应变长编码过程包括接收残差SE;对残差SE进行数据分析并取绝对值;查找变长表中,与非残差SE对应的编码结果输出;对输出的编码结果进行码流拼接。其中,变长表中包括Coeff_token表、Trailing_ones_sign_flag表、Level表、Run_before表,分别针对不同的残差SE。
如图4所示,现有技术中以残差SE和非残差SE为编码对象的自适应算术编码过程包括接收残差SE或非残差SE;如果当前接收的SE为残差SE,则对残差SE取绝对值并进行数据分析,再进行二进制化查表,如果当前接收的SE为非残差SE,则直接进行二进制化查表;进行概率模型查询,即根据二进制化查表得到的表示残差SE或非残差SE的二进制比特串,查找概率模型表,得到每个比特串对应的概率模型;根据查找到的概率模型更新对应的概率空间;根据概率空间更新结果进行归一化处理生成码流;对作为编码结果的码流进行码流拼接。
然而,上述的每一种编码方式,均是采用串行处理方式,即对接收到的SE编码完成并进行码流拼接输出后,才接收下一个SE,从而使得熵编码的效率不高。也就是说,对于实现每一种编码方式的电路,包括多个顺序相连的实现不同逻辑处理过程的逻辑功能单元。当第一个逻辑功能单元接收并处理接收到的数据后,输出给与其相邻的后一个逻辑功能单元并开始等待,由后续的一个或多个逻辑功能单元顺序对该数据进行处理,当最后一个逻辑功能单元结束其处理并输出结果后,第一个逻辑功能单元才停止等待,再次接收外部输入的待处理数据。这样,使得电路中的每个逻辑功能单元都需要进行长时间的等待,从而降低了熵编码效率。
而且,上述不同的编码方式之间存在部分相同的逻辑处理过程,但现有技术中,仍然通过独立的多个逻辑功能单元来分别实现上述相同的逻辑处理过程,即实现每个编码方式的电路之间相互独立,从而造成了硬件资源的浪费。

发明内容
有鉴于此,本发明的一个主要目的在于,提供一种熵编码控制方法,能够提高熵编码的效率。
本发明的另一个主要目的在于,提供一种熵编码电路,能够提高熵编码的效率。
本发明的再一个主要目的在于,提供另一种熵编码电路,能够提高熵编码的效率。
根据上述的一个主要目的,本发明提供了一种熵编码控制方法,每一个逻辑功能单元进行相应的逻辑处理过程,包括每一个逻辑功能单元,在其已产生了处理结果、且与其相邻的后一个逻辑功能单元的逻辑处理过程已完成时,将该逻辑功能单元得到的所述处理结果提供给与其相邻的后一个逻辑功能单元。
进一步为每一个逻辑功能单元设置一个寄存器,存储该逻辑功能单元产生的所述处理结果;所述寄存器包括一个标志位,用于表示与该逻辑功能单元相邻的后一个逻辑功能单元是否能够从该寄存器中读取所述处理结果;每一个逻辑功能单元进一步在其对应的逻辑处理过程已完成时,产生表示逻辑处理过程已完成的控制信号;所述将该逻辑功能单元得到的处理结果提供给与其相邻的后一个逻辑功能单元为
每一个逻辑功能单元在与其相邻的前一个逻辑功能单元的寄存器标志位为表示可读取的数值、该逻辑功能单元产生了所述处理结果、且与该逻辑功能单元相邻的后一个逻辑功能单元已产生了所述控制信号时,该逻辑功能单元存储所述处理结果,并将其对应的寄存器标志位设置为表示可读取的数值,允许与其相邻的后一个逻辑功能单元从该逻辑功能单元对应的寄存器中读取所述处理结果。
每一个逻辑功能单元在其未产生所述处理结果,但与其相邻的后一个逻辑功能单元已产生了所述控制信号时,则将该逻辑功能单元对应的寄存器标志位设置为表示不可读取的数值,否则,保持寄存器标志位的值不变。
所述编码方式为自适应算术编码,所述逻辑功能单元包括接收数据单元、绝对值运算单元、数据分析单元、二进制化查表单元、概率模型查询单元、概率空间更新单元、归一化处理生成码流单元、码流拼接单元;或者,所述编码方式为变长编码,所述逻辑功能单元包括接收数据单元、绝对值运算单元、数据分析单元、变长表查询生成码流单元、码流拼接单元;或者,所述编码方式为格鲁姆编码,所述逻辑功能单元包括接收数据单元、格鲁姆表查询单元、码流拼接单元;或者,所述编码方式为定长编码,所述逻辑功能单元包括接收数据单元、定长表查询单元、码流拼接单元。
根据上述的另一个主要目的,本发明提供了一种熵编码电路,顺序包括如下逻辑功能单元接收数据单元、绝对值运算单元、数据分析单元、二进制化查表单元、概率模型查询单元、概率空间更新单元、归一化处理生成码流单元、码流拼接单元;各逻辑功能单元在其已产生了作为与其相邻的后一个逻辑功能单元的待处理数据的处理结果、且与其相邻的后一个逻辑功能单元的逻辑处理过程已完成时,将其得到的处理结果输出给与其相邻的后一个逻辑功能单元;其中,与所述接收数据单元相邻的前一个逻辑功能单元为外部电路的输入,与所述码流拼接单元相邻的后一个逻辑功能单元为向外部电路的输出。
进一步分别在每个逻辑功能单元的输出端设置寄存器1~寄存器8,分别存储对应的逻辑功能单元产生的所述处理结果;分别对应不同逻辑功能单元的寄存器1~寄存器8,还分别与对应的逻辑功能单元相邻的后一个逻辑功能单元的输入端相连;所述寄存器1~寄存器8,分别包括标志位1~标志位8,分别表示寄存器1~寄存器8是否可读取;各逻辑功能单元进一步在其对应的逻辑处理过程已完成时,分别产生表示逻辑处理过程已完成的控制信号;输出端与寄存器i相连的逻辑功能单元,在寄存器i-1的标志位为表示可读取的数值、该逻辑功能单元产生了所述处理结果、且输出端与寄存器i+1相连的逻辑功能单元已产生了所述控制信号时,将寄存器i的标志位设置为表示可读取的数值,并存储所述处理结果;其中,i为大于等于1且小于等于8的正整数。
进一步在接收数据单元的输出端设置一个寄存器1’,寄存器1’与二进制化查找表单元的输入端相连,具有一所述标志位;如果二进制化查找表单元当前处理的数据为非残差SE,则确定与其相邻的前一个逻辑功能单元为接收数据单元;如果二进制化查找表单元当前处理的数据为残差SE,则确定与其相邻的前一个逻辑功能单元为数据分析单元;接收数据单元根据接收到的SE类型,将残差SE存储到寄存器1中,将非残差SE存储到寄存器1’中;如果已接收的数据为残差SE,则确定与其相邻的后一个逻辑功能单元为绝对值运算单元;如果已接收的数据为非残差SE,则确定与其相邻的后一个逻辑功能单元为二进制化查找表单元。
输出端与寄存器i相连的逻辑功能单元,在其未产生所述处理结果、但输出端与寄存器i+1相连的逻辑功能单元已产生了所述控制信号时,进一步将寄存器i的标志位设置为表示不可读取的数值,否则,保持寄存器i的标志位的值不变。
该电路在接收数据单元与码流拼接单元之间,进一步包括多表查找表单元,用于进行定长查找表和格鲁姆查找表;多表查找表单元的输出端连接一寄存器,该寄存器具有一所述标志位。
所述多表查找表单元进一步用于进行变长查找表。
据上述的再一个主要目的,本发明提供了另一种熵编码电路,顺序包括如下逻辑功能单元接收数据单元、绝对值运算单元、数据分析单元、变长查找表单元、码流拼接单元;其特征在于,各逻辑功能单元在其已产生了处理结果、且与其相邻的后一个逻辑功能单元的逻辑处理过程已完成时,将其得到的处理结果输出给与其相邻的后一个逻辑功能单元;其中,与所述接收数据单元相邻的前一个逻辑功能单元为外部电路的输入,与所述码流拼接单元相邻的后一个逻辑功能单元为向外部电路的输出。
进一步分别在每个逻辑功能单元的输出端设置寄存器1~寄存器5,分别存储对应的逻辑功能单元产生的所述处理结果;分别对应不同逻辑功能单元的寄存器1~寄存器5,还分别与对应的逻辑功能单元相邻的后一个逻辑功能单元的输入端相连;所述寄存器1~寄存器5,分别包括标志位1~标志位5,分别表示寄存器1~寄存器5是否可读取;各逻辑功能单元进一步在其对应的逻辑处理过程已完成时,分别产生表示逻辑处理过程已完成的控制信号;输出端与寄存器j相连的逻辑功能单元,在寄存器j-1的标志位为表示可读取的数值、该逻辑功能单元产生了所述处理结果、且输出端与寄存器j+1相连的逻辑功能单元已产生了所述控制信号时,将寄存器j的标志位设置为表示可读取的数值,并存储所述处理结果;其中,j为大于等于1且小于等于5的正整数。
输出端与寄存器j相连的逻辑功能单元,在其未产生所述处理结果、但输出端与寄存器j+1相连的逻辑功能单元已产生了所述控制信号时,进一步将寄存器i的标志位设置为表示不可读取的数值,否则,保持寄存器j的标志位的值不变。
该电路在接收数据单元与码流拼接单元之间,进一步包括定长查找表单元,用于进行定长查找表;格鲁姆表查找表单元,用于进行格鲁姆查找表;定长查找表单元和格鲁姆表查找表单元的输出端连接一寄存器,该寄存器为与变长查找表单元的输出端相连的寄存器。
由上述技术方案可见,本发明在每个逻辑功能单元产生了处理结果、该处理结果为与其相邻的后一个逻辑功能单元的待处理数据、且与其相邻的后一个逻辑功能单元中的逻辑处理过程已完成时,将该逻辑功能单元产生的处理结果提供给与其相邻的后一个逻辑功能单元,从而在实现了流水线方式的同时,避免了流水线堵塞及熵编码结果错误,相比于现有串行方式的熵编码处理,提高了处理效率。
本发明可通过为每个逻辑功能单元设置一控制信号,用于表示该逻辑功能单元是否完成其对应的逻辑处理过程;同时,为每个逻辑功能单元设置了一个寄存器,用于存储该逻辑功能单元生成的作为与其相邻的下一个逻辑功能单元待处理数据的处理结果,且该寄存器中具有一标志位,用于表示与其相邻的下一个逻辑功能单元是否能够从该寄存器中读取作为其待处理数据的处理结果。这样,无需在电路中增加其他硬件,即可简单实现本发明的技术方案,从而使得本发明的技术方案易于实现,且成本较低。
本发明还将熵编码中的多种编码方式中的相同逻辑处理过程,复用在相同的硬件资源中,从而节省了硬件资源。


图1为现有技术中定长编码过程的示意图。
图2为现有技术中格鲁姆编码过程的示意图。
图3为现有技术中变长变码过程的示意图。
图4为现有技术中自适应算术编码过程的示意图。
图5为本发明实施例中熵编码控制方法的流程图。
图6为本发明实施例中自适应算术编码电路的示意图。
图7为为发明实施例中自适应变长编码电路的示意图。
图8为本发明实施例中包括4种编码电路的熵编码电路示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明实施例中,对现有熵编码中如图1~图4所示的4种编码方式,均采用流水线方式替代串行方式,从而能够提高熵编码效率。而且,对于不同的编码方式之间存在的相同逻辑处理过程,通过复用相同的硬件资源来实现,从而能够提高硬件资源利用率。
下面,先对本发明实施例中基于流水线方式的熵编码控制方法进行详细说明。
对于现有熵编码中如图1~图4所示的4种编码方式,可以分别将其中的多个逻辑处理过程划分为多个流水线级,从而实现流水线方式的编码过程。
但是,对于上述4种编码方式,均可能存在不同逻辑处理过程所占用的单元时间数量互不相同的问题。因此,如果简单地将每个逻辑处理过程所占用的单元时间数量作为该流水线级的传递周期,即以每个逻辑处理过程的完成时间作为传递周期的结束时间,则会由于各流水线级的传递周期不同而造成流水线中的传递阻塞,从而无法实现流水线各级之间的正常传递。
然而,如果按照现有方式,将所有流水线级对应的逻辑处理过程中,耗时最长的一个逻辑处理过程所需处理周期作为统一的传递周期,则会使得其他逻辑处理所对应的流水线级进行不必要的等待,从而使得流水线的传递周期较长,降低了流水线的效率,而且,还会使得熵编码结果出现错误。
以如图4所示的自适应算术编码为例,其数据分析逻辑处理过程耗时最长,通常占用16个单元时间,而其他逻辑处理过程一般均只需要占用1~2个单元时间。因此,如果将各流水线级之间的传递周期设置为16个单元时间,从而使得其他逻辑处理过程所对应的流水线级等待大量的单元时间。
而且,数据分析逻辑处理过程在其完成最终处理之前的每一个单元时间均可能产生一个处理结果,作为其下一级的二进制化查找表逻辑过程的待处理数据。也就是说,如果数据分析逻辑处理过程的结束时间作为传递周期的结束时间,虽然能够保证各流水线级对应的逻辑处理过程的同步,但对于二进制化查找表过程来说,只能够实现对16个待处理数据中的1个的二进制化查找表,从而使得最终的熵编码结果不正确。
而且,对于不同的SE,每个逻辑处理过程所占用的单位时间数量也可能不同,例如,对于当前SE的归一化处理生成码流的逻辑处理过程可能占用6个单元时间,而对于下一个SE的归一化处理生成码流的逻辑处理过程可能只需4个单元时间,因此,如果将传递周期设置为固定的长度,还会造成部分流水线级的长时间等待,造成了时间和硬件资源的浪费。
因此,本发明实施例中,实现流水线级之间的传递应当满足如下条件对于实现每个逻辑处理过程的逻辑功能单元来说,如果该逻辑功能单元产生了处理结果、该处理结果为与其相邻的后一个逻辑功能单元的待处理数据、且与其相邻的后一个逻辑功能单元中的逻辑处理过程已完成,则将该逻辑功能单元产生的处理结果提供给与其相邻的后一个逻辑功能单元。
如果将每一个逻辑处理过程或逻辑功能单元看作一个流水线级、将与每个逻辑功能单元相邻的前一个逻辑功能单元看作其上一级流水线级、将与每个逻辑功能单元相邻的后一个逻辑功能单元看作其下一级流水线级,则对于每一级流水线级来说,如果该流水线级已产生了作为下一级待处理数据的处理结果、且该流水线级的下一级所对应的逻辑处理过程已完成,则该流水线级将得到的处理结果传递给其下一级。
需要明确的是,在熵编码过程中,每一个逻辑处理过程产生了作为下一级待处理数据的处理结果时,该逻辑处理过程并不一定已完成。
仍以如图4所示的自适应算术编码为例,假设当前的SE为一个4×4的色度矩阵,则对于数据分析逻辑处理过程对应的流水线级来说,其绝对值计算逻辑处理过程逐一计算一次接收到的矩阵中16个元素的绝对值,经过16个单元时间计算得到16个元素的绝对值;该流水线级对应的数据分析逻辑处理过程,逐一对一次接收到的矩阵中16个元素绝对值进行数据分析,经过16个单元时间连续得到16个作为二进制化查找表过程待处理数据的数据分析结果;其下一级二进制化查找表逻辑处理过程,每1个单元时间即可完成1次二进制查找表。
因此,当数据分析逻辑处理过程对应的流水线级每产生一个数据分析结果,绝对值计算逻辑处理过程也同时产生一个绝对值,且二进制化查找表逻辑处理过程已完成,则将得到的数据分析结果传递给二进制化查找表逻辑处理过程所对应的流水线级;如果绝对值计算逻辑处理过程已产生了16个绝对值,绝对值计算逻辑处理过程能够从其上一级获取下一个SE,且数据分析逻辑处理过程已完成,则数据分析逻辑处理过程对应的流水线级即可得到绝对值计算逻辑处理过程对应的流水线级传递下来的处理结果。
可见,如果当前的SE为一个4×4的色度矩阵,绝对值计算逻辑处理过程与数据分析逻辑处理过程分别对应的两级流水线级之间,传递周期为16个单元时间,而数据分析逻辑处理过程与二进制化查找表逻辑处理过程分别对应的两级流水线级之间,传递周期为1个单元时间。
这样,不同的两级流水线级之间的传递周期虽然会不同,但能够保证熵编码过程的正常运行,不会出现熵编码结果错误。而且,对于不同的SE,流水线级之间的传递周期能够动态变化。
基于上述原理,本发明实施例为每一级流水线级设置了一个控制信号,用于表示该流水线级是否完成其对应的逻辑处理过程;同时,为每一级流水线级设置了一个寄存器,用于存储该流水线级生成的作为下一级待处理数据的处理结果,且该寄存器中具有一标志位,用于表示下一级流水线级是否能够从该寄存器中读取作为其待处理数据的处理结果。
以下,对上述控制信号和寄存器进行举例说明。
第i级流水线级对应的控制信号DONEi=1时,表示第i级流水线级对应的逻辑处理过程已完成;DONEi=0时,表示第i级流水线级对应的逻辑处理过程未完成,i为大于0且小于流水线级总数的正整数。
第i级流水线级对应的寄存器i的标志位VALIDi=1时,表示能够从寄存器i中读取作为其待处理数据的处理结果,即1位表示可读取的数值,第i+1级流水线级能够进行第i级流水线级与第i+1级流水线级之间的传递;VALIDi=0时,表示第i+1级流水线级不能从寄存器i中读取作为其待处理数据的处理结果,即0位表示不可读取的数值,第i+1级流水线级不能进行第i级流水线级与第i+1级流水线级之间的传递。
根据上述的流水线级之间的传递应当满足的条件,VALIDi的赋值过程可以为在第i级流水线级产生了其下一级的待处理数据、DONE(i+1)=1、且VALID(i-1)=1时,令VALIDi=1;在第i级流水线级未产生其下一级的待处理数据、且DONE(i+1)=1时,令VALIDi=0;其余情况,保持VALIDi的当前取值不变。
这样,第i+1级流水线级即可在VALIDi=1时,从第i级流水线级获得待处理数据,从而实现了所有的流水线级同时实现相互之间的传递,保证每两级相邻的流水线级的处理速度相同,即可保证流水线不出现堵塞。
而且,控制信号是根据当前处理情况实时产生的,从而使得传递周期的长度是随着实际情况的不同而动态变化的,因而能够最大限度地避免时间和硬件资源的浪费。
下面,对本发明实施例中的熵编码控制方法进行详细说明。
图5为本发明实施例中熵编码控制方法的流程图。如图5所示,本实施例中的熵编码控制方法包括以下步骤步骤501,将编码方式中的多个逻辑处理过程划分为多个流水线级,并为每一级流水线级设置一个寄存器,用于存储对应流水线级所对应的逻辑处理过程产生的处理结果,该寄存器包括一个标志位,用于表示下一级流水线级是否能够从该寄存器中读取作为其待处理数据的处理结果。
其中,划分为流水线级即为确定实现不同逻辑处理过程的逻辑功能单元。
本步骤中,如果以如图4所示的自适应算术编码方式为例,则划分的流水线级最多可以为8级,分别对应如下逻辑处理过程接收数据、绝对值运算、数据分析、二进制化查表、概率模型查询、概率空间更新、归一化处理生成码流、码流拼接。
同理,本步骤中如果以如图3所示的变长编码方式为例,则划分的流水线级最多可以为5级,分别对应如下逻辑处理过程接收数据、绝对值运算、数据分析、变长表查询生成码流、码流拼接;如图2所示的格鲁姆编码方式为例,则划分的流水线级最多可以为3级,分别对应如下逻辑处理过程接收数据、格鲁姆表查询生成码流、码流拼接;如图1所示的定长编码方式为例,则划分的流水线级最多可以为3级,分别对应如下逻辑处理过程接收数据、定长表查询生成码流、码流拼接。
步骤502,每一级流水线级执行其对应的逻辑处理过程,如果产生了作为下一级待处理数据的处理结果,则将该处理结果存储到该流水线级对应的寄存器中;如果该级流水线级对应的逻辑处理过程结束,则产生一个表示逻辑处理过程已完成的控制信号。
本步骤中,如果该流水线级未产生作为下一级待处理数据的处理结果,但其下一级流水线级已产生了一个表示逻辑处理过程已完成的控制信号,则将该流水线级对应的寄存器标志位设置为表示不可读取的数值,否则,保持寄存器标志位的值不变。
步骤503,每一级流水线级在其上一级的寄存器标志位为表示可读取的数值、该级流水线级产生了作为下一级待处理数据的处理结果、且其下一级流水线级已产生了一个表示逻辑处理过程已完成的控制信号时,存储其产生的处理结果,并将该级流水线级的寄存器标志位设置为表示可读取的数值,允许其下以及流水线级从该寄存器中读取存储的处理结果。
本步骤之后,每一级流水线级在其上一级寄存器的标志位为表示可读取的数值时,即可读取该寄存器中存储的处理结果,开始下一个传递周期所对应的逻辑处理过程。
至此,本流程结束。
上述流程中的步骤502~步骤503为一个可多次循环执行的过程。在该过程中,每一级流水线级均能够在该流水线级已产生了作为下一级待处理数据的处理结果、该流水线级的上一级已产生了作为该流水线级待处理数据的处理结果、且该流水线级的下一级所对应的逻辑处理过程已完成时,实现与其下一级流水线级之间的传递;每一级流水线级均能够在该流水线级的上一级已产生了作为该流水线级待处理数据的结果、该流水线级的上一级能够从其上一级获得待处理数据、且该流水线级所对应的逻辑处理过程已完成时,实现与其上一级流水线级之间的传递。从而在不出现流水线堵塞及熵编码结果错误的前提下,实现了流水线方式的熵编码处理。相比于现有串行方式的熵编码处理,提高了处理效率。
实际应用中,如图4所示的自适应算术编码方式所占用的单元时间最多,因此,如果将上述控制方法应用到该电路中,则可以大大提高熵编码的效率。
图6为本发明实施例中自适应算术编码电路的示意图。如图6所示,本实施例中的自适应算术编码电路根据自适应算术编码方式中的逻辑处理过程,划分为如下逻辑单元接收数据单元、绝对值运算单元、数据分析单元、二进制化查表单元、概率模型查询单元、概率空间更新单元、归一化处理生成码流单元、码流拼接单元,分别对应流水线级1~8,且每个流水线级对应的逻辑单元占用单独的硬件资源。
如图4所示的自适应算术编码方式中,绝对值运算和数据分析使用同一个硬件资源,但为了总体上缩短流水线的传递周期,将二者划分为2个流水线级,并利用不同的硬件资源来实现。
上述电路中,在分别接收数据单元、绝对值运算单元、数据分析单元、二进制化查表单元、概率模型查询单元、概率空间更新单元、归一化处理生成码流单元、码流拼接单元的输出端,设置寄存器1~寄存器8;且寄存器1~寄存器8,分别与绝对值运算单元、数据分析单元、二进制化查表单元、概率模型查询单元、概率空间更新单元、归一化处理生成码流单元、码流拼接单元和外部电路的输入端相连。
寄存器1~寄存器8分别具有一标志位VALID1~VALID8,其取值分别表示寄存器1~寄存器8是否可读取,当取值为1时,表示可读取,当取值为0时,表示不可读取。
第1级流水线级对应的接收数据单元,接收外部电路输入的SE;如果已接收到外部电路输入的SE、外部电路已有待输入的SE、且接收到控制信号DONE2=1,则令VALID1=1,并将接收到的SE存储到寄存器1中;其中,外部电路已有待输入的SE,即等同于上一级的寄存器标志位为表示可读取的数值1;如果已完成对输入的SE的接收,外部电路已有待输入的SE、且接收到控制信号DONE2=1,则输出控制信号DONE1=1,再次接收外部电路输入的SE;如果未接收到外部电路输入的SE、且接收到控制信号DONE2=1,则令VALID1=0;否则,继续从外部电路接收输入的SE,并保持VALID1的当前数值不变。
第2级流水线级对应的绝对值运算单元,对从寄存器1中读取的SE进行绝对值运算;如果产生了至少一个绝对值运算结果、VALID1=1、且接收到控制信号DONE3=1,则令VALID2=1,并将产生的一个或多个绝对值运算结果存储到寄存器2中;如果已完成了绝对值运算、VALID1=1、且接收到控制信号DONE3=1,则输出控制信号DONE2=1,并再次从寄存器1中读取SE;如果未产生绝对值运算结果、且接收到控制信号DONE3=1,则令VALID2=0;否则,继续进行绝对值运算,并保持VALID2的当前数值不变。
第3级流水线级对应的数据分析单元,对从寄存器2中读取的绝对值运算结果进行数据分析;如果产生了至少一个数据分析结果、VALID2=1、且接收到控制信号DONE4=1,则令VALID3=1,并将产生的一个或多个数据分析结果存储到寄存器3中;如果已完成了数据分析、VALID2=1、且接收到控制信号DONE4=1,则输出控制信号DONE3=1,并再次从寄存器2中读取绝对值运算结果;如果未产生数据分析结果、且接收到控制信号DONE4=1,则令VALID3=0;否则,继续进行数据分析,并保持VALID3的当前数值不变。
第4级流水线级对应的二进制化查找表单元,对从寄存器3中读取的数据分析结果进行二进制化查找表;如果产生了查找表结果、VALID3=1、且接收到控制信号DONE5=1,则令VALID4=,并将产生的查找表结果存储到寄存器4中1;如果已完成了二进制化查找表、VALID3=1、且接收到控制信号DONE5=1,则输出控制信号DONE4=1,并再次从寄存器3中读取数据分析结果;如果未产生查找表结果、且接收到控制信号DONE5=1,则令VALID4=0;否则,继续进行二进制化查找表,并保持VALID4的当前数值不变。
第5级流水线级对应的概率模型查询单元,根据从寄存器4中读取的查找表结果进行概率模型查询;如果产生了查询结果、VALID4=1、且接收到控制信号DONE6=1,则令VALID5=1,并将产生的查询结果存储到寄存器5中;如果已完成了概率模型查询、VALID4=1、且接收到控制信号DONE6=1,则输出控制信号DONE5=1,并再次从寄存器4中读取查找表结果;如果未产生查询结果、且接收到控制信号DONE6=1,则令VALID5=0;否则,继续进行概率模型查询,并保持VALID5的当前数值不变。
第6级流水线级对应的概率空间更新单元,根据从寄存器5中读取的查询结果进行概率空间更新;如果产生了更新结果、VALID5=1、且接收到控制信号DONE7=1,则令VALID6=1,并将产生的更新结果存储到寄存器6中;如果已完成了概率空间更新、VALID5=1、且接收到控制信号DONE7=1,则输出控制信号DONE6=1,并再次从寄存器5中读取查询结果;如果未产生更新结果、且接收到控制信号DONE7=1,则令VALID6=0;否则,继续进行概率空间更新,并保持VALID6的当前数值不变。
第7级流水线级对应的归一化处理生成码流单元,根据从寄存器6中读取的更新结果进行归一化处理;如果产生了码流、VALID6=1、且接收到控制信号DONE8=1,则令VALID7=1,并将产生的码流存储到寄存器7中;如果已完成了归一化处理、VALID6=1、且接收到控制信号DONE8=1,则输出控制信号DONE7=1,并再次从寄存器6中读取更新结果;如果未产生码流、且接收到控制信号DONE8=1,则令VALID7=0;否则,继续进行归一化处理,并保持VALID7的当前数值不变。
第8级流水线级对应的码流拼接单元,对从寄存器7中读取的码流进行码流拼接;如果得到了拼接后的码流、VALID7=1、且外部电路等待其输出拼接后的码流,则令VALID8=1,并将拼接后的码流存储到寄存器8中;其中,外部电路等待其输出拼接后的码流,即等同于其下一级已完成了对应的逻辑处理过程;如果已完成了码流的拼接、VALID7=1、且外部电路等待其输出拼接后的码流,则输出控制信号DONE8=1,并再次从寄存器7中读取码流;如果未进行码流拼接、且外部电路等待其输出拼接后的码流,则令VALID8=0;否则,继续进行码流拼接,并保持VALID8的当前数值不变。
实际应用中,由于自适应算术编码电路既对残差SE进行编码处理,也对非残差SE进行编码处理,而对于非残差SE来说,不需要进行绝对值运算和数据分析。因此,可以在接收数据单元的输出端进一步设置一个寄存器1’,寄存器1’还与二进制化查找表单元的输入端相连,具有一标志位VALID1’。
这样,第4级流水线级对应的二进制化查找表单元,进一步对从寄存器1’中读取的非残差SE进行二进制化查找表,并将产生的查找表结果存储到寄存器4中;如果产生了查找表结果、VALID1’=1、且接收到控制信号DONE5=1,则令VALID4=1;如果已完成了二进制化查找表、VALID1’=1、且接收到控制信号DONE5=1,则输出控制信号DONE4=1,并再次从寄存器1’中读取数据分析结果;如果未产生查找表结果、且接收到控制信号DONE5=1,则令VALID4=0;否则,继续进行二进制化查找表,并保持VALID4的当前数值不变。
需要说明的是,二进制化查找表单元并不是同时从寄存器1’和寄存器3获取存储的处理结果。由于输入的SE中,均有标识其顺序的标志,因而,二进制化查找表单元根据该标志,判断应当先从寄存器1’还是寄存器3获取存储的处理结果。也就是说,如果寄存器1’中存储的非残差SE应当排在寄存器3中存储的数据分析结果所对应的残差SE之前,则二进制化查找表单元从寄存器1’获取存储的处理结果,否则,从寄存器3获取存储的处理结果。
如果二进制化查找表单元当前处理的数据为非残差SE,则其对应的上一级流水线级对应接收数据单元;如果二进制化查找表单元当前处理的数据为残差SE,则其对应的上一级流水线级对应数据分析单元。
接收数据单元能够根据接收到的SE类型,将残差SE存储到寄存器1中,将非残差SE存储到寄存器1’中;如果已接收的数据为残差SE,则其对应的下一级流水线级对应绝对值运算单元;如果已接收的数据为非残差SE,则其对应的下一级流水线级对应二进制化查找表单元。
可见,上述自适应算术编码电路实现了流水线方式的处理,从而在不出现流水线堵塞及编码结果错误的前提下,提高了其处理效率,进而提高了熵编码的处理效率。
同理,定长编码电路、格鲁姆编码电路以及自适应变长编码电路也均可以按照上述方式实现流水线处理。
图7为为发明实施例中自适应变长编码电路的示意图。以自适应变长变码电路为例,如图7所示,将定长编码电路划分为5个流水线级,分别对应如下逻辑功能单元接收数据单元、绝对值运算单元、数据分析单元、变长查找表单元、码流拼接单元。
分别在每个逻辑功能单元的输出端设置寄存器1~寄存器5,分别存储对应流水线级所对应的逻辑功能单元产生的所述处理结果;寄存器1~寄存器5,分别与输出端与其相连的逻辑功能单元所对应的下一级流水线级的逻辑功能单元的输入端相连;寄存器1~寄存器5,分别包括标志位1~标志位5,分别表示寄存器1~寄存器5是否可读取;各逻辑功能单元在其对应的逻辑处理过程已完成时,分别输出表示逻辑处理过程已完成的控制信号,DONEj=1,j为大于等于1且小于等于5的正整数;与第j级流水线级对应的逻辑功能单元,在寄存器j-1的标志位为表示可读取的数值、该逻辑功能单元产生了处理结果、且与第j+1级流水线级对应的逻辑功能单元已产生了一个表示逻辑处理过程已完成的控制信号DONEj+1=1时,将寄存器j的标志位设置为表示可读取的数值,存储产生的处理结果,并再次从寄存器j-1读取所述处理结果。
与第j级流水线级对应的逻辑功能单元,在其未产生所述处理结果、但第j+1级流水线级对应的逻辑功能单元已产生了一个表示逻辑处理过程已完成的控制信号DONEj+1=1时,寄存器j的标志位设置为表示不可读取的数值,否则,保持寄存器j的标志位的值不变。
与自适应算术编码电路相同,接收数据单元对应的上一级流水线级为外部电路的输入,码流拼接单元对应的下一级流水线级为向外部电路的输出。
这样,熵编码电路中包括的各电路均可实现流水线控制,如果其中的一个电路或所有电路均实现了流水线控制,即可提高熵编码的效率。
如前所述,如图1~图4所示的编码方式之间,存在部分相同的逻辑处理过程。因此,本发明实施例中,将不同编码电路所需的相同的逻辑处理,复用在相同的硬件资源上。
本实施例中的熵编码电路可以包括如图6所示的自适应算术编码电路,并在此基础上,进一步包括用于定长编码和格鲁姆编码的多表查找表单元,而定长编码和格鲁姆编码所需的接收数据单元和码流拼接单元,可以复用自适应算术编码电路中的接收数据单元和码流拼接单元。
其中,多表查找表单元中包括定长查找表单元和格鲁姆表查找表单元。
这样,在接收数据单元的输出端,进一步设置一个寄存器1”,该寄存器1”与多表查找表单元的输入端相连,可以同时与定长查找表单元和格鲁姆表查找表单元的输出端相连,寄存器1”具有一标志位VALID1”;在多表查找表单元的输出端设置一个寄存器a,寄存器a与码流拼接单元的输入端相连,且具有一标志位a。
即多表查找表单元对应的上一级流水线级对应接收数据单元,其下一级流水线级对应码流拼接单元。
这样,多表查找表单元对从寄存器1”中读取的非残差SE进行定长表或格鲁姆表查找表,并将产生的查找表结果存储到寄存器a中;如果产生了查找表结果、VALID1”=1、且接收到控制信号DONE8=1,则令VALIDa=1;如果已完成了查找表、VALID1”=1、且接收到控制信号DONE8=1,则输出控制信号DONEa=1,并再次从寄存器1”中读取数据分析结果;如果未产生查找表结果、且接收到控制信号DONE8=1,则令VALIDa=0;否则,继续进行二进制化查找表,并保持VALIDa的当前数值不变。
由于输入的SE中,均有标识其顺序的标志,因而,码流拼接单元能够根据该标志,判断应当先从寄存器7还是寄存器a获取存储的处理结果。也就是说,如果寄存器7中存储的码流所对应的残差SE,应当排在寄存器a中存储的码流所对应的非残差SE之前,则码流拼接单元从寄存器7获取存储的处理结果,否则,从寄存器a获取存储的处理结果。
可见,由于熵编码中的定长编码、格鲁姆编码、自适应算术编码不一定同时进行,因而,复用实现相同逻辑处理过程的硬件资源不会产生各编码过程之间的冲突,且能够节省熵编码电路中的硬件资源。
同理,也可以将定长编码、格鲁姆编码和自适应变长变码中,实现相同逻辑处理过程的硬件资源复用。
这样,本实施例中的熵编码电路可以包括如图7所示的自适应变长编码电路,并在此基础上,进一步包括用于定长编码和格鲁姆编码的多表查找表单元,而定长编码和格鲁姆编码所需的接收数据单元和码流拼接单元,可以复用自适应变长编码电路中的接收数据单元和码流拼接单元。接收数据单元的输出端也连接两个寄存器,分别与绝对值运算单元和多表查找表单元的输入端相连,与上述的熵编码电路的实现方式相同,在此不再赘述。
考虑到熵编码电路的通用性,本实施例中的熵编码电路包括如图6所示的自适应算术编码电路、如图7所示的自适应变长编码电路、以及定长编码和格鲁姆编码电路,即能够在实际应用中,任意选择自适应算术编码电路和自适应变长编码电路中的一种,来实现对残差SE的编码,且将上述4个编码电路中,实现相同逻辑处理过程的硬件资源复用。
图8为本发明实施例中包括4种编码电路的熵编码电路示意图。如图8所示,在如图6所示的自适应算术编码电路的基础上,进一步包括用于定长编码、格鲁姆编码和自适应变长编码的多表查找表单元,而定长编码、格鲁姆编码和自适应变长编码所需的接收数据单元和码流拼接单元,可以复用自适应变长编码电路中的接收数据单元和码流拼接单元;自适应变长编码所需的绝对值运算单元和数据分析单元,可以复用自适应变长编码电路中的绝对值运算单元和数据分析单元。
其中,多表查找表单元中包括定长查找表单元、格鲁姆表查找表单元和变长查找表单元,三者的输出端可同时连接一个寄存器。
其中,每个逻辑功能单元对应的寄存器在图中未示出。
由于实际应用中,通常不会同时使用自适应变长编码和自适应算术编码,因此,数据分析单元所对应的寄存器3,可以同时与二进制化查找表单元和多表查找表单元的输入端相连。
这样,在熵编码的过程中,各部分组合逻辑能够按照流水线方式并行处理,因此能够大大缩小总的处理时间。对于高清1920×1080视频来说,平均处理一个16×16的宏块需要300~400个时钟周期,因此,在保证电路运行在200Mhz的时钟频率下,可以每秒处理200M/(400×1920×1080×1.5/(16×16))=41桢/秒,满足实时编码的要求。同时,也降低了熵编码电路所占用的硬件资源,进一步节省了成本。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种熵编码控制方法,每一个逻辑功能单元进行相应的逻辑处理过程,其特征在于,包括每一个逻辑功能单元,在其已产生了处理结果、且与其相邻的后一个逻辑功能单元的逻辑处理过程已完成时,将该逻辑功能单元得到的所述处理结果提供给与其相邻的后一个逻辑功能单元。
2.如权利要求1所述的方法,其特征在于,进一步为每一个逻辑功能单元设置一个寄存器,存储该逻辑功能单元产生的所述处理结果;所述寄存器包括一个标志位,用于表示与该逻辑功能单元相邻的后一个逻辑功能单元是否能够从该寄存器中读取所述处理结果;每一个逻辑功能单元进一步在其对应的逻辑处理过程已完成时,产生表示逻辑处理过程已完成的控制信号;所述将该逻辑功能单元得到的处理结果提供给与其相邻的后一个逻辑功能单元为每一个逻辑功能单元在与其相邻的前一个逻辑功能单元的寄存器标志位为表示可读取的数值、该逻辑功能单元产生了所述处理结果、且与该逻辑功能单元相邻的后一个逻辑功能单元已产生了所述控制信号时,该逻辑功能单元存储所述处理结果,并将其对应的寄存器标志位设置为表示可读取的数值,允许与其相邻的后一个逻辑功能单元从该逻辑功能单元对应的寄存器中读取所述处理结果。
3.如权利要求2所述的方法,其特征在于,每一个逻辑功能单元在其未产生所述处理结果,但与其相邻的后一个逻辑功能单元已产生了所述控制信号时,则将该逻辑功能单元对应的寄存器标志位设置为表示不可读取的数值,否则,保持寄存器标志位的值不变。
4.如权利要求1至3中任意一项所述的方法,其特征在于,所述编码方式为自适应算术编码,所述逻辑功能单元包括接收数据单元、绝对值运算单元、数据分析单元、二进制化查表单元、概率模型查询单元、概率空间更新单元、归一化处理生成码流单元、码流拼接单元;或者,所述编码方式为变长编码,所述逻辑功能单元包括接收数据单元、绝对值运算单元、数据分析单元、变长表查询生成码流单元、码流拼接单元;或者,所述编码方式为格鲁姆编码,所述逻辑功能单元包括接收数据单元、格鲁姆表查询单元、码流拼接单元;或者,所述编码方式为定长编码,所述逻辑功能单元包括接收数据单元、定长表查询单元、码流拼接单元。
5.一种熵编码电路,顺序包括如下逻辑功能单元接收数据单元、绝对值运算单元、数据分析单元、二进制化查表单元、概率模型查询单元、概率空间更新单元、归一化处理生成码流单元、码流拼接单元;其特征在于,各逻辑功能单元在其已产生了作为与其相邻的后一个逻辑功能单元的待处理数据的处理结果、且与其相邻的后一个逻辑功能单元的逻辑处理过程已完成时,将其得到的处理结果输出给与其相邻的后一个逻辑功能单元;其中,与所述接收数据单元相邻的前一个逻辑功能单元为外部电路的输入,与所述码流拼接单元相邻的后一个逻辑功能单元为向外部电路的输出。
6.如权利要求5所述的电路,其特征在于,进一步分别在每个逻辑功能单元的输出端设置寄存器1~寄存器8,分别存储对应的逻辑功能单元产生的所述处理结果;分别对应不同逻辑功能单元的寄存器1~寄存器8,还分别与对应的逻辑功能单元相邻的后一个逻辑功能单元的输入端相连;所述寄存器1~寄存器8,分别包括标志位1~标志位8,分别表示寄存器1~寄存器8是否可读取;各逻辑功能单元进一步在其对应的逻辑处理过程已完成时,分别产生表示逻辑处理过程已完成的控制信号;输出端与寄存器i相连的逻辑功能单元,在寄存器i-1的标志位为表示可读取的数值、该逻辑功能单元产生了所述处理结果、且输出端与寄存器i+1相连的逻辑功能单元已产生了所述控制信号时,将寄存器i的标志位设置为表示可读取的数值,并存储所述处理结果;其中,i为大于等于1且小于等于8的正整数。
7.如权利要求6所述的电路,其特征在于,进一步在接收数据单元的输出端设置一个寄存器1’,寄存器1’与二进制化查找表单元的输入端相连,具有一所述标志位;如果二进制化查找表单元当前处理的数据为非残差SE,则确定与其相邻的前一个逻辑功能单元为接收数据单元;如果二进制化查找表单元当前处理的数据为残差SE,则确定与其相邻的前一个逻辑功能单元为数据分析单元;接收数据单元根据接收到的SE类型,将残差SE存储到寄存器1中,将非残差SE存储到寄存器1’中;如果已接收的数据为残差SE,则确定与其相邻的后一个逻辑功能单元为绝对值运算单元;如果已接收的数据为非残差SE,则确定与其相邻的后一个逻辑功能单元为二进制化查找表单元。
8.如权利要求6或7所述的电路,其特征在于,输出端与寄存器i相连的逻辑功能单元,在其未产生所述处理结果、但输出端与寄存器i+1相连的逻辑功能单元已产生了所述控制信号时,进一步将寄存器i的标志位设置为表示不可读取的数值,否则,保持寄存器i的标志位的值不变。
9.如权利要求6或7所述的电路,其特征在于,该电路在接收数据单元与码流拼接单元之间,进一步包括多表查找表单元,用于进行定长查找表和格鲁姆查找表;多表查找表单元的输出端连接一寄存器,该寄存器具有一所述标志位。
10.如权利要求9所述的电路,其特征在于,所述多表查找表单元进一步用于进行变长查找表。
11.一种熵编码电路,顺序包括如下逻辑功能单元接收数据单元、绝对值运算单元、数据分析单元、变长查找表单元、码流拼接单元;其特征在于,各逻辑功能单元在其已产生了处理结果、且与其相邻的后一个逻辑功能单元的逻辑处理过程已完成时,将其得到的处理结果输出给与其相邻的后一个逻辑功能单元;其中,与所述接收数据单元相邻的前一个逻辑功能单元为外部电路的输入,与所述码流拼接单元相邻的后一个逻辑功能单元为向外部电路的输出。
12.如权利要求11所述的电路,其特征在于,进一步分别在每个逻辑功能单元的输出端设置寄存器1~寄存器5,分别存储对应的逻辑功能单元产生的所述处理结果;分别对应不同逻辑功能单元的寄存器1~寄存器5,还分别与对应的逻辑功能单元相邻的后一个逻辑功能单元的输入端相连;所述寄存器1~寄存器5,分别包括标志位1~标志位5,分别表示寄存器1~寄存器5是否可读取;各逻辑功能单元进一步在其对应的逻辑处理过程已完成时,分别产生表示逻辑处理过程已完成的控制信号;输出端与寄存器j相连的逻辑功能单元,在寄存器j-1的标志位为表示可读取的数值、该逻辑功能单元产生了所述处理结果、且输出端与寄存器j+1相连的逻辑功能单元已产生了所述控制信号时,将寄存器j的标志位设置为表示可读取的数值,并存储所述处理结果;其中,j为大于等于1且小于等于5的正整数。
13.如权利要求11或12所述的电路,其特征在于,输出端与寄存器j相连的逻辑功能单元,在其未产生所述处理结果、但输出端与寄存器j+1相连的逻辑功能单元已产生了所述控制信号时,进一步将寄存器j的标志位设置为表示不可读取的数值,否则,保持寄存器j的标志位的值不变。
14.如权利要求11或12所述的电路,其特征在于,该电路在接收数据单元与码流拼接单元之间,进一步包括定长查找表单元,用于进行定长查找表;格鲁姆表查找表单元,用于进行格鲁姆查找表;定长查找表单元和格鲁姆表查找表单元的输出端连接一寄存器,该寄存器为与变长查找表单元的输出端相连的寄存器。
全文摘要
本发明公开了一种熵编码控制方法和一种熵编码电路。本发明在每个逻辑功能单元产生了处理结果、且与其相邻的后一个逻辑功能单元中的逻辑处理过程已完成时,将该逻辑功能单元产生的处理结果提供给与其相邻的后一个逻辑功能单元,从而在实现了流水线方式的同时,避免了流水线堵塞及熵编码结果错误,相比于现有串行方式的熵编码处理,提高了处理效率。
文档编号H04N7/26GK101090503SQ200710118439
公开日2007年12月19日 申请日期2007年7月5日 优先权日2007年7月5日
发明者刘子熹 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1