当前位置: 首页 > 专利查询>同济大学专利>正文

一种静态哈夫曼并行全编码实现方法技术

技术编号:17011231 阅读:40 留言:0更新日期:2018-01-11 07:51
一种静态哈夫曼并行全编码实现方法。在排序的同时得到对应权值的码长和编码值,并且在一个时钟周期内对所有变量进行编码,在排序结束的时候即可得到所有变量的码长和编码值。整个过程充分考虑FPGA的并行处理性,采用优化后的并行全比较算法,只需一个时钟周期便可得到所有变量权值的排序,该算法是基于序列中任意两个数并行比较实现,数据之间两两比较统一采用大于等于比较器,任意两个数之间只需要比较一次,这样两个数得到的比较结果互为相反数。开始为输入数据并统计权值的模块,输入结束后,再对输入的数据进行优化的并行全比较排序,在得到排序结果的同时对其进行编码。最后编码值的输出采用流水线的方式,可以使输出过程不间断。

【技术实现步骤摘要】
一种静态哈夫曼并行全编码实现方法
本专利技术涉及FPGA和数据、图像压缩技术,特别涉及一种基于FPGA的静态Huffman并行全编码方法。
技术介绍
自从1952年,DavidA.Huffman在MIT攻读博士时提出了依据字符出现的概率来构造异字头的平均长度最短的码字,可称为最佳编码,一般称为静态Huffman编码。其步骤就是先通过比较权值逐步构建一棵静态Huffman树,再对该静态Huffman树进行编码、解码。一般静态Huffman编码都需要构建静态Huffman树,然后从根部一直到叶子逐一编码,这样的编码效率不仅很低,而且需要更多的硬件资源,且获得的时钟频率不高。为了能够实现使用更少的硬件资源能达到更高的时钟频率,必须根据静态Huffman编码规范和结合FPGA实现的方式来设计新的静态Huffman编码方式。在诸多的尝试中,基于FPGA的静态Huffman并行全编码方法是一种重要的研究方法。
技术实现思路
本专利技术是针对静态Huffman编码中编码周期不固定,编码效率不高,硬件资源利用率有待降低以及最高时钟频率有待提高等问题,提出了基于FPGA的静态Huffman并行全编码方法,此方法在充分利用FPGA的并行性和流水线技术,在对权值进行排序的同时得到编码值,而且不管输入变量的权值如何变化,整个的编码过程都只需要固定的时钟周期。本专利技术的技术方案为:本专利技术根据静态Huffman编码规范以及FPGA的并行处理,核心排序算法采用是已有的并行全比较算法,但是在这个算法的基础上做优化处理,该算法一个时钟周期内能得到所有权值的比较值,其中比较值为‘0’或者为‘1’,假如权值A比权值B大,那么A比B的比较值为‘1’,B比A的比较值自然就可以根据A比B的比较值取反得到,即为‘0’,这样不需要多增加一个比较器就能得到B比A的比较值,这样可以只使用一半的大于等于比较器就能够得出所有的比较结果,这也是本专利技术创新点之一,根据此优化的并行全比较算法,不仅减少FPGA硬件资源的使用率,而且提高时钟频率,然后把每个权值与其他所有权值的比较值相加,得到一个相应的累加值,考虑到一旦需要比较的权值比较多,为了提高时序,每个权值的所有比较值分两次相加,用两个寄存器变量存放50%比较值的相加结果(称为半累加值),然后下一个时钟周期再把这两个累加值相加得到一个完整的累加值(称为全累加值),由于根据本专利技术优化的并行全比较算法每个权值的累加值各不相同,累加值的大小就代表该权值的大小,然后根据最小的两个累加值选出相应的两个最小权值,把他们的权值相加得到一个新的权值,同时对这两个最小权值进行编码,两者之中最小的那个权值编码0,次最小权值编码1,接着继续下一次的并行全比较、半累加值相加、全累加值相加、得到每个权值的排序结果、两个最小权值相加为一个新的权值,如此循环下去,直到循环第N-1次(假设总共有N个待比较的权值),整个过程结束。此外,在进行两个最小权值相加为一个新的权值的时候,利用FPGA的并行处理功能,同时,对所有数据进行静态Huffman的编码,最后伴随着循环结束,所有数据的静态Huffman编码也随之结束;最后采用流水线技术,流水输出每个数据对应的Huffman编码值。本专利技术需要充分利用FPGA的并行性,所有数据的权值在同一个时钟周期中进行比较,此外,所有数据也在同一个时钟周期中进行静态Huffman编码。本专利技术整个流程只需要划分为6个主要模块(即6大步骤),每个模块只需要占用一个时钟周期,而且该周期内只处理一件事情,这6个主要模块之间不需要额外控制逻辑,顺序执行即可。本专利技术Huffman编码值采用流水线的输出方式,由于每个数据的编码值和码长是不固定的,所以本设计采用的是优化的流水线,此流水线分为三级,第一级为读取需要输出编码值的数据,第二级为取出该数据对应的静态Huffman编码值和码长,第三级为输出编码,该流水线能够保证在数据码长不固定的情况下,不断流(连续)输出编码值。由于采用上述方案,本专利技术具有如下的特点:循环一次可得出所有权值的排序结果。在排序的同时可对所有变量进行静态Huffman编码。在排序结束的时候即可得到所有变量的码长和编码值。不论输入变量的权值如何变化,整个静态Huffman编码过程需要的时钟周期固定。本专利技术大为提高程序运行的最高时钟频率以及降低FPGA中资源的利用率,为静态Huffman的编码提供了很好的一个设计方法。附图说明通过参照并结合附图的详细描述,本专利技术变得更好理解,因而本专利技术更完整的理解和许多附带优点将易于明了,其中:图1为本专利技术的整体结构流程图;图2为优化的并行全比较排序算法流程图;图3为优化的并行全Huffman编码结构图;图4构造一棵二叉树实例;图5为继图4后的第二步构建的传统Huffman子树;图6为继图5后的第三步构建的传统Huffman子树;图7为继图6后的第四步构建完全的传统Huffman子树;图8并行全Huffman编码模块图。具体实施方式以下结合附图所示实施例对本专利技术做进一步的说明。采用基于FPGA的并行全比较排序结构和Huffman并行全编码结构。由优化的并行全比较算法排序结构得到所有输入参数的权值排序,然后静态Huffman并行全编码结构会根据得到的权值排序结果,来对最小的两个权值进行编码和统计码长。最后会对得到的编码值进行流水线的输出。这样可以连续不断的输出编码值。在介绍本设计之前先简要介绍一下相关的传统Huffman编码的基本原理。传统Huffman编码步骤通常为:i.每次从N权值集合中选出2个最小的权值,构建一棵二叉树,二叉树的左子树对应这两个中最小权值,右子树对应次小的权值。根结点为这两个权值相加的和。ii.再把这个新的权值和剩下的权值,构成一个新的权值集合,然后重复步骤(i)。iii.重复步骤(i)和步骤(ii),直到循环整个过程N-1次。得到一棵完整的传统的静态Huffman树。假如,现在有5个字符分别为A,B,C,D,E出现的频率(权值)分别为0.15,0.35,0.05,0.25,0.20,即权值集合为{0.15,0.35,0.05,0.25,0.20}。为了对这5个字符进行静态Huffman编码。首先,第一步先在权值集合中选出两个最小权值作为左右子树构造一棵二叉树。即选取0.05和0.15构成一棵二叉树,这两个左右子树的权值相加为其结点的权值即0.05+0.15=0.20。如图4所示。虚线为新生成的结点,第二步,再把新生成为权值0.20的结点放入剩下的集合中,现在权值集合变为{0.20,0.35,0.25,0.20},再从这个集合中选出两个最小权值0.20和0.20,根据这两个最小权值继续构建新的Huffman子树。如图5所示。再次构建静态Huffman树,此时权值的集合为{0.4,0.35,0.25}。再次选出两个最小的权值0.35和0.25,具体如图6所示。经过这一步骤之后,权值的集合只剩下最后两个了即为{0.4,0.6}。再进行最后一次的构建Huffman的过程。图7所示。至此,一棵完整的静态Huffman树构建完成。根据编码规则左子树编码为“0”,右子树编码为“1”。这样每个字符对应的Huffman编码值为:A->100,B->本文档来自技高网...
一种静态哈夫曼并行全编码实现方法

