一种基于Huffman解码的方法和装置的制造方法
【专利摘要】本发明公开了一种基于Huffman解码的方法和装置,该装置包括数据缓存器,一个或多个层解码器,判定器以及码表查找单元,其中,数据缓存器用于接收外部输入的数据流以准备待解码数据,同时接收所述判定器输出的偏置量SD以准备下一次的待解码数据;一个或多个层解码器LD1~LDn,用于分别接收待解码数据的各层码字,同时根据配置表对每层码字进行解码,从而计算得出各层的偏移量offset1~offsetn;判定器,用于接收各层解码器输出的偏移量,并进行优先级判断,选择层数最低并且输出为合理值的偏移量作为最终偏移量offset,同时将偏置量SD设置为该层数;码表查找单元,用于接收最终偏移量offset,并对码表进行查找,获取该最终偏移量对应位置的数据,该数据即为解码后的数据。
【专利说明】
一种基于Huff man解码的方法和装置
技术领域
[0001] 本发明涉及图形图像处理和数据压缩的技术领域,具体涉及一种改进的基于 Huffman解码的方法和装置。
【背景技术】
[0002] 随着图像相关应用越来越多的应用,图像在计算机处理中占比越来越高,而由于 图像本身就具有数据量大和运算量大的特点,尤其是当前虚拟现实,深度学习技术的越来 越多的使用,图像和类图像数据的传输本身就成为了计算瓶颈,所以压缩算法在这个过程 中就显得尤为重要。
[0003] 而根据香农定理,Huffman编码在无损编码中,能够接近理论上的压缩极限,在数 据处理的硬件系统中,加入Huffman编码就成为了能够减少数据传输量,降低带宽压力的一 个普遍的选择。但是传统的Huffman编解码在硬件实现过程中,由于需要对每个编码后的数 值进行比较,要么整个比较的数目过大,难以进行硬件实现,要么采用少量的运算单元但是 会造成硬件逻辑过于复杂,硬件的总体性能低下。
【发明内容】
[0004] 鉴于上述问题,本发明提供了一种克服上述问题或者至少部分地解决上述问题的 一种基于Huf f man解码的方法和装置。
[0005] 为了解决上述问题,本发明实施例还提供了一种基于Huffman编解码的装置,包 括:该装置包括数据缓存器,一个或多个层解码器,判定器以及码表查找单元。
[0006] 其中,所述数据缓存器,用于接收外部输入的数据流以准备待解码数据,同时接收 所述判定器输出的偏置量SD以准备下一次的待解码数据;
[0007] 所述一个或多个层解码器LD1~LDn,用于分别接收待解码数据的各层码字,同时 根据配置表对每层码字进行解码,从而计算得出各层的偏移量of f set 1~of fsetn,其中,每 层表示每个不同的码字长度;
[0008]所述判定器,用于接收各层解码器输出的偏移量off set 1~of fsetn,并进行优先 级判断,选择层数最低并且输出为合理值的偏移量作为最终偏移量offset输出至所述码表 查表单元,同时将偏置量SD设置为该层数。
[0009] 所述码表查找单元,用于接收最终偏移量Of f set,并对码表进行查找,获取该最终 偏移量对应位置的数据,该数据即为解码后的数据。
[0010] 本发明实施例还提供了一种基于Huffman解码的方法,该方法包括如下步骤:
[0011] (1)接收外部输入的待解码数据;
[0012] (2)分别接收待解码数据的各层码字,同时根据配置表对每层码字进行解码,从而 计算得出各层的偏移量offsetl~offsetn,其中,每层表示每个不同的码字长度;
[0013] (3)接收各层的偏移量off setl~of fsetn,并进行优先级判断,选择层数最低并且 输出为合理值的偏移量作为最终偏移量offset,同时将偏置量SD设置为所述层数进行反 馈;
[0014] (4)接收所述最终偏移量offset,并对码表进行查找,获取所述最终偏移量off set 对应位置的数据,该数据即为解码后的数据;
[0015] (5)根据所述偏置量SD准备下一次的待解码数据,直至数据流全部解码完成。
[0016] 本发明中的一种基于Huffman编解码的方法和装置主要被应用于ASIC设计领域, 与现有技术相比,本发明包括以下优点:
[0017] 本发明通过采用一个或多个层解码器LD1~LDn对每层码字同时进行并行解码,再 结合优先级判断,能够低成本、低功耗、高效率的实现对解码的加速。
[0018] 本发明通过设置不同的配置表方式,极大的减少了运算过程,能够进一步提升性 能。
[0019] 本发明通过在优先级判断完成后直接进行偏置量SD的反馈,可以将解码过程提前 一个硬件时钟周期,进一步提高了整个系统的运行速度。
[0020] 本发明所采用的基于Huffman编解码的方法和装置在提高解码效率的同时,更加 适合硬件的实现,能够取得成本低、并行度高以及计算速度快的有益技术效果。
【附图说明】
[0021]图1是本发明实施例中一建立好的正则Huffman树的示意图;
[0022] 图2是本发明实施例的一种基于Huffman解码的装置示意图;
[0023]图3是根据本发明实施例的一种基于Huffman解码的方法的流程图。
【具体实施方式】
[0024]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。
[0025] 参照图1,为本发明实施例中一建立好的正则Huffman树的示意图。正则Huffman树 在某一个层级上生成的编码完全是连续的,而任何一个普通的Huffman树,都可以直接转换 成为正则Huffman树,仅仅改变每个数据的码字,而码字的长度不会改变,也不会影响最终 的压缩率。基于该Huffman树可以生成每个数据的码字和存储位置信息,参见表1。其中,码 字为二进制数字。
[0026] 表1每个数据的码字和存储位置信息
[0027]
[0028]由此可见,通过偏移量offset即可找到数据的存储位置Z,进而找到对应的数据, 如上表所示,Z[0] =f,Z[4] =a。
[0029] 而实际上,位置的确定是根据层数(即码字长度)递增的原则和码字本身的大小, 由小到大进行排序。因此,在实际使用过程中,码表只需顺序存储数据,也就是说,码字、位 置信息与数据之间的对应关系被隐含在该码表中,此时,位置信息即为码表的偏移量 offset,通过该偏移量offset可以直接查找码表进而获取解码数据。
[0030] 由表1可以看出,图1所示的正则Huffman树根据层数(即码字长度)可以被分为三 组:
[0031] 第一组 Gl: 〇(a)
[0032] 第二组G2:0b100 (c),0bl01(e),0bll0(d)
[0033] 第三组 G3:0blll0(a),0bllll(b)
[0034] 根据该组码字代表的具体数值,每一组都包括一最小值min[G]和一最大值max [G],同时,使用每一组的最小值和其码字所在的存储位置可以得到每一组中的偏移参数C [G],具体计算过程如下:
[0035] 如第一组的最小值为0,数据的存储位置为0,则偏移参数C[ 1 ]为:
[0036] c[l] =0-0 = 0
[0037] 第二组的最小值为4,数据存储位置从1开始,则偏移参数C[2]为:
[0038] c[2] = 1-4 = -3
[0039] 上述过程可以直接得到一用于计算位置Z的配置表,如表2所示。
[0040] 表2配置表
[0041]
[0042] 在表2所示的配置表中,码字长度与组G是为了更好的对解码过程进行说明,而在 实际使用过程中,配置表只需要存储最小值min,最大值max和偏移参数C。
[0043] 上述码表与配置表的设置方式,都在缩减存储量的同时,进一步简化了索引过程, 降低了硬件成本。
[0044]上述配置表的设置使得本发明的基于Huffman的解码已经在很大程度上实现了对 硬件的友好,但在硬件设计中,存储变量相对还是比较消耗资源的,而与或非这种位级别的 操作消耗比变量的存储以及比较、加减等运算单元要节省硬件逻辑资源,而且运算速度也 要快很多。
[0045]因此,为了使解码过程中使用的硬件资源更小,在实现更低功耗的同时,进一步提 高运行频率,作为一优选实施例,本发明在配置表中进一步地引入了一计算掩码M,在每个 层解码器中,掩码Μ是根据最小值min和最大值max中变化的bit来决定的,如图1所示的正则 Huffman数的第二层,最高位始终为1,其生成的码字实质上变化的仅为后两位,即ObOO~ 0bl0,那么对应的掩码就是Obi 1,也就是3。而最大值max和最小值min也会根据掩码Μ做对应 的调整,改进后的配置表如表3所示。
[0046]表3改进后的配置表
[0047]
[0048] 其中,由于图1所示的正则Huffman树未包含码字长度为2的数据,因此表3中的x表 示该组不运算。
[0049] 通过该配置表即可完成Huffman的解码。各组解码同时进行,而当有一组比较成功 后,之后的比较结果就可以不再被使用。
[0050] 参照图2,为本发明实施例的一种基于Huffman解码的装置的示意图,该装置包括 数据缓存器,一个或多个层解码器,判定器以及码表查找单元。
[0051] 其中,数据缓存器,用于接收外部输入的数据流以准备待解码数据,同时还用于接 收判定器输出的偏置量SD以准备下一次的待解码数据。
[0052] 一个或多个层解码器,用于分别接收待解码数据的各层码字,同时根据配置表对 每层码字进行解码,从而计算得出各层的偏移量offsetl~offsetn。其中,每层表示每个不 同的码字长度。
[0053]更进一步的,每一个层解码器LD1~LDn仅接收一种码字长度并对其进行解码。而 层解码器的总个数由待解码数据的最长的码字长度来决定,并且可以根据需要在设计中进 行扩展。此处,为了便于说明,每个层解码器的序号η表示该层解码器LDn能够接收的码字长 度。
[0054]判定器,用于接收各层解码器输出的偏移量offsetl~offsetn,并进行优先级判 断,选择层数最低并且输出为合理值的偏移量作为最终偏移量offset输出至码表查表单 元,同时将偏置量SD设置为该层数。
[0055]码表查找单元,用于接收最终偏移量of f set,并对码表进行查找,获取该最终偏移 量对应位置的数据,该数据即为解码后的数据。
[0056] 作为一优选实施例,可以选取表2的配置表进行解码,此时当单个层解码器LDn的 输入值为X时,比较X是否落在该层的最小值min和最大值max之间,如果落在其中,贝lj以X加 该层的偏移参数C作为该层解码器LDn的输出值offsetn,否则输出一特定标记。
[0057] 作为另一优选实施例,还可以选取表3中包含掩码Μ的配置表进行解码,此时当单 个层解码器LDn的输入值为X时,首先输入值X与掩码Μ进行与(&)操作,得到一中间值XI,比 较XI是否落在该层的最小值min和最大值max之间,如果落在其中,则以XI加该层的偏移参 数C作为该层解码器LDn的输出值of f s etn,否则输出一特定标记。
[0058]下面将以数据流为0b100 0100,数据缓存器准备的待解码数据的最大长度为4,选 取表3配置表为例,对该装置的解码过程作进一步的解释说明。
[0059]根据最大长度需设计四个层解码器LD1,LD2,LD3和LD4。数据缓存器每次均准备4 位数据,其第一次准备的数据为OblOOO。
[0060] 各层解码器LD1,LD2,LD3和LD4分别接收数据缓存器输出的各层码字,即首位数据 "Γ输入层解码器LD1,前两位数据"10"输入层解码器LD2,前三位数据"100"输入层解码器 LD3,四位数据"1000"输入层解码器LD4。
[0061] 假定配置表仍为表3所示,首先各层解码器将其输入与该层解码器的掩码Μ分别进 行与(&)操作,每层的层解码器操作如下:
[0062] LDl:M&0bl = l&0bl = l,
[0063] LD2:M&0bl0 = 0&0bl0 = 0,
[0064] LD3 : M&Ob 100 = 3&0b 100 = 0,
[0065] LD4 : M&Ob 1000 = 1 &0b 1000 = 0,
[0066] 通过表3所示的配置表可知,层解码器LD1和LD2的操作结果均未落在其最大值max 和最小值min的区间内,因此层解码器LD1和LD2的输出为NULL(其中,NULL可以为任意一个 可以被判断为不合理的值);而层解码器LD3和LD4的操作结果均落在了其最大值max和最小 值min区间内,因此层解码器LD3的输出值offset3 = 0+C= 1,层解码器LD4的输出值offset4 = 0+C = 5〇
[0067] 判定器接收各层解码器LD1,LD2,LD3和LD4输出的偏移量offsetl~offset4,选择 层数最低并且输出为合理值的层解码器LD3的输出值1作为最终偏移量offset输出至码表 查表单元,同时将偏置量SD设置为层数3。
[0068] 码表查找单元对码表进行查找,获取解码后的数据为c,即最终偏移量offset对应 位置的数据。
[0069]至此,完成了第一次解码过程。然后数据缓存器接收偏置量SD,其中SD值为3,将其 中待解码数据的前三位移出,并进一步从数据流中补充三位数据以作为下一次待解码数 据。
[0070] 最终得到数据流0b100 0100解码后数据为cfc。
[0071] 由上述过程还可以看出,判定器在得到结果后会直接将偏置量SD反馈回数据缓存 器,这样比在获取最终结果时才生成偏置量要提前一个硬件时钟(cycle)以进行运算,进一 步提高了整个系统的运行速度。
[0072] 参照图3,为根据本发明实施例的改进哈夫曼解码方法的流程图。
[0073] (1)接收外部输入的待解码数据。
[0074] (2)分别接收待解码数据的各层码字,同时根据配置表对每层码字进行解码,从而 计算得出各层的偏移量offsetl~offsetn。其中,每层表示每个不同的码字长度。
[0075] (3)接收各层的偏移量off set 1~off setn,并进行优先级判断,选择层数最低并且 输出为合理值的偏移量作为最终偏移量offset,同时将偏置量SD设置为该层数进行反馈。 [0076] (4)接收最终偏移量off set,并对码表进行查找,获取该最终偏移量对应位置的数 据,该数据即为解码后的数据。
[0077] (5)根据偏置量SD准备下一次的待解码数据,直至数据流全部解码完成。
[0078] 作为一优选实施例,可以选取表2的配置表进行解码,此时当所述码字为X时,比较 X是否落在该层的最小值min和最大值max之间,如果落在其中,则以X加该层的偏移参数C作 为该层的偏移量of f setn输出,否则输出一特定标记。
[0079] 作为另一优选实施例,还可以选取表3中包含掩码Μ的配置表进行解码,此时当所 述码字为X时,首先输入值X与掩码Μ进行与(&)操作,得到一中间值XI,比较XI是否落在该层 的最小值min和最大值max之间,如果落在其中,则以XI加该层的偏移参数C作为该层的偏移 量offsetn输出,否则输出一特定标记。
[0080] 此外,作为另一优选实施例,在步骤(3)中,所述优先级判断完成后,直接将偏置量 SD反馈以准备下一次的待解码数据,这样进一步提高了整个系统的运行速度。
[0081] 以上对本发明所提供的一种可扩展智能图像处理加速装置和加速方法进行了详 细介绍,上述记载中应用了具体示例对本发明的原理及实施方式进行了阐述,以上实施例 的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员, 依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内 容不应理解为对本发明的限制,本领域技术人员在没有做出创造性劳动前提下所获得的所 有其他实施例,都属于本发明保护的范围。
【主权项】
1. 一种基于Huf fman解码的装置,其特征在于:该装置包括数据缓存器,一个或多个层 解码器,判定器以及码表查找单元, 其中,所述数据缓存器,用于接收外部输入的数据流以准备待解码数据,同时接收所述 判定器输出的偏置量SD以准备下一次的待解码数据; 所述一个或多个层解码器LDl~LDn,用于分别接收待解码数据的各层码字,同时根据 配置表对每层码字进行解码,从而计算得出各层的偏移量offsetl~offsetn,其中,每层表 示每个不同的码字长度; 所述判定器,用于接收各层解码器输出的偏移量off set 1~off setn,并进行优先级判 断,选择层数最低并且输出为合理值的偏移量作为最终偏移量offset,同时将偏置量SD设 置为该层数; 所述码表查找单元,用于接收最终偏移量offset,并对码表进行查找,获取该最终偏移 量对应位置的数据,该数据即为解码后的数据。2. 根据权利要求1所述的装置,其特征在于:所述配置表包括每层的最小值min,最大值 max和偏移参数C,当单个层解码器LDn的输入值为X时,所述层解码器LDn比较X是否落在该 层的最小值min和最大值max之间,如果落在其中,则以X加该层的偏移参数C作为该层解码 器LDn的偏移量offsetn输出,否则输出一特定标记。3. 根据权利要求1所述的装置,其特征在于:所述配置表包括每层的掩码M,最小值min, 最大值max和偏移参数C,当单个层解码器LDn的输入值为X时,所述层解码器LDn将输入值X 与掩码M进行与操作,得到一中间值XI,比较Xl是否落在该层的最小值min和最大值max之 间,如果落在其中,则以Xl加该层的偏移参数C作为该层解码器LDn的偏移量offsetn输出, 否则输出一特定标记。4. 根据权利要求3所述的装置,其特征在于:所述掩码M是根据该层的最小值min和最大 值max中变化的位来决定的。5. 根据权利要求1所述的装置,其特征在于:所述判定器在完成判断后会直接将偏置量 SD反馈回所述数据缓存器。6. -种基于Huffman解码的方法,其特征在于,所述方法包括如下步骤: (1) 接收外部输入的待解码数据; (2) 分别接收待解码数据的各层码字,同时根据配置表对每层码字进行解码,从而计算 得出各层的偏移量offsetl~offsetn,其中,每层表示每个不同的码字长度; (3) 接收各层的偏移量offsetl~offsetn,并进行优先级判断,选择层数最低并且输出 为合理值的偏移量作为最终偏移量of f set,同时将偏置量SD设置为所述层数进行反馈; (4) 接收所述最终偏移量offset,并对码表进行查找,获取所述最终偏移量offset对应 位置的数据,该数据即为解码后的数据; (5) 根据所述偏置量SD准备下一次的待解码数据,直至数据流全部解码完成。7. 根据权利要求6所述的方法,其特征在于,所述配置表包括每层的最小值min,最大值 max和偏移参数C,所述步骤⑵还包括:当所述码字为X时,比较X是否落在该层的最小值min 和最大值max之间,如果落在其中,则以X加该层的偏移参数C作为该层的偏移量offsetn输 出,否则输出一特定标记。8. 根据权利要求6所述的方法,其特征在于,所述配置表包括每层的掩码M,最小值min, 最大值max和偏移参数C,所述步骤(2)还包括:当所述码字为X时,将码字X与掩码M进行与操 作,得到一中间值Xl,比较Xl是否落在该层的最小值min和最大值max之间,如果落在其中, 则以Xl加该层的偏移参数C作为该层的偏移量offsetn输出,否则输出一特定标记。9. 根据权利要求8所述的方法,其特征在于:所述掩码M是根据该层的最小值min和最大 值max中变化的位来决定的。10. 根据权利要求6所述的方法,其特征在于:在步骤(3)中,所述优先级判断完成后,直 接将偏置量SD反馈以准备下一次的待解码数据。
【文档编号】H04N19/423GK105933704SQ201610231984
【公开日】2016年9月7日
【申请日】2016年4月15日
【发明人】张彦刚
【申请人】张彦刚