CN114095036B - 一种动态哈夫曼编码的码长生成装置 - Google Patents

一种动态哈夫曼编码的码长生成装置 Download PDF

Info

Publication number
CN114095036B
CN114095036B CN202210055822.4A CN202210055822A CN114095036B CN 114095036 B CN114095036 B CN 114095036B CN 202210055822 A CN202210055822 A CN 202210055822A CN 114095036 B CN114095036 B CN 114095036B
Authority
CN
China
Prior art keywords
data
memory
code length
datum
ram
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210055822.4A
Other languages
English (en)
Other versions
CN114095036A (zh
Inventor
刘宇豪
张永兴
王振
马孔明
赵璠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210055822.4A priority Critical patent/CN114095036B/zh
Publication of CN114095036A publication Critical patent/CN114095036A/zh
Application granted granted Critical
Publication of CN114095036B publication Critical patent/CN114095036B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提供了一种动态哈夫曼编码的码长生成装置,装置包括:乒乓存储模块,乒乓存储模块配置为用于存储排序后的数据;码长生成模块,码长生成模块配置为接收乒乓存储模块存储的数据,并基于乒乓存储模块中存储的数据和若干个比较器计算出码长矩阵和码字矩阵;码长恢复模块,码长恢复模块配置为基于码长生成模块计算得到的码长矩阵和码字矩阵以及数据的频率矩阵将数据中字符对应的码长按照频率矩阵重新分配。通过使用本发明的方案,能够在建树时节省2/3的时间,并且满足在每个时钟周期都可以对码字建立码长,能够提升编码器的吞吐率,能够缩短链路处理延时,从而提升数据序列的编码效率。

Description

一种动态哈夫曼编码的码长生成装置
技术领域
本发明涉及计算机领域,并且更具体地涉及一种动态哈夫曼编码的码长生成装置。
背景技术
随着5G,物联网,云计算,大数据,人工智能等技术额飞速发展,高速而又安全的数据存储服务面临着新的挑战。在所有这些技术当中,云计算技术相当于人的大脑,提供着大容量的数据存储以及高效的计算方式,计算资源和存储资源也更加集中。但是同时使得产生的海量的数据指数级增长,对现有的存储设备带来了巨大的压力。因此,高效安全的数据压缩技术成为降低存储成本,节省存储资源有效方法。Deflate格式的哈夫曼编码是LZ77编码和哈夫曼编码的组合编码形式。数据首先经过LZ77编码后以Literal,Length,Distance三种形式存在。在进行哈夫曼编码前,将Literal和Length作为一类信息通过查找Literal_Length码表得到Literal_Length码字,Distance单独作为一类信息通过查找Distance码表得到Distance码字。然后将两类码字分别通过Huffman码表1和Huffman码表2进行Huffman编码得到CL1序列和CL2序列。
霍夫曼编码是一种由David.A.Huffman在1952年发明的无损数据压缩编码。得益于其高效性,霍夫曼编码已经在计算机,数据加密和通信等领域中广泛采用。一般的霍夫曼编码的利用方式一般是通过查找静态表或是动态实现,前者虽然可以简化哈夫曼树生长过程,但压缩率相比于动态实现较低,并且灵活性较差,而后者虽然压缩率更高,但是霍夫曼编码的核心过程便是哈夫曼树生长过程,而哈夫曼树生长过程对于通用CPU来说又是一件相对复杂且频繁的运算。对于快速和实时性比较高的霍夫曼编码,软件建树过程已经难以满足。
发明内容
有鉴于此,本发明实施例的目的在于提出一种动态哈夫曼编码的码长生成装置,通过使用本发明的技术方案,能够在建树时节省2/3的时间,并且满足在每个时钟周期都可以对码字建立码长,能够提升编码器的吞吐率,能够缩短链路处理延时,从而提升数据序列的编码效率。
基于上述目的,本发明的实施例的一个方面提供了一种动态哈夫曼编码的码长生成装置,包括:
乒乓存储模块,乒乓存储模块配置为用于存储排序后的数据;
码长生成模块,码长生成模块配置为接收乒乓存储模块存储的数据,并基于乒乓存储模块中存储的数据和若干个比较器计算出码长矩阵和码字矩阵;
码长恢复模块,码长恢复模块配置为基于码长生成模块计算得到的码长矩阵和码字矩阵以及数据的频率矩阵将数据中字符对应的码长按照频率矩阵重新分配。
根据本发明的一个实施例,还包括:
控制模块,控制模块分别连接到乒乓存储模块、码长生成模块和码长恢复模块,控制模块配置为接收乒乓存储模块的完成信号后向码长生成模块发送使能信号,接收码长生成模块的完成信号后向码长恢复模块发送使能信号。
根据本发明的一个实施例,乒乓存储模块包括奇存储器和偶存储器,奇存储器中存储排序后的数据中的奇数位置的数据,偶存储器中存储偶数位置的数据。
根据本发明的一个实施例,码长生成模块包括:
存储器组,存储器组包括第一存储器、第二存储器、第三存储器、第四存储器、第五存储器和第六存储器,其中第一存储器接收乒乓存储模块中奇存储器中存储的数据,第二存储器接收乒乓存储模块中偶存储器中存储的数据;
比较器组,比较器组包括15个比较器,比较器组配置为在一个时钟周期内每个比较器分别输入存储器组中的任意两个存储器中的一个数据进行比较并输出比较结果,其中,每个比较器中输入的数据的来源存储器不完全相同;
选择器,选择器配置为接收比较器组输出的比较结果,并基于比较结果生成码长矩阵和码字矩阵。
根据本发明的一个实施例,比较器组配置为第一比较器将第一存储器中的一个数据和第二存储器中的一个数据进行比较后输出数据小的数据,第二比较器将第一存储器中的一个数据和第三存储器中的一个数据进行比较后输出数据小的数据,第三比较器将第一存储器中的一个数据和第四存储器中的一个数据进行比较后输出数据小的数据,第四比较器将第一存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第五比较器将第一存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第六比较器将第二存储器中的一个数据和第三存储器中的一个数据进行比较后输出数据小的数据,第七比较器将第二存储器中的一个数据和第四存储器中的一个数据进行比较后输出数据小的数据,第八比较器将第二存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第九比较器将第二存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第十比较器将第三存储器中的一个数据和第四存储器中的一个数据进行比较后输出数据小的数据,第十一比较器将第三存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第十二比较器将第三存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第十三比较器将第四存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第十四比较器将第四存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第十五比较器将第五存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据。
根据本发明的一个实施例,码长恢复模块使用公式:W(q(i))<=M(i)将字符对应的码长按照频率矩阵重新分配,其中M为码长矩阵,q为频率矩阵,W为最终调整过顺序的码长矩阵,i为码字个数。
根据本发明的一个实施例,排序后的数据为待压缩的数据中每个字符出现的次数进行从小到大排序后的数据。
根据本发明的一个实施例,比较器组配置为在一个时钟周期内在存储器组中的每个存储器中读取1个数据进行比较,将最小的两个数据求和后按照预设规则存储到存储器组中。
根据本发明的一个实施例,预设规则为如果最小的两个数据中的任一个来自第一存储器或第二存储器,将求和后的数据存储到第三存储器或第四存储器中;如果最小的两个数据来自第三存储器和第四存储器,将求和后的数据存储到第五存储器或第六存储器中;如果最小的两个数据中的任一个来自第五存储器或第六存储器,将求和后的数据存储到第五存储器或第六存储器中。
根据本发明的一个实施例,第三存储器、第四存储器、第五存储器和第六存储器中的初始值为空,在比较器组进行数据比较时,如果检测到存储器中的值为空,为存储器赋最大值。
本发明具有以下有益技术效果:本发明实施例提供的动态哈夫曼编码的码长生成装置,通过设置乒乓存储模块,乒乓存储模块配置为用于存储排序后的数据;码长生成模块,码长生成模块配置为接收乒乓存储模块存储的数据,并基于乒乓存储模块中存储的数据和若干个比较器计算出码长矩阵和码字矩阵;码长恢复模块,码长恢复模块配置为基于码长生成模块计算得到的码长矩阵和码字矩阵以及数据的频率矩阵将数据中字符对应的码长按照频率矩阵重新分配的技术方案,能够在建树时节省2/3的时间,并且满足在每个时钟周期都可以对码字建立码长,能够提升编码器的吞吐率,能够缩短链路处理延时,从而提升数据序列的编码效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明一个实施例的动态哈夫曼编码的码长生成装置的示意图;
图2为根据本发明一个实施例的乒乓存储模块的示意图;
图3为根据本发明一个实施例的码长生成模块的示意图。
具体实施方式
以下描述了本公开的实施例。然而,应该理解,所公开的实施例仅仅是示例,并且其他实施例可以采取各种替代形式。附图不一定按比例绘制;某些功能可能被夸大或最小化以显示特定部件的细节。因此,本文公开的具体结构和功能细节不应被解释为限制性的,而仅仅是作为用于教导本领域技术人员以各种方式使用本发明的代表性基础。如本领域普通技术人员将理解的,参考任何一个附图所示出和描述的各种特征可以与一个或多个其他附图中所示的特征组合以产生没有明确示出或描述的实施例。所示特征的组合为典型应用提供了代表性实施例。然而,与本公开的教导相一致的特征的各种组合和修改对于某些特定应用或实施方式可能是期望的。
基于上述目的,本发明的实施例的第一个方面,提出了一种动态哈夫曼编码的码长生成装置的一个实施例。图1示出的是该装置的示意图。
如图1中所示,该装置可以包括:
乒乓存储模块,乒乓存储模块配置为用于存储排序后的数据。排序后的数据为待压缩的数据中每个字符出现的次数进行从小到大排序后的数据,如图2所示,乒乓存储模块主要是对排序后的数据进行缓存,为了加速数据的传递,模块接口数据传递是通过数组的方式进行传输,为了减低硬件电路的资源,乒乓存储模块将数组格式的数据转存进RAM(随机存取存储器)中,更易于后级读数操作,减少***延时。其工作原理遵循以下原则,排序后的数据轮流写进奇RAM(奇存储器)和偶RAM(偶存储器)中,按照先奇后偶的顺序,因此奇RAM中存储的数据大小小于等于偶RAM中存储的数据,存在奇RAM中数据个数等于或大于偶RAM中数据个数,MUX(选择器)由状态机控制,控制数据是写入奇RAM还是写入偶RAM中。
还包括码长生成模块,码长生成模块配置为接收乒乓存储模块存储的数据,并基于乒乓存储模块中存储的数据和若干个比较器计算出码长矩阵和码字矩阵。如图3所示,码长生成模块包括存储器组(存储器组),存储器组包括LEAF奇RAM(第一存储器)、LEAF偶RAM(第二存储器)、NODE奇RAM(第三存储器)、NODE偶RAM(第四存储器)、ST奇RAM(第五存储器)和ST偶RAM(第六存储器),其中LEAF奇RAM接收乒乓存储模块中奇RAM中存储的数据,LEAF偶RAM接收乒乓存储模块中偶RAM中存储的数据;比较器组,比较器组包括15个比较器,比较器组配置为在一个时钟周期内每个比较器分别输入存储器组中的任意两个RAM中的一个数据进行比较并输出比较结果,其中,每个比较器中输入的数据的来源RAM不完全相同;选择器MUX,选择器配置为接收比较器组输出的比较结果,并基于比较结果生成码长矩阵和码字矩阵。比较器组在一个时钟周期内在存储器组中的每个RAM中读取1个数据进行比较,将最小的两个数据求和后按照预设规则存储到存储器组中,其中,预设规则为如果最小的两个数据中的任一个来自LEAF奇RAM或LEAF偶RAM,将求和后的数据存储到NODE奇RAM或NODE偶RAM中;如果最小的两个数据来自NODE奇RAM和NODE偶RAM,将求和后的数据存储到ST奇RAM或ST偶RAM中;如果最小的两个数据中的任一个来自ST奇RAM或ST偶RAM,将求和后的数据存储到ST奇RAM或ST偶RAM中,其中,NODE奇RAM、NODE偶RAM、ST奇RAM和ST偶RAM中的初始值为空,当比较器组进行数据比较时,如果检测到存储器中的值为空,为存储器赋最大值。每次NODE奇RAM或NODE偶RAM中的数据与ST奇RAM或ST偶RAM中的数据结合时,需要将其下所有的叶子节点码长加1,当LEAF奇RAM或LEAF偶RAM中的数据与NODE奇RAM或NODE偶RAM或ST奇RAM或ST偶RAM中任意数据结合时,则LEAF奇RAM或LEAF偶RAM下的叶子节点码长为1,NODE奇RAM或NODE偶RAM或ST奇RAM或ST偶RAM下的所有叶子节点码长加1。
还包括码长恢复模块,码长恢复模块配置为基于码长生成模块计算得到的码长矩阵和码字矩阵以及数据的频率矩阵将数据中字符对应的码长按照频率矩阵重新分配。码长生成模块输出的码长矩阵是乱序的,是根据比较器每次输出的结果进行存储的,因此,码长恢复模块根据码长矩阵、码字矩阵、频率矩阵,可以将字符对应的码长按照频率矩阵重新分配,使字符得到真实码长。码长恢复使用以下方式:W(q(i))<=M(i),其中M为码长矩阵,q为频率矩阵,W为最终调整过顺序的码长矩阵,i为码字个数。
本发明的技术方案优化了哈夫曼编码中哈夫曼树生成的算法实现,设计一种适用于deflate格式的动态哈夫曼编码码长生成硬件电路。通过将整个动态哈夫曼编码硬件电路划分多个小的功能电路,使得整体硬件电路具有扩展性好,性能强的优势,充分发挥硬件实现软件算法的优势。相比于传统硬件电路实现哈夫曼树生长过程,本发明采用并行比较器组实时进行比较,实现每个时钟周期,都能输出哈夫曼树上的一个节点。对于一颗有50个LEAF的哈夫曼树,本发明共需50个时钟周期,而传统硬件电路,建树过程需要消耗150个时钟周期,极大提升了硬件电路实现哈夫曼树生长效率。
通过本发明的技术方案,能够在建树时节省2/3的时间,并且满足在每个时钟周期都可以对码字建立码长,能够提升编码器的吞吐率,能够缩短链路处理延时,从而提升数据序列的编码效率。
在本发明的一个优选实施例中,还包括:
控制模块,控制模块分别连接到乒乓存储模块、码长生成模块和码长恢复模块,控制模块配置为接收乒乓存储模块的完成信号后向码长生成模块发送使能信号,接收码长生成模块的完成信号后向码长恢复模块发送使能信号。
在本发明的一个优选实施例中,乒乓存储模块包括奇RAM和偶RAM,奇RAM中存储排序后的数据中的奇数位置的数据,偶RAM中存储偶数位置的数据。也就是说,排序后的数据中,第一个、第三个、第五个等奇数位置的数据存储到奇RAM中,第二个、第四个、第六个等偶数位置的数据存储到偶RAM中。
在本发明的一个优选实施例中,码长生成模块包括:
存储器组,存储器组包括LEAF奇RAM、LEAF偶RAM、NODE奇RAM、NODE偶RAM、ST奇RAM和ST偶RAM,其中LEAF奇RAM接收乒乓存储模块中奇RAM中存储的数据,LEAF偶RAM接收乒乓存储模块中偶RAM中存储的数据;
比较器组,比较器组包括15个比较器,比较器组配置为在一个时钟周期内每个比较器分别输入存储器组中的任意两个RAM中的一个数据进行比较并输出比较结果,其中,每个比较器中输入的数据的来源RAM不完全相同;
选择器,选择器配置为接收比较器组输出的比较结果,并基于比较结果生成码长矩阵和码字矩阵。
在本发明的一个优选实施例中,比较器组配置为第一比较器将LEAF奇RAM中的一个数据和LEAF偶RAM中的一个数据进行比较后输出数据小的数据,第二比较器将LEAF奇RAM中的一个数据和NODE奇RAM中的一个数据进行比较后输出数据小的数据,第三比较器将LEAF奇RAM中的一个数据和NODE偶RAM中的一个数据进行比较后输出数据小的数据,第四比较器将LEAF奇RAM中的一个数据和ST奇RAM中的一个数据进行比较后输出数据小的数据,第五比较器将LEAF奇RAM中的一个数据和ST偶RAM中的一个数据进行比较后输出数据小的数据,第六比较器将LEAF偶RAM中的一个数据和NODE奇RAM中的一个数据进行比较后输出数据小的数据,第七比较器将LEAF偶RAM中的一个数据和NODE偶RAM中的一个数据进行比较后输出数据小的数据,第八比较器将LEAF偶RAM中的一个数据和ST奇RAM中的一个数据进行比较后输出数据小的数据,第九比较器将LEAF偶RAM中的一个数据和ST偶RAM中的一个数据进行比较后输出数据小的数据,第十比较器将NODE奇RAM中的一个数据和NODE偶RAM中的一个数据进行比较后输出数据小的数据,第十一比较器将NODE奇RAM中的一个数据和ST奇RAM中的一个数据进行比较后输出数据小的数据,第十二比较器将NODE奇RAM中的一个数据和ST偶RAM中的一个数据进行比较后输出数据小的数据,第十三比较器将NODE偶RAM中的一个数据和ST奇RAM中的一个数据进行比较后输出数据小的数据,第十四比较器将NODE偶RAM中的一个数据和ST偶RAM中的一个数据进行比较后输出数据小的数据,第十五比较器将ST奇RAM中的一个数据和ST偶RAM中的一个数据进行比较后输出数据小的数据。
在本发明的一个优选实施例中,码长恢复模块使用公式:W(q(i))<=M(i)将字符对应的码长按照频率矩阵重新分配,其中M为码长矩阵,q为频率矩阵,W为最终调整过顺序的码长矩阵,i为码字个数。
在本发明的一个优选实施例中,排序后的数据为待压缩的数据中每个字符出现的次数进行从小到大排序后的数据。
在本发明的一个优选实施例中,比较器组配置为在一个时钟周期内在存储器组中的每个RAM中读取1个数据进行比较,将最小的两个数据求和后按照预设规则存储到存储器组中。
在本发明的一个优选实施例中,预设规则为如果最小的两个数据中的任一个来自LEAF奇RAM或LEAF偶RAM,将求和后的数据存储到NODE奇RAM或NODE偶RAM中;如果最小的两个数据来自NODE奇RAM和NODE偶RAM,将求和后的数据存储到ST奇RAM或ST偶RAM中;如果最小的两个数据中的任一个来自ST奇RAM或ST偶RAM,将求和后的数据存储到ST奇RAM或ST偶RAM中。
在本发明的一个优选实施例中,NODE奇RAM、NODE偶RAM、ST奇RAM和ST偶RAM中的初始值为空,在比较器组进行数据比较时,如果检测到RAM中的值为空,为RAM赋最大值。
实施例
待压缩的数据中字符和字符出现的频率如下表1所示:
表1 字符和频率
字符 A B C D E F G H
频率 1 2 5 1 3 11 5 11
因此频率排序后的数据为1,1,2,3,5,5,11,11,排序后的数据存储在乒乓存储模块中的情况是,1,2,5,11存储到奇RAM中,1,3,5,11存储到偶RAM中,然后数据被传递到码长生成装置,其中奇RAM中的数据1,2,5,11存储到LEAF奇RAM中,偶RAM中的数据1,3,5,11存储到LEAF偶RAM中,存储器组中的其他4个RAM中为空值,第一个时钟周期时,6个RAM中的数据经过比较器组中的比较器进行比较,具体为,第一比较器将LEAF奇RAM中的1和LEAF偶RAM中的1进行比较后输出1,第二比较器将LEAF奇RAM中的1和NODE奇RAM中的最大值数(RAM中的值为空,则为RAM赋最大值)进行比较后输出1,第三比较器将LEAF奇RAM中1和NODE偶RAM中的最大值数进行比较后输出1,第四比较器将LEAF奇RAM中的1和ST奇RAM中的最大值数进行比较后输出1,第五比较器将LEAF奇RAM中的1和ST偶RAM中的最大值数进行比较后输出1,第六比较器将LEAF偶RAM中的1和NODE奇RAM中的最大值数进行比较后输出1,第七比较器将LEAF偶RAM中的1和NODE偶RAM中的最大值数进行比较后输出1,第八比较器将LEAF偶RAM中的1和ST奇RAM中的最大值数进行比较后输出1,第九比较器将LEAF偶RAM中的1和ST偶RAM中的最大值数进行比较后输出1,第十比较器将NODE奇RAM中的最大值数和NODE偶RAM中的最大值数进行比较后输出最大值数,第十一比较器将NODE奇RAM中的最大值数和ST奇RAM中的最大值数进行比较后输出最大值数,第十二比较器将NODE奇RAM中的最大值数和ST偶RAM中的最大值数进行比较后输出最大值数,第十三比较器将NODE偶RAM中的最大值数和ST奇RAM中的最大值数进行比较后输出最大值数,第十四比较器将NODE偶RAM中的最大值数和ST偶RAM中的最大值数进行比较后输出最大值数,第十五比较器将ST奇RAM中的最大值数和ST偶RAM中的最大值数进行比较后输出最大值数。将每个比较器中输出的结果传输到选择器MUX中选择最小的两个数据,此时最小的两个数据为1和1,由于1和1的来源分别为LEAF奇RAM和LEAF偶RAM,根据上述预设规则,将1和1求和后存储到NODE奇RAM中,此时的码字矩阵为(1,1),码长矩阵为(1,1)。
第二个时钟周期时,LEAF奇RAM中为2,LEAF偶RAM中为3,NODE奇RAM中为2,其他3个RAM中为空(即最大值),为了方便描述,不再将数据放入具体的比较器中进行比较,比较方式与上述相同。此时6个数字中最小的两个数据为2和2,由于2和2的来源分别为LEAF奇RAM和NODE奇RAM,根据上述预设规则,将2和2求和后存储到NODE偶RAM中,此时的码字矩阵为(2,2,2),码长矩阵为(2,2,1)。
第三个时钟周期时,LEAF奇RAM中为5,LEAF偶RAM中为3,NODE奇RAM中为空,NODE偶RAM中为4,其他2个RAM中为空,此时6个数字中最小的两个数据为3和4,由于3和4的来源分别为LEAF偶RAM和NODE偶RAM,根据上述预设规则,将3和4求和后存储到NODE奇RAM中,此时的码字矩阵为(3,3,3,3),码长矩阵为(3,3,2,1)。
第四个时钟周期时,LEAF奇RAM中为5,LEAF偶RAM中为5,NODE奇RAM中为7,其他3个RAM中为空,此时6个数字中最小的两个数据为5和5,由于5和5的来源分别为LEAF奇RAM和LEAF偶RAM,根据上述预设规则,将5和5求和后存储到NODE偶RAM中,此时的码字矩阵为(3,3,3,3,4,4),码长矩阵为(3,3,2,1,1,1)。
第五个时钟周期时,LEAF奇RAM中为11,LEAF偶RAM中为11,NODE奇RAM中为7,NODE偶RAM中为10,其他2个RAM中为空,此时6个数字中最小的两个数据为7和10,由于7和10的来源分别为NODE奇RAM和NODE偶RAM,根据上述预设规则,将7和10求和后存储到ST奇RAM中,此时的码字矩阵为(5,5,5,5,5,5),码长矩阵为(4,4,3,2,2,2)。
第六个时钟周期时,LEAF奇RAM中为11,LEAF偶RAM中为11,NODE奇RAM中为空,NODE偶RAM中为空,ST奇RAM中为17,ST偶RAM中为空,此时6个数字中最小的两个数据为11和11,由于11和11的来源分别为LEAF奇RAM和LEAF偶RAM,根据上述预设规则,将11和11求和后存储到NODE奇RAM中,此时的码字矩阵为(5,5,5,5,5,5,6,6),码长矩阵为(4,4,3 ,2,2,2,1,1)。
第七个时钟周期时,LEAF奇RAM中为空,LEAF偶RAM中为空,NODE奇RAM中为22,NODE偶RAM中为空,ST奇RAM中为17,ST偶RAM中为空,此时6个数字中最小的两个数据为22和17,由于22和17的来源分别为NODE奇RAM和ST奇RAM,根据上述预设规则,将22和17求和后存储到ST偶RAM中,此时的码字矩阵为(7,7,7,7,7,7,7,7),码长矩阵为(5,5,4,3,3,3,2,2)。此时得到最终的码字矩阵为(7,7,7,7,7,7,7,7),最终的码长矩阵为(5,5,4,3,3,3,2,2)。
通过本发明的技术方案,能够在建树时节省2/3的时间,并且满足在每个时钟周期都可以对码字建立码长,能够提升编码器的吞吐率,能够缩短链路处理延时,从而提升数据序列的编码效率。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。

Claims (6)

1.一种动态哈夫曼编码的码长生成装置,其特征在于,包括:
乒乓存储模块,所述乒乓存储模块配置为用于存储排序后的数据;
码长生成模块,所述码长生成模块配置为接收所述乒乓存储模块存储的数据,并基于所述乒乓存储模块中存储的数据和若干个比较器计算出码长矩阵和码字矩阵,所述码长生成模块包括:
存储器组,所述存储器组包括第一存储器、第二存储器、第三存储器、第四存储器、第五存储器和第六存储器,其中第一存储器接收所述乒乓存储模块中奇存储器中存储的数据,第二存储器接收所述乒乓存储模块中偶存储器中存储的数据;
比较器组,所述比较器组包括15个比较器,所述比较器组配置为在一个时钟周期内每个比较器分别输入所述存储器组中的任意两个存储器中的一个数据进行比较并输出比较结果,其中,每个比较器中输入的数据的来源存储器不完全相同,所述比较器组配置为在一个时钟周期内在所述存储器组中的每个存储器中读取1个数据进行比较,将最小的两个数据求和后按照预设规则存储到存储器组中,所述预设规则为如果最小的两个数据中的任一个来自第一存储器或第二存储器,将求和后的数据存储到第三存储器或第四存储器中;如果最小的两个数据来自第三存储器和第四存储器,将求和后的数据存储到第五存储器或第六存储器中;如果最小的两个数据中的任一个来自第五存储器或第六存储器,将求和后的数据存储到第五存储器或第六存储器中;
选择器,所述选择器配置为接收所述比较器组输出的比较结果,并基于所述比较结果生成码长矩阵和码字矩阵;
码长恢复模块,所述码长恢复模块配置为基于码长生成模块计算得到的码长矩阵和码字矩阵以及数据的频率矩阵将数据中字符对应的码长按照频率矩阵重新分配,所述码长恢复模块使用公式:W(q(i))<=M(i)将字符对应的码长按照频率矩阵重新分配,其中M为码长矩阵,q为频率矩阵,W为最终调整过顺序的码长矩阵,i为码字个数。
2.根据权利要求1所述的装置,其特征在于,还包括:
控制模块,所述控制模块分别连接到所述乒乓存储模块、所述码长生成模块和所述码长恢复模块,所述控制模块配置为接收所述乒乓存储模块的完成信号后向所述码长生成模块发送使能信号,接收所述码长生成模块的完成信号后向所述码长恢复模块发送使能信号。
3.根据权利要求1所述的装置,其特征在于,所述乒乓存储模块包括奇存储器和偶存储器,所述奇存储器中存储排序后的数据中的奇数位置的数据,所述偶存储器中存储偶数位置的数据。
4.根据权利要求1所述的装置,其特征在于,所述比较器组配置为第一比较器将第一存储器中的一个数据和第二存储器中的一个数据进行比较后输出数据小的数据,第二比较器将第一存储器中的一个数据和第三存储器中的一个数据进行比较后输出数据小的数据,第三比较器将第一存储器中的一个数据和第四存储器中的一个数据进行比较后输出数据小的数据,第四比较器将第一存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第五比较器将第一存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第六比较器将第二存储器中的一个数据和第三存储器中的一个数据进行比较后输出数据小的数据,第七比较器将第二存储器中的一个数据和第四存储器中的一个数据进行比较后输出数据小的数据,第八比较器将第二存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第九比较器将第二存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第十比较器将第三存储器中的一个数据和第四存储器中的一个数据进行比较后输出数据小的数据,第十一比较器将第三存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第十二比较器将第三存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第十三比较器将第四存储器中的一个数据和第五存储器中的一个数据进行比较后输出数据小的数据,第十四比较器将第四存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据,第十五比较器将第五存储器中的一个数据和第六存储器中的一个数据进行比较后输出数据小的数据。
5.根据权利要求1所述的装置,其特征在于,排序后的数据为待压缩的数据中每个字符出现的次数进行从小到大排序后的数据。
6.根据权利要求1所述的装置,其特征在于,第三存储器、第四存储器、第五存储器和第六存储器中的初始值为空,在比较器组进行数据比较时,如果检测到存储器中的值为空,为存储器赋最大值。
CN202210055822.4A 2022-01-18 2022-01-18 一种动态哈夫曼编码的码长生成装置 Active CN114095036B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210055822.4A CN114095036B (zh) 2022-01-18 2022-01-18 一种动态哈夫曼编码的码长生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210055822.4A CN114095036B (zh) 2022-01-18 2022-01-18 一种动态哈夫曼编码的码长生成装置

Publications (2)

Publication Number Publication Date
CN114095036A CN114095036A (zh) 2022-02-25
CN114095036B true CN114095036B (zh) 2022-04-22

Family

ID=80308755

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210055822.4A Active CN114095036B (zh) 2022-01-18 2022-01-18 一种动态哈夫曼编码的码长生成装置

Country Status (1)

Country Link
CN (1) CN114095036B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101998122A (zh) * 2010-12-13 2011-03-30 山东大学 Jpeg图像中范式霍夫曼的硬件解码方法及装置
CN107565974A (zh) * 2017-08-14 2018-01-09 同济大学 一种静态哈夫曼并行全编码实现方法
CN112332854A (zh) * 2020-11-27 2021-02-05 平安普惠企业管理有限公司 霍夫曼编码的硬件实现方法、装置及存储介质
CN113839678A (zh) * 2021-08-31 2021-12-24 山东云海国创云计算装备产业创新中心有限公司 一种哈夫曼解码***、方法、设备及计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060146944A1 (en) * 2005-01-05 2006-07-06 Integrated Programmable Communications, Inc. System and method of processing frequency-diversity signals with reduced-sampling-rate receiver
KR102098247B1 (ko) * 2013-11-25 2020-04-08 삼성전자 주식회사 메모리 시스템에서 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101998122A (zh) * 2010-12-13 2011-03-30 山东大学 Jpeg图像中范式霍夫曼的硬件解码方法及装置
CN107565974A (zh) * 2017-08-14 2018-01-09 同济大学 一种静态哈夫曼并行全编码实现方法
CN112332854A (zh) * 2020-11-27 2021-02-05 平安普惠企业管理有限公司 霍夫曼编码的硬件实现方法、装置及存储介质
CN113839678A (zh) * 2021-08-31 2021-12-24 山东云海国创云计算装备产业创新中心有限公司 一种哈夫曼解码***、方法、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN114095036A (zh) 2022-02-25

Similar Documents

Publication Publication Date Title
US9454552B2 (en) Entropy coding and decoding using polar codes
US11431351B2 (en) Selection of data compression technique based on input characteristics
CN110943744B (zh) 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置
CN111884660B (zh) 一种哈夫曼编码设备
CN111510156A (zh) 一种基于分段的哈夫曼动态压缩及解压大文件的方法
US20140266819A1 (en) Compactly storing geodetic points
CN111211787A (zh) 一种工业数据压缩方法、***、存储介质及终端
CN114268323B (zh) 支持行存的数据压缩编码方法、装置及时序数据库
Zhang et al. CEAZ: accelerating parallel I/O via hardware-algorithm co-designed adaptive lossy compression
CN114095036B (zh) 一种动态哈夫曼编码的码长生成装置
Mantoro et al. The performance of text file compression using Shannon-Fano and Huffman on small mobile devices
CN110401451B (zh) 基于字符集变换的自动机空间压缩方法及***
CN107623524B (zh) 一种基于硬件的Huffman编码方法及***
CN113381769B (zh) 一种基于fpga的译码器
CN108932315A (zh) 一种数据解压的方法以及相关装置
CN114884618A (zh) 一种基于gpu的5g多用户ldpc码高速译码器及其译码方法
CN110569487B (zh) 一种基于高频率字符替代算法的Base64扩展编码方法及***
KR20220100030A (ko) 패턴 기반 캐시 블록 압축
CN113726342B (zh) 面向大规模图迭代计算的分段差值压缩与惰性解压方法
Howard et al. Parallel lossless image compression using Huffman and arithmetic coding
CN114640357B (zh) 数据编码方法、设备及存储介质
CN112073069B (zh) 一种适用于集成电路测试的测试向量无损压缩方法
CN112200301B (zh) 卷积计算装置及方法
US11914443B2 (en) Power-aware transmission of quantum control signals
CN111213146A (zh) 伪数据生成装置、其方法和程序

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant