基于霍夫曼编码的编码装置、译码装置及系统制造方法及图纸

技术编号:19969485 阅读:25 留言:0更新日期:2019-01-03 15:41
本发明专利技术公开了一种基于霍夫曼编码的编码装置,包括了霍夫曼编码模块,用于对输入序列以第一指定长度为编码单元进行霍夫曼编码;以及补长模块,用于从霍夫曼编码模块获取由编码值组成的霍夫曼编码序列,并以第二指定长度作为边界,如果最后一个编码值输入无法被放入到W长度的独立序列以内,就将该编码值放到下一个第二指定长度的独立序列内,而在当前独立序列内剩余的长度全部补入不影响译码结果的占位码,最终输出由多个长度为第二指定长度的独立序列顺次连接而成的编码序列。本发明专利技术还公开了相应的基于霍夫曼编码的编码装置,以及一种压缩解压缩系统和一种卷积神经网络,具有不必对边界进行搜寻,大大提高了译码效率的效果。

Coding device, decoding device and system based on Hoffman coding

The invention discloses a coding device based on Hoffman encoding, which includes a Hoffman encoding module for Hoffman encoding the input sequence with the first specified length as the encoding unit, and a complementary module for obtaining a Hoffman encoding sequence consisting of encoding values from the Hoffman encoding module, with the second specified length as the boundary, if the last encoding value is input. If it cannot be put into an independent sequence of W length, it will be put into the next independent sequence of the second specified length, and the remaining length of the current independent sequence will be filled with a bit-holder that does not affect the decoding result, and the final output will be a sequence of independent sequences with multiple lengths connected sequentially to the second specified length. The invention also discloses a corresponding encoding device based on Hoffman coding, a compression and decompression system and a convolution neural network, which do not need to search the boundary and greatly improve the decoding efficiency.

