CN111884660A - 一种哈夫曼编码设备 - Google Patents
一种哈夫曼编码设备 Download PDFInfo
- Publication number
- CN111884660A CN111884660A CN202010669501.4A CN202010669501A CN111884660A CN 111884660 A CN111884660 A CN 111884660A CN 202010669501 A CN202010669501 A CN 202010669501A CN 111884660 A CN111884660 A CN 111884660A
- Authority
- CN
- China
- Prior art keywords
- coding
- huffman
- data
- huffman coding
- dynamic
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion 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
本申请公开了本申请提供的一种哈夫曼编码设备,包括接口电路、编码调度器;动态哈夫曼编码器,用于接收到编码调度器的动态哈夫曼编码指令后,生成待编码数据的动态编码长度序列;输入缓冲存储器写控制器;输入缓冲存储器读控制器,用于接收到无压缩指令后,将待编码数据直接传输至输出控制器;接收到固定哈夫曼编码指令后,读取固定哈夫曼表,并基于固定哈夫曼表对待编码数据进行固定哈夫曼编码,得到固定哈夫曼编码结果;接收到动态哈夫曼编码指令后,读取动态编码长度序列,基于动态编码长度序列对待编码数据进行哈夫曼编码,得到动态哈夫曼编码结果;输出控制器、输入缓冲存储器;可以满足不同类型的哈夫曼编码,灵活性高。
Description
技术领域
本申请涉及哈夫曼编码技术领域,更具体地说,涉及一种哈夫曼编码设备。
背景技术
大数据对数据存储、通信信道的带宽提出较大挑战,数据压缩重要性日渐明显。数据压缩主要分为有损压缩和无损压缩。有损压缩利用人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响较小并获得较大的压缩比。有损压缩广泛应用于语音,图像和视频数据的压缩。无损压缩是利用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真,但压缩率受到数据统计冗余度的理论限制。这类方法广泛用于文本数据,程序和特殊应用场合的图像数据的压缩。压缩的关键在于编码,在对数据进行编码时,对出现频次高的信息输出较短的码字,而对出现频次较低的数据用较长的码字表示,使得信息总的码长变短进而实现压缩。哈夫曼编码作为一种无损数据压缩编码在图像处理,数据存储方面应用广泛。
然而,在哈夫曼编码的应用过程中,可能需要不同类型的哈夫曼编码,而现有技术中并不能满足此种需求。
综上所述,如何提高哈夫曼编码的灵活性是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种哈夫曼编码设备,其能在一定程度上解决如何提高哈夫曼编码的灵活性的技术问题。
为了实现上述目的,本申请提供如下技术方案:
一种哈夫曼编码设备,包括:
接口电路,用于接收待编码数据;
编码调度器,用于发送控制指令;
与所述接口电路及所述编码调度器连接的动态哈夫曼编码器,用于接收到所述编码调度器的动态哈夫曼编码指令后,生成所述待编码数据的动态编码长度序列;
与所述接口电路及所述编码调度器连接的输入缓冲存储器写控制器,用于将所述待编码数据写入输入缓冲存储器;
与所述输入缓冲存储器及所述编码调度器连接的输入缓冲存储器读控制器,用于从所述输入缓冲存储器中读取所述待编码数据,并在接收到编码调度器的无压缩指令后,将所述待编码数据直接传输至输出控制器;在接收到所述编码调度器的固定哈夫曼编码指令后,读取固定哈夫曼表,并基于所述固定哈夫曼表对所述待编码数据进行固定哈夫曼编码,得到固定哈夫曼编码结果并传输至所述输出控制器;在接收到所述编码调度器的所述动态哈夫曼编码指令后,读取所述动态编码长度序列,基于所述动态编码长度序列对所述待编码数据进行哈夫曼编码,得到动态哈夫曼编码结果并传输至所述输出控制器;
所述输出控制器,用于对自身接收的数据进行封装并输出;
所述输入缓冲存储器,用于存储所述待编码数据。
优选的,所述动态哈夫曼编码器包括:
与所述接口电路及所述编码调度器连接的统计器,用于在接收到所述动态哈夫曼编码指令后,对所述待编码数据中的原文字符、匹配偏移距离、匹配长度进行频次统计,得到频次统计结果,并将所述频次统计结果传输至排序器;
与所述统计器连接的所述排序器,用于对所述频次统计结果进行排序,得到排序结果,并传输所述排序结果至哈夫曼编码长度序列产生器;
与所述排序器及所述编码调度器连接的所述哈夫曼编码长度序列产生器,用于基于所述排序结果生成匹配偏移距离编码长度序列、原文字符/匹配长度编码长度序列,并对所述匹配偏移距离编码长度序列、所述原文字符/匹配长度编码长度序列进行游程编码,得到游程编码结果;基于所述游程编码结果生成所述动态编码长度序列,或传输所述游程编码结果至所述排序器。
优选的,所述接口电路包括与LZ77处理器连接的接口,用于接收所述LZ77处理器生成的所述原文字符、所述匹配偏移距离、所述匹配长度;
所述接口电路还用于对所述原文字符进行统计映射,和/或按照DEFLATE算法对所述匹配长度进行映射,和/或按照所述DEFLATE算法对所述匹配偏移距离进行2字节内容合并,并将处理结果作为所述待编码数据输出。
优选的,所述接口电路的工作模式包括串行工作模式、并行工作模式、同步工作模式、异步工作模式。
优选的,所述输入缓冲存储器包括第一预设数量的输入缓冲存储器分区。
优选的,所述统计器兼容串行接口和并行接口。
优选的,所述排序器包括第二预设数量的排序层,且所述排序层具有重构功能。
优选的,所述第二预设数量包括9;
所述排序层的重构等级包括N级,N的值为5到9。
优选的,所述哈夫曼编码长度序列产生器包括:
存储哈夫曼树中位于偶叶节点的数据的偶叶节点存储器;
存储所述哈夫曼树中位于奇叶节点的数据的奇叶节点存储器;
存储所述哈夫曼树中位于偶父节点的数据的偶父节点存储器;
存储所述哈夫曼树中位于奇父节点的数据的奇父节点存储器;
存储所述哈夫曼树中位于偶子树节点的数据的偶子树节点存储器;
存储所述哈夫曼树中位于奇子树节点的数据的奇子树节点存储器。
优选的,还包括:
与所述接口电路连接的测试序列生成器,用于生成测试编码序列并传输至所述接口电路。
本申请提供的一种哈夫曼编码设备,包括接口电路,用于接收待编码数据;编码调度器,用于发送控制指令;与接口电路及编码调度器连接的动态哈夫曼编码器,用于接收到编码调度器的动态哈夫曼编码指令后,生成待编码数据的动态编码长度序列;与接口电路及编码调度器连接的输入缓冲存储器写控制器,用于将待编码数据写入输入缓冲存储器;与输入缓冲存储器及编码调度器连接的输入缓冲存储器读控制器,用于从输入缓冲存储器中读取待编码数据,并在接收到编码调度器的无压缩指令后,将待编码数据直接传输至输出控制器;在接收到编码调度器的固定哈夫曼编码指令后,读取固定哈夫曼表,并基于固定哈夫曼表对待编码数据进行固定哈夫曼编码,得到固定哈夫曼编码结果并传输至输出控制器;在接收到编码调度器的动态哈夫曼编码指令后,读取动态编码长度序列,基于动态编码长度序列对待编码数据进行哈夫曼编码,得到动态哈夫曼编码结果并传输至输出控制器;输出控制器,用于对自身接收的数据进行封装并输出;输入缓冲存储器,用于存储待编码数据。本申请中,输入缓冲存储器读控制器在编码调度器的控制下,在接口电路、动态哈夫曼编码、输入缓冲存储器写控制器、输入缓冲存储器、输出控制器、输入缓冲存储器的协同配合下,可以选择性的进行无压缩或进行固定哈夫曼编码或进行动态哈夫曼编码,可以满足不同类型的哈夫曼编码,灵活性高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种哈夫曼编码设备的第一结构示意图;
图2为本申请实施例提供的一种哈夫曼编码设备的第二结构示意图;
图3为接口电路及输入缓冲存储器的结构示意图;
图4为统计器的结构示意图;
图5为排序器的结构示意图;
图6为1到3级可重构的排序网络示意图;
图7为哈夫曼编码长度序列产生器的结构示意图;
图8为哈夫曼编码长度序列生成时序示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,图1为本申请实施例提供的一种哈夫曼编码设备的第一结构示意图。
本申请实施例提供的一种哈夫曼编码设备,可以包括:
接口电路10,用于接收待编码数据;
编码调度器11,用于发送控制指令;
与接口电路10及编码调度器11连接的动态哈夫曼编码器12,用于接收到编码调度器11的动态哈夫曼编码指令后,生成待编码数据的动态编码长度序列;
与接口电路10及编码调度器11连接的输入缓冲存储器写控制器13,用于将待编码数据写入输入缓冲存储器14;
与输入缓冲存储器14及编码调度器11连接的输入缓冲存储器读控制器15,用于从输入缓冲存储器14中读取待编码数据,并在接收到编码调度器11的无压缩指令后,将待编码数据直接传输至输出控制器16;在接收到编码调度器11的固定哈夫曼编码指令后,读取固定哈夫曼表,并基于固定哈夫曼表对待编码数据进行固定哈夫曼编码,得到固定哈夫曼编码结果并传输至输出控制器16;在接收到编码调度器11的动态哈夫曼编码指令后,读取动态编码长度序列,基于动态编码长度序列对待编码数据进行哈夫曼编码,得到动态哈夫曼编码结果并传输至输出控制器16;
输出控制器16,用于对自身接收的数据进行封装并输出;
输入缓冲存储器14,用于存储待编码数据。
实际应用中,在哈夫曼编码设备的应用过程中,用户可以通过编码调度器来控制哈夫曼设备的编码类型,也即可以编码调度器来控制哈夫曼设备进行无压缩编码、固定哈夫曼编码还是动态哈夫曼编码等。且输出控制器在对自身接收的数据进行封装的过程中,并不是直接对接收的数据进行封装,而是需要等待接收的数据满足封装要求后,才会对数据进行封装,比如等待数据长度满足压缩数据块的长度要求后,才会执行封装操作,且在封装操作中,输出控制器可以为每个压缩数据块执行添加数据头、字节对齐等操作。
应当指出,输入缓冲存储器读控制器在进行固定哈夫曼编码时所应用的固定哈夫曼表可以由用户定义并输入至本申请的哈夫曼编码设备,且本申请中还可以设置专门用于存储固定哈夫曼表的存储器,当然,固定哈夫曼表还可以基于其他方式确定等,本申请在此不错具体限定。
本申请提供的一种哈夫曼编码设备,包括接口电路,用于接收待编码数据;编码调度器,用于发送控制指令;与接口电路及编码调度器连接的动态哈夫曼编码器,用于接收到编码调度器的动态哈夫曼编码指令后,生成待编码数据的动态编码长度序列;与接口电路及编码调度器连接的输入缓冲存储器写控制器,用于将待编码数据写入输入缓冲存储器;与输入缓冲存储器及编码调度器连接的输入缓冲存储器读控制器,用于从输入缓冲存储器中读取待编码数据,并在接收到编码调度器的无压缩指令后,将待编码数据直接传输至输出控制器;在接收到编码调度器的固定哈夫曼编码指令后,读取固定哈夫曼表,并基于固定哈夫曼表对待编码数据进行固定哈夫曼编码,得到固定哈夫曼编码结果并传输至输出控制器;在接收到编码调度器的动态哈夫曼编码指令后,读取动态编码长度序列,基于动态编码长度序列对待编码数据进行哈夫曼编码,得到动态哈夫曼编码结果并传输至输出控制器;输出控制器,用于对自身接收的数据进行封装并输出;输入缓冲存储器,用于存储待编码数据。本申请中,输入缓冲存储器读控制器在编码调度器的控制下,在接口电路、动态哈夫曼编码、输入缓冲存储器写控制器、输入缓冲存储器、输出控制器、输入缓冲存储器的协同配合下,可以选择性的进行无压缩或进行固定哈夫曼编码或进行动态哈夫曼编码,可以满足不同类型的哈夫曼编码,灵活性高。
请参阅图2,图2为本申请实施例提供的一种哈夫曼编码设备的第二结构示意图。
本申请实施例提供的哈夫曼编码设备中,因为动态哈夫曼编码过程中,会涉及到频次统计、排序、生成编码长度序列、游程编码等操作,所以为了准确实现动态哈夫曼编码中各个操作,动态哈夫曼编码器12可以包括:
与接口电路10及编码调度器11连接的统计器121,用于在接收到动态哈夫曼编码指令后,对待编码数据中的原文字符、匹配偏移距离、匹配长度进行频次统计,得到频次统计结果,并将频次统计结果传输至排序器122;
与统计器121连接的排序器122,用于对频次统计结果进行排序,得到排序结果,并传输排序结果至哈夫曼编码长度序列产生器123;
与排序器121及编码调度器11连接的哈夫曼编码长度序列产生器123,用于基于排序结果生成匹配偏移距离编码长度序列、原文字符/匹配长度编码长度序列,并对匹配偏移距离编码长度序列、原文字符/匹配长度编码长度序列进行游程编码,得到游程编码结果;基于游程编码结果生成动态编码长度序列,或传输游程编码结果至排序器122。
应当指出,哈夫曼编码长度序列产生器将游程编码结果传输至排序器之后,相当于对游程编码结果进行新一轮的动态哈夫曼编码,这样可以进一步压缩编码长度,也即实际应用中,可以根据对编码长度的压缩要求来多次对待编码数据进行动态哈夫曼编码,以得到满足编码长度要求的动态编码长度序列。
此外,实际应用中,为了进一步细化动态哈夫曼编码过程中的操作,哈夫曼编码长度序列产生器还可以包括匹配偏移距离编码长度序列产生器、原文字符/匹配长度编码长度序列产生器、游程编码器等,本申请在此不做具体限定。
本申请实施例提供的哈夫曼编码设备中,因为在哈夫曼编码的应用过程中,哈夫曼编码可能与LZ77压缩算法相结合来实现DEFLATE压缩算法,其中,LZ77是一种基于字典的、“滑动窗”的无损压缩算法,DEFLATE是同时使用LZ77与Huffman Coding(哈夫曼编码)的一种无损数据压缩方式,为了实现此种功能,本申请提供的哈夫曼编码设备中,接口电路可以包括与LZ77处理器连接的接口,用于接收LZ77处理器生成的原文字符、匹配偏移距离、匹配长度;相应的,因为DEFLATE压缩算法中需要对原文字符、匹配长度、匹配偏移距离进行统计预处理,所以接口电路还可以用于对原文字符进行统计映射,和/或按照DEFLATE算法对匹配长度进行映射,和/或按照DEFLATE算法对匹配偏移距离进行2字节内容合并,并将处理结果作为待编码数据输出。在此过程中,因为原文字符的取值范围为0~255,所以接口电路对原文字符进行1对1统计映射后,得到的取值范围仍为0~255,可以记录为Literal_0到Literal_255;因为在匹配长度内部映射中,DEFLATE匹配长度为3~258,前级Lz77用1个byte表示,单一个byte共8比特表示0~255,因此内部映射0表示3,1表示4,255表示258,也即匹配长度的取值范围为3~258,所以接口电路在对匹配长度进行映射的过程中,会根据DEFLATE标准将取值范围3~258的匹配长度映射到29个匹配长度统计项,也即匹配长度内部映射的取值范围为0~28,可以记录为Length_0到Length_255;因为在匹配偏移距离2字节内容合并过程中,DEFLATE匹配距离最大32768,前级lz77无法用一个byte表示,需要2个byte,因此对匹配偏移距离要做2字节内容合并后,匹配偏移距离的取值范围为1~32768,所以接口电路在对匹配偏移距离进行2字节内容合并的过程中,会根据DEFLATE标准将取值范围1~32768的匹配长度映射到30个匹配偏移距离统计项,也即对匹配偏移距离进行2字节内容合并的取值范围为0~30,可以记录为Distance_0到Distance_29。
应当指出,在此过程中,输入缓冲存储器读控制器在进行固定哈夫曼编码时所应用的固定哈夫曼表,便需要依据Deflate数据压缩标准内建。
本申请实施例提供的哈夫曼编码设备中,接口电路及输入缓冲存储器的结构可以如图3所示,其中,接口电路的工作模式可以包括串行工作模式、并行工作模式、同步工作模式、异步工作模式。且输入缓冲存储器可以包括第一预设数量的输入缓冲存储器分区,比如输入缓冲存储器可以包括8个输入缓冲存储器分区等。
应当指出,实际应用中,可以将静态参数配置为Parallel_mode=0,这样一个时钟周期内,接口电路只接收一个原文字符/匹配长度/匹配偏移距离以及其相应的标识符,比如只接收元素0;可以将静态参数配置为Parallel_mode=1:这样,一个时钟周期内,接口电路可以接收8个原文字符/匹配长度/匹配编译距离以及8个相应的标识符,比如接收元素0~7;可以将静态参数配置为Async_mode=0,这样,接口电路只能工作在单一时钟下,也即只能进行同步处理;相应的,可以将静态参数配置为Async_mode=1,这样接口时钟和哈夫曼编码电路时钟可以不同,接口电路可以进行异步处理;可以将硬件接口信号配置为Deflate_en=1,这样接口电路会处理内容与指示符的合并,统计预处理对DEFLATE模式匹配长度,匹配偏移距离的处理。在此过程中,可以借助各个元素的标识来确定该元素的类型,比如将元素的标识设置为00,表示该元素无效,将元素的标识设置为01,表示该元素为原文字符,将元素的标识设置为10,表示该元素为匹配长度,将元素的标识设置为11,表示该元素为匹配偏移距离等。
应当指出,实际应用中,输入缓冲存储器在缓冲区大小的选择和存储器的读写控制上可以兼顾性能与稳定性,比如根据哈夫曼编码的处理能力和前级逻辑的处理能力进行计算的同时,可以设计仍保留反压机制,即使在后级输出受阻时,仍可通过反压机制通知前级逻辑暂停待编码数据的输入。且设计实现输入缓冲存储器分为8个分区,以便在进行哈夫曼编码时,前级逻辑仍可将下一个需要哈夫曼编码的数据块写入,提高哈夫曼编码模块的吞吐量,比如第一个原始数据块使用了缓冲区的分区1~5,那么在哈夫曼对第一个数据块进行编码时需读取分区1~5,前级逻辑仍可将下一个数据块从缓冲区分区6写入,避免同一个存储器读写访问冲突,第2个数据块大小假设也需要占5个分区,那么当写完分区8,需要写入分区1时,哈夫曼编码已在编码第4个分区(第一个数据块),可以避免存储器读写冲突下性能最大化。
应当指出,实际应用中,为了在外界没有输入待编码数据的情况下,还可以对本申请提供的哈夫曼编码设备进行调试等操作,本申请提供的哈夫曼编码设备中还可以包括:与接口电路连接的测试序列生成器,用于生成测试编码序列并传输至接口电路。具体的,测试序列生成器可以直接内置在接口电路中,以图3为例,在启用测试模式时,可以将硬件接口信号配置为debug_en=1,此时,测试序列生成器便可以生成多种特定测试编码序列用于哈夫曼编码电路输入,以便将哈夫曼编码电路作为调试分割点使用内建特定测试序列进行哈夫曼编码电路及后续电路的并行调试;且在此过程中,可以对接口电路的工作模式进行设置,比如为接口电路设置功能模式及调试模式,以便接口电路在功能模式下接收外界传输的待编码数据,在调试模式下启用测试序列生成器来生成测试编码序列。
本申请实施例提供的哈夫曼编码设备中,为了提升性能,统计器可以兼容串行接口和并行接口。假设统计器的结构如图4所示,统计器包括统计网络和统计合并网络,且图中灰色填充部分是在参数静态配置为并行模式下时才产生的逻辑电路,虚线部分为DEFLATE模式下使能,未使能时电路相应时钟输入被时钟门控关闭,减少动态功耗;在DEFLATE模式下,统计器对原文字符(256个),匹配长度(29个),匹配偏移距离(30个)出现频次的统计,在非DEFLATE模式下,统计器只对原文字符出现频次统计。假设统计网络被配置为并行模式,且1个时钟周期接收8个元素,则第一级统计网络统计针对元素0到元素7的并行统计,第二级统计合并网络完成对应字符出现频次的合并,比如第一个周期字符A出现在元素0和元素7,元素0和元素7并行译码各记录字符A出现过1次,第二个周期第二级的合并统计网络将字符A的出现频次合并为2,数据流持续进入,统计及合并统计持续进行;DEFLATE模式下与之类似,仅增加匹配长度和匹配距离的统计即可(图8中虚线框部分);而串行模式相对简单,仅需要一级统计网路即可。
本申请实施例提供的哈夫曼编码设备中,为了进一步提升性能,排序器可以包括第二预设数量的排序层,且排序层具有重构功能。
实际应用中,因为DEFLATE需要对原文字符,匹配长度以及配匹偏移距离进行排序,根据DEFLATE标准,原文字符256个,映射后的配匹长度29个,映射后的匹配偏移距离30个,因此初始的排序网络可以为9级(2的9次方=512>256+29+30=315),以完成快速排序,因此,本申请中第二预设数量可以包括9;且排序层的重构等级包括N级,N的值为5到9。
为便于理解,假设排序器的结构如图5所示,且1到3级可重构的排序网络示意图如图6所示,当哈夫曼编码设备工作在非DEFLATE模式下,排序器只需处理256个字符,此时,重构为8级排序网络(36个时钟周期排序完成),相比未作重构的9级排序时间(45个时钟周期),可以缩短20%的排序时长;当哈夫曼编码设备工作在DEFLATE模式下,排序器在游程编码前为9级排序网络,而当处理流程调度至游程编码完成后,需要对游程编码的输出编码长度序列再次进行哈夫曼编码时,根据标准,待排序的元素为19个,此时排序网络重构为5级排序网络即可,相比未重构的情况,排序时间可以缩短67%;当哈夫曼编码设备基于上下文重构时,比如在DEFLATE模式下,理论上在游程编码前需要对256个原文字符、29个映射后的匹配长度、30个映射后的配匹偏移距离,共315个元素进行排序,但此时原文仅出现了256个字符中的180个,那么此时需要排序的元素变为180,总数变为239,此时重构为8级排序网络即可满足当前需求,还可以缩短排序时长。
本申请实施例提供的哈夫曼编码设备中,为了进一步提升性能,哈夫曼编码长度序列产生器可以包括:存储哈夫曼树中位于偶叶节点的数据的偶叶节点存储器;存储哈夫曼树中位于奇叶节点的数据的奇叶节点存储器;存储哈夫曼树中位于偶父节点的数据的偶父节点存储器;存储哈夫曼树中位于奇父节点的数据的奇父节点存储器;存储哈夫曼树中位于偶子树节点的数据的偶子树节点存储器;存储哈夫曼树中位于奇子树节点的数据的奇子树节点存储器。
实际应用中,假设哈夫曼编码长度序列产生器的结构如图7所示,在图7中,Even_Dist存储器表示存储哈夫曼树中位于偶叶节点的数据的偶叶节点存储器;Odd_Dist存储器表示存储哈夫曼树中位于奇叶节点的数据的奇叶节点存储器;Even_node存储器表示存储哈夫曼树中位于偶父节点的数据的偶父节点存储器;Odd_node存储器表示存储哈夫曼树中位于奇父节点的数据的奇父节点存储器;Even_SubT存储器表示存储哈夫曼树中位于偶子树节点的数据的偶子树节点存储器;Odd_SubT存储器表示存储哈夫曼树中位于奇子树节点的数据的奇子树节点存储器;且哈夫曼编码长度序列生成时序示意图如图8所示,因为奇节点及偶节点上的数据分别存储在比特的存储器中,所以本申请提供的哈夫曼编码设备可以在硬件实现上将叶节点、父节点以及子树节点分奇偶存放,这样可以在一个时钟周期读取2个叶子节点,2个父节点以及2个子树节点参加比较,确定合并所使用的对象,加速哈夫曼树模拟创建过程,由图8可以看出,相比逐个比较的方式,速度可以提高40%。
应当指出,在合并过程中,哈夫曼编码长度序列产生器选取2个叶子节点,2个父节点以及2个子树节点中频次最小及次小的进行合并,该过程中叶节点合并的称为父节点,按乒乓的方式存入奇偶父节点存储器;父节点合并或叶节点与父节点合并生成的节点称为子树节点同样按照乒乓的方式存入奇偶子树节点存储器;该过程持续到所有节点合并完成,即可获得叶节点编码长度。
本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种哈夫曼编码设备,其特征在于,包括:
接口电路,用于接收待编码数据;
编码调度器,用于发送控制指令;
与所述接口电路及所述编码调度器连接的动态哈夫曼编码器,用于接收到所述编码调度器的动态哈夫曼编码指令后,生成所述待编码数据的动态编码长度序列;
与所述接口电路及所述编码调度器连接的输入缓冲存储器写控制器,用于将所述待编码数据写入输入缓冲存储器;
与所述输入缓冲存储器及所述编码调度器连接的输入缓冲存储器读控制器,用于从所述输入缓冲存储器中读取所述待编码数据,并在接收到编码调度器的无压缩指令后,将所述待编码数据直接传输至输出控制器;在接收到所述编码调度器的固定哈夫曼编码指令后,读取固定哈夫曼表,并基于所述固定哈夫曼表对所述待编码数据进行固定哈夫曼编码,得到固定哈夫曼编码结果并传输至所述输出控制器;在接收到所述编码调度器的所述动态哈夫曼编码指令后,读取所述动态编码长度序列,基于所述动态编码长度序列对所述待编码数据进行哈夫曼编码,得到动态哈夫曼编码结果并传输至所述输出控制器;
所述输出控制器,用于对自身接收的数据进行封装并输出;
所述输入缓冲存储器,用于存储所述待编码数据。
2.根据权利要求1所述的哈夫曼编码设备,其特征在于,所述动态哈夫曼编码器包括:
与所述接口电路及所述编码调度器连接的统计器,用于在接收到所述动态哈夫曼编码指令后,对所述待编码数据中的原文字符、匹配偏移距离、匹配长度进行频次统计,得到频次统计结果,并将所述频次统计结果传输至排序器;
与所述统计器连接的所述排序器,用于对所述频次统计结果进行排序,得到排序结果,并传输所述排序结果至哈夫曼编码长度序列产生器;
与所述排序器及所述编码调度器连接的所述哈夫曼编码长度序列产生器,用于基于所述排序结果生成匹配偏移距离编码长度序列、原文字符/匹配长度编码长度序列,并对所述匹配偏移距离编码长度序列、所述原文字符/匹配长度编码长度序列进行游程编码,得到游程编码结果;基于所述游程编码结果生成所述动态编码长度序列,或传输所述游程编码结果至所述排序器。
3.根据权利要求2所述的哈夫曼编码设备,其特征在于,所述接口电路包括与LZ77处理器连接的接口,用于接收所述LZ77处理器生成的所述原文字符、所述匹配偏移距离、所述匹配长度;
所述接口电路还用于对所述原文字符进行统计映射,和/或按照DEFLATE算法对所述匹配长度进行映射,和/或按照所述DEFLATE算法对所述匹配偏移距离进行2字节内容合并,并将处理结果作为所述待编码数据输出。
4.根据权利要求3所述的哈夫曼编码设备,其特征在于,所述接口电路的工作模式包括串行工作模式、并行工作模式、同步工作模式、异步工作模式。
5.根据权利要求2所述的哈夫曼编码设备,其特征在于,所述输入缓冲存储器包括第一预设数量的输入缓冲存储器分区。
6.根据权利要求2所述的哈夫曼编码设备,其特征在于,所述统计器兼容串行接口和并行接口。
7.根据权利要求2所述的哈夫曼编码设备,其特征在于,所述排序器包括第二预设数量的排序层,且所述排序层具有重构功能。
8.根据权利要求7所述的哈夫曼编码设备,其特征在于,所述第二预设数量包括9;
所述排序层的重构等级包括N级,N的值为5到9。
9.根据权利要求2所述的哈夫曼编码设备,其特征在于,所述哈夫曼编码长度序列产生器包括:
存储哈夫曼树中位于偶叶节点的数据的偶叶节点存储器;
存储所述哈夫曼树中位于奇叶节点的数据的奇叶节点存储器;
存储所述哈夫曼树中位于偶父节点的数据的偶父节点存储器;
存储所述哈夫曼树中位于奇父节点的数据的奇父节点存储器;
存储所述哈夫曼树中位于偶子树节点的数据的偶子树节点存储器;
存储所述哈夫曼树中位于奇子树节点的数据的奇子树节点存储器。
10.根据权利要求1至9任一项所述的哈夫曼编码设备,其特征在于,还包括:
与所述接口电路连接的测试序列生成器,用于生成测试编码序列并传输至所述接口电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010669501.4A CN111884660B (zh) | 2020-07-13 | 2020-07-13 | 一种哈夫曼编码设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010669501.4A CN111884660B (zh) | 2020-07-13 | 2020-07-13 | 一种哈夫曼编码设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111884660A true CN111884660A (zh) | 2020-11-03 |
CN111884660B CN111884660B (zh) | 2022-06-17 |
Family
ID=73151112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010669501.4A Active CN111884660B (zh) | 2020-07-13 | 2020-07-13 | 一种哈夫曼编码设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111884660B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112666008A (zh) * | 2020-11-26 | 2021-04-16 | 山东云海国创云计算装备产业创新中心有限公司 | 一种SoC封装互连结构剪切可靠性等效测试装置及方法 |
CN113965207A (zh) * | 2021-12-17 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种基于deflate霍夫曼编码的动态码表生成装置和方法 |
CN114697672A (zh) * | 2020-12-30 | 2022-07-01 | 中国科学院计算技术研究所 | 基于游程全零编码的神经网络量化压缩方法及系统 |
CN116318173A (zh) * | 2023-05-10 | 2023-06-23 | 青岛农村商业银行股份有限公司 | 一种金融融资服务数字智能管理系统 |
CN117651076A (zh) * | 2023-11-29 | 2024-03-05 | 哈尔滨工程大学 | 适配跨域多信道保密信源编码压缩解压方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5970177A (en) * | 1995-06-07 | 1999-10-19 | America Online, Inc. | Data compression using selective encoding |
WO2001031794A1 (en) * | 1999-10-29 | 2001-05-03 | Koninklijke Philips Electronics N.V. | Variable-length decoding |
US8125357B1 (en) * | 2010-03-23 | 2012-02-28 | Sandia Corporation | Deflate decompressor |
CN102970043A (zh) * | 2012-11-14 | 2013-03-13 | 无锡芯响电子科技有限公司 | 一种基于gzip的压缩硬件系统及其加速方法 |
CN103248369A (zh) * | 2013-05-21 | 2013-08-14 | 南京畅洋科技有限公司 | 基于fpga的压缩系统及其方法 |
CN107395209A (zh) * | 2017-07-03 | 2017-11-24 | 北京京东尚科信息技术有限公司 | 数据压缩方法、数据解压缩方法及其设备 |
CN107592117A (zh) * | 2017-08-15 | 2018-01-16 | 深圳前海信息技术有限公司 | 基于Deflate的压缩数据块输出方法及装置 |
CN110334066A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的Gzip解压缩方法、装置及系统 |
-
2020
- 2020-07-13 CN CN202010669501.4A patent/CN111884660B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5970177A (en) * | 1995-06-07 | 1999-10-19 | America Online, Inc. | Data compression using selective encoding |
WO2001031794A1 (en) * | 1999-10-29 | 2001-05-03 | Koninklijke Philips Electronics N.V. | Variable-length decoding |
US8125357B1 (en) * | 2010-03-23 | 2012-02-28 | Sandia Corporation | Deflate decompressor |
CN102970043A (zh) * | 2012-11-14 | 2013-03-13 | 无锡芯响电子科技有限公司 | 一种基于gzip的压缩硬件系统及其加速方法 |
CN103248369A (zh) * | 2013-05-21 | 2013-08-14 | 南京畅洋科技有限公司 | 基于fpga的压缩系统及其方法 |
CN107395209A (zh) * | 2017-07-03 | 2017-11-24 | 北京京东尚科信息技术有限公司 | 数据压缩方法、数据解压缩方法及其设备 |
CN107592117A (zh) * | 2017-08-15 | 2018-01-16 | 深圳前海信息技术有限公司 | 基于Deflate的压缩数据块输出方法及装置 |
CN110334066A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的Gzip解压缩方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
J. MATAI, J. KIM AND R. KASTNER: "Energy Efficient Canonical Huffman Encoding", 《2014 IEEE 25TH INTERNATIONAL CONFERENCE ON APPLICATION-SPECIFIC SYSTEMS》 * |
张思思: "基于FPGA的GZIP硬件压缩电路设计", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112666008A (zh) * | 2020-11-26 | 2021-04-16 | 山东云海国创云计算装备产业创新中心有限公司 | 一种SoC封装互连结构剪切可靠性等效测试装置及方法 |
CN114697672A (zh) * | 2020-12-30 | 2022-07-01 | 中国科学院计算技术研究所 | 基于游程全零编码的神经网络量化压缩方法及系统 |
CN113965207A (zh) * | 2021-12-17 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种基于deflate霍夫曼编码的动态码表生成装置和方法 |
CN113965207B (zh) * | 2021-12-17 | 2022-03-15 | 苏州浪潮智能科技有限公司 | 一种基于deflate霍夫曼编码的动态码表生成装置和方法 |
CN116318173A (zh) * | 2023-05-10 | 2023-06-23 | 青岛农村商业银行股份有限公司 | 一种金融融资服务数字智能管理系统 |
CN116318173B (zh) * | 2023-05-10 | 2023-08-11 | 青岛农村商业银行股份有限公司 | 一种金融融资服务数字智能管理系统 |
CN117651076A (zh) * | 2023-11-29 | 2024-03-05 | 哈尔滨工程大学 | 适配跨域多信道保密信源编码压缩解压方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111884660B (zh) | 2022-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111884660B (zh) | 一种哈夫曼编码设备 | |
Iyengar et al. | Built-in self testing of sequential circuits using precomputed test sets | |
EP3820048A1 (en) | Data compression and decompression method and related apparatus, electronic device, and system | |
CN100525450C (zh) | 一种实现霍夫曼译码的方法和装置 | |
CN108886367B (zh) | 用于压缩和解压缩数据的方法、设备和系统 | |
Howard et al. | Parallel lossless image compression using Huffman and arithmetic coding | |
CN106849956B (zh) | 压缩方法、解压缩方法、装置和数据处理系统 | |
Li et al. | A dual graph approach to 3D triangular mesh compression | |
CN1426629A (zh) | 使用多个编码器的优化无损压缩的方法和装置 | |
CN112398484A (zh) | 一种编码方法及相关设备 | |
CN111787325B (zh) | 一种熵编码器及其编码方法 | |
Yu et al. | Test data compression based on variable prefix dual-run-length code | |
EP0079442B1 (en) | Data translation apparatus translating between raw and compression encoded data forms | |
CN112953547A (zh) | 一种数据处理方法、装置及系统 | |
US5701126A (en) | High speed variable length decoder | |
Howard et al. | Parallel lossless image compression using Huffman and arithmetic coding | |
JP2005521324A (ja) | 損失のないデータの圧縮および圧縮解除方法および装置 | |
CN114095036B (zh) | 一种动态哈夫曼编码的码长生成装置 | |
JP3425143B2 (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
Fatemi et al. | FPGA implementation of the LRU algorithm for video compression | |
Mamun et al. | Hardware Approach of Lempel-Ziv-Welch Algorithm for Binary Data Compression | |
US7079054B2 (en) | V.42bis standalone hardware accelerator and architecture of construction | |
Wu et al. | A novel pattern run-length coding method for test data compression | |
Jianjun et al. | Research and Improvement of Huffman Compression Method Based on Linear Linked Forest | |
JPH03262331A (ja) | データ圧縮方法およびデータ圧縮装置 |
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 |