【技术保护点】
一种静态哈夫曼并行全编码实现方法,其特征在于,首先进行优化的并行全比较,该算法:一个时钟周期内能得到所有权值的比较值,其中比较值为‘0’或者为‘1’,假如权值A比权值B大,那么A比B的比较值为‘1’,B比A的比较值自然就可以根据A比B的比较值取反得到,即为‘0’,不需要多增加一个比较器就能得到B比A的比较值,这样可以只使用一半的大于等于比较器就能够得出所有的比较结果,根据此优化的并行全比较算法,不仅减少FPGA硬件资源的使用率,而且提高时钟频率,然后半累加值,算法为:把每个权值与其他所有权值的比较值相加,得到一个相应的累加值,考虑到一旦需要比较的权值比较多,为了提高时序,每个权值的所有比较值分两次相加,用两个寄存器变量存放50%比较值的相加结果(称为半累加值),然后全累加值,算法为:下一个时钟周期再把这两个累加值相加得到一个完整的累加值(称为全累加值),由于根据本专利技术优化的并行全比较算法每个权值的累加值各不相同,累加值的大小就代表该权值的大小,然后根据最小的两个累加值选出相应的两个最小权值,把它们的权值相加得到一个新的权值,同时对这两个最小权值进行编码,两者之中最小的那个权值编码0,次最小权值编码1,接着继续下一次的并行全比较、半累加值相加、全累加值相加、得到每个权值的排序结果、两个最小权值相加为一个新的权值,如此循环下去,直到循环第N‑1次(假设总共有N个待比较的权值),整个过程结束;此外,在进行两个最小权值相加为一个新的权值的时候,利用FPGA的并行处理功能,同时,对所有数据进行静态Huffman的编码,最后伴随着循环结束,所有数据的静态Huffman编码也随之结束;最后采用流水线技术,流水输出每个数据对应的Huffman编码值。...