【技术实现步骤摘要】
基于霍夫曼编码的编码装置、译码装置及系统
技术介绍
霍夫曼(Huffman)编码是一种无损的熵编码,广泛应用于数字音视频等信息压缩。霍夫曼编码是对输入序列按概率进行分类,较高概率用较少的bit来编码,较低概率则用较多bit编码。在译码时,需要一个编码映射表格,将每个编码值在表格中进行搜索,以还原成原来的数据序列。这样一种编码方式在数据序列中有较多冗余时,能获得较好的压缩比。以二值霍夫曼编码为例,假定存储序列存在较多相同值,我们可以利用霍夫曼编码原则对将数据分为两类:一类是常数值MFV(mostfrequentlyvalue),一般是对存储矩阵进行搜索,找到最经常出现的值,这类值会映射为编码值“0”,仅仅占用1bit;另一类是非MFV值,该类值会映射在其加一个前导的“1”,作为其分类标志。当然也有使用相反编码逻辑的情况,这只是使用习惯的区别。将输入序列每16bit为一编码单位为例子,假定0x1010是最常出现的值,它映射为bit0,那么下面的序列映射关系是:0x1010----1’b00x4567----{1’h1,16’h4567}0x1010----1’b00x1234----{1’h1,16’h1234}0x1010----1’b00x1010----1’b0霍夫曼译码的实现则与此过程相反,对于每一个长度为W的输入序列,需要从第一个bit进行搜索,将其与编码映射表进行匹配,获得第一个输出;同时更新输入序列W,将已经译码完的bit丢弃,进行新的字搜索。由此可见,由于是一种变长度编码,霍夫曼编码的译码通常情况下是串行的,前后的译码值存在依赖,下一个字的搜索起点取决于上一个字的译码结果,因此一般并不适合并行译码,进而不能以很高的吞吐率进行译码,也不利于硬件高效率实现。现有技术中,提出了利用霍夫曼边界码将原始的霍夫曼编码分割为多个互不依赖的数据序列,译码时通过搜寻该边界码来找到每一个数据序列并输入到不同的译码器中,从而可以实现各个数据序列并行的进行译码。然而,高速传输和处理系统都是流水线实现,霍夫曼边界码速度再快,也很难跟上处理器或主设备(master)的速度。另外,当一个霍夫曼译码器的译码层时机(decodelayertiming)不满足系统带宽需求时,通常会引入流水线(pipeline)的设计,而由此引入的延迟(latency)会导致地址跳转时流水线的清空及地址“回退”,而如果没有可预测的边界,地址回退或重计算几乎不可能,现有技术中即便是使用了编译码,但由于霍夫曼编码是变长度的,所以每个互不依赖的数据序列的长度也是不确定的,即便使用了边界码,也是通过搜选来进行边界确定,其边界仍然是不可预测的。
技术实现思路
本专利技术意在提供一种编码装置,使得用于并行译码的霍夫曼编码序列的边界可以预测,进而可在硬件中实现快速高效的并行译码。一种基于霍夫曼编码的编码装置,包括了霍夫曼编码模块,用于对输入序列以第一指定长度为编码单元进行霍夫曼编码;以及补长模块,用于从霍夫曼编码模块获取由编码值组成的霍夫曼编码序列,并以第二指定长度作为边界,如果最后一个编码值输入无法被放入到第二指定长度的独立序列以内,就将该编码值放到下一个第二指定长度的独立序列内,而在当前独立序列内剩余的长度全部补入不影响译码结果的占位码,最终输出由多个长度为第二指定长度的独立序列顺次连接而成的编码序列。通过该方案,编码序列的边界被固定为第二指定长度,由于边界被固定,并且该边界所划分的独立序列相互之间不存在依赖关系,在进行译码时可以实现直接以第二指定长度来划分编码序列,并对每个独立序列进行并行译码,不必对边界进行搜寻,大大提高了译码效率。由于使用了固定的边界,在引入流水线设计时,地址可以利用固定第二指定长度进行回退或重计算,可以更好的满足系统带宽的需求。进一步,所述霍夫曼编码模块采用二值霍夫曼编码对输入序列进行编码。二值霍夫曼编码仅对常数值MFV(mostfrequentlyvalue)进行压缩,序列中其他的值保持不变,使得解码所需的编码映射表十分简单,查表快速,占用存储空间极小。进一步,所述占位码的码值为表示非常数值的前导码值。由于在二值霍夫曼编码中,利用前导码值来区分常数值(由于仅仅用1位码长来表示常数值,前导码值同时也就是常数值的编码值)和非常数值,而且占位码的数量必定少于第一指定长度,不满足非常数值的编码规则,从而不会被译码;所以以非常数值的前导码值来占位,不会发生占位码被误认为有意义的编码值,直接通过原本的编码规则就实现了占位码的识别,避免错误的发生。本专利技术还公开了一种基于霍夫曼编码的译码装置,包括多个并行的译码器,所述译码器用于根据上述编码装置中的霍夫曼编码模块所采用的编码规则对一个长度为第二指定长度的序列进行霍夫曼译码;还包括输入单元,用于将输入的编码序列以第二指定长度划分为多个独立序列,并将每个独立序列并行的输入到所述译码器中。由于边界被固定,并且该边界所划分的独立序列相互之间不存在依赖关系,在进行译码时可以实现直接以第二指定长度来划分编码序列,并对每个独立序列进行并行译码,不必对边界进行搜寻,大大提高了译码效率。进一步,所述译码器包括多个级联的单元译码模块;所述单元译码模块,用于依照编码映射表从输入的编码序列中,搜索出第一个可译码的码值或码值序列,并还原该码值或码值序列为输入序列中的一个长度为第一指定长度的序列作为译码输出,同时输出尚未译码的编码序列供下一个单元译码模块来使用。通过级联的单元译码模块,只需确认单次译码所涉及的输入序列长度,就可以将剩余的输入序列输入到下一单元译码模块,在一个周期内可以同时进行多个码值或码值序列的译码,提高了解码效率。进一步,所述译码器还包括位移控制模块;所述单元译码模块还用于输出单次译码所涉及的码值或码值序列的长度作为位移长度给位移控制模块;所述位移控制模块,用于通过所用单元译码模块发来的位移长度,判断输入的编码序列是否已经译码完毕。进一步,所述位移控制模块根据输入的编码序列是否已经移位到超过第二长度指定长度减去第一指定长的长度的位置,判断输入的编码序列是否已经译码完毕。由于输入到编码序列最后是占位码,已经不再是可以译码的编码,于是能够快速判断当前输入的编码序列是否译码完毕。另一方面,本专利技术还提供了一种压缩及解压缩系统,包括上述的编码装置以及译码装置;所述编码装置,用于通过将输入序列编码为编码序列以实现对输入数据的压缩;所述译码装置,用于通过将输入的编码序列还原为输入序列以实现对输入数据的解压缩。本方案利用霍夫曼编码中对出现概率高的输入序列采用短的编码序列的特性,进行压缩,特别利于重复值多的输入序列的压缩,另外采用无需进行边界搜寻的并行解码大大提高了解压缩的效率。另一方面,本专利技术还提供了一种卷积神经网络,包括上述的压缩及解压缩系统,用于对权重参数进项压缩和解压缩。卷积神经网络的权重参数表现为一大型的稀疏矩阵,含有大量的重复值(0),且卷积神经网络每次自学习后都会进行权重参数的更新,需要重新输入,其数据搬运是一个技术难题,数据传输带宽成为了制约系统性能提升的瓶颈;采用本专利技术的压缩解压缩系统,可以提供较大的压缩比,十分利于节约传输带宽,并且解压效率更高,可以实现实时的快速解压,十分利于提高卷积神经网络的性能。本文档来自技高网
...

【技术保护点】
1.一种基于霍夫曼编码的编码装置,包括了霍夫曼编码模块,用于对输入序列以第一指定长度为编码单元进行霍夫曼编码;其特征在于,还包括补长模块,用于从霍夫曼编码模块获取由编码值组成的霍夫曼编码序列,并以第二指定长度作为边界,如果最后一个编码值输入无法被放入到第二指定长度的独立序列以内,就将该编码值放到下一个第二指定长度的独立序列内,而在当前独立序列内剩余的长度全部补入不影响译码结果的占位码,最终输出由多个长度为第二指定长度的独立序列顺次连接而成的编码序列。

【技术特征摘要】
1.一种基于霍夫曼编码的编码装置,包括了霍夫曼编码模块,用于对输入序列以第一指定长度为编码单元进行霍夫曼编码;其特征在于,还包括补长模块,用于从霍夫曼编码模块获取由编码值组成的霍夫曼编码序列,并以第二指定长度作为边界,如果最后一个编码值输入无法被放入到第二指定长度的独立序列以内,就将该编码值放到下一个第二指定长度的独立序列内,而在当前独立序列内剩余的长度全部补入不影响译码结果的占位码,最终输出由多个长度为第二指定长度的独立序列顺次连接而成的编码序列。2.根据权利要求1所述的基于霍夫曼编码的编码装置,其特征在于,所述霍夫曼编码模块采用二值霍夫曼编码对输入序列进行编码。3.根据权利要求2所述的基于霍夫曼编码的编码装置,其特征在于,所述占位码的码值为表示非常数值的前导码值。4.一种基于霍夫曼编码的译码装置,包括多个并行的译码器,其特征在于,还包括输入单元,用于将输入的编码序列以第二指定长度划分为多个独立序列,并将每个独立序列并行的输入到所述译码器中;所述译码器用于根据权利要求1-3中任一所述的编码装置中的所述霍夫曼编码模块所采用的编码规则对一个长度为第二指定长度的序列进行霍夫曼译码。5.根据权利要求4所述的基于霍夫曼编码的译码装置,其特征在于,所述译码器包括多个级联的单...

【专利技术属性】
技术研发人员:江正忠
申请(专利权)人:重庆物奇科技有限公司上海物麒科技有限公司
类型:发明
国别省市:重庆,50

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1