【技术特征摘要】
1.一种静态哈夫曼并行全编码实现方法,其特征在于,首先进行优化的并行全比较,该算法:一个时钟周期内能得到所有权值的比较值,其中比较值为‘0’或者为‘1’,假如权值A比权值B大,那么A比B的比较值为‘1’,B比A的比较值自然就可以根据A比B的比较值取反得到,即为‘0’,不需要多增加一个比较器就能得到B比A的比较值,这样可以只使用一半的大于等于比较器就能够得出所有的比较结果,根据此优化的并行全比较算法,不仅减少FPGA硬件资源的使用率,而且提高时钟频率,然后半累加值,算法为:把每个权值与其他所有权值的比较值相加,得到一个相应的累加值,考虑到一旦需要比较的权值比较多,为了提高时序,每个权值的所有比较值分两次相加,用两个寄存器变量存放50%比较值的相加结果(称为半累加值),然后全累加值,算法为:下一个时钟周期再把这两个累加值相加得到一个完整的累加值(称为全累加值),由于根据本发明优化的并行全比较算法每个权值的累加值各不相同,累加值的大小就代表该权值的大小,然后根据最...

【专利技术属性】
技术研发人员:万国春陈怡夏子为唐令怡
申请(专利权)人:同济大学
类型:发明
国别省市:上海,31

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

1