[发明专利]一种动态Huffman编码硬件实现系统及其实现方法有效
申请号: | 201210458012.X | 申请日: | 2012-11-14 |
公开(公告)号: | CN102983866A | 公开(公告)日: | 2013-03-20 |
发明(设计)人: | 汤晓东;郭彦锋;李冰 | 申请(专利权)人: | 无锡芯响电子科技有限公司 |
主分类号: | H03M7/40 | 分类号: | H03M7/40 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 楼高潮 |
地址: | 214135 江苏省无锡市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 huffman 编码 硬件 实现 系统 及其 方法 | ||
技术领域
本发明涉及数据压缩技术。尤其涉及一种动态Huffman编码硬件实现系统及其实现方法。
背景技术
在云计算的海量数据处理中,数据的压缩、解压缩是非常重要的手段,可以大幅度的降低数据的存储空间,提升数据传输的吞吐率。
Huffman一种基于统计模式的无损压缩算法,主要包括以下几个基本的步骤:a)统计字符的频率。b)构造Huffman树。c) 创建Huffman表。d)编码输出。最终,在数据流中出现频率最高的字符给予最短的编码,而出现频率最低的给予最长的编码,这样就可以得到压缩的效果。
使用软件结构实现Huffman树的过程中,需要采用二叉树数据结构,因此,我们需要定义一个结构体去表示Huffman 树中的每一个节点,在硬件描述语言Verilog及VHDL中没有数据结构。为了实现动态Huffman编码的结构,因此这里给出了Huffman编码的硬件实现系统并给出了Huffman编码硬件实现方法及加速方法。
传统的Huffman实现方式中,一般是基于软件平台的实现方式,编码过程是串行处理的过程,而在Huffman编码的硬件实现过程中,采用了快速的字符统计方法、频率缓存单元提前清空等技术使得数据吞吐率有了明显的提升。
发明内容
本发明要解决的一个技术问题是提供了一种动态Huffman编码硬件实现系统及其实现方法,能够利用极少的组合逻辑、时序逻辑以及存储器资源加以实现。
本发明为实现上述目的,采用如下技术方案:
一种动态Huffman编码硬件实现系统,其特征在于,所述系统包括:
一个频率缓存单元,用于存放数据流中每一个字符出现的频率;
一个最小堆缓存单元,用于维护频率缓冲单元中出现频率不为0的字符,使得这些字符在存储方式上呈现连续的形式,而这些字符在逻辑关系上呈现二叉树的形式,并且使得这棵二叉树满足:左节点和右节点都大于或者等于本节点,为辅助构造Huffman树的过程做好准备,其中叶子节点除外;
一个父亲节点缓存单元,用于存放Huffman树中每一个节点的父亲节点;
一个深度缓存单元,用于存放整个Huffman树中每一个节点的深度,其中根节点的深度最大,叶子节点的深度是0;
一个码字值缓存单元,用于存放Huffman树中每一个叶子节点对应的Huffman编码的值;
一个码字长度缓存单元,用于存放Huffman树中每一个节点对应的Huffman编码的码字长度;
一个乘法器单元,用于计算对待压缩数据块经过动态Huffman编码之后数据块的大小;
一个数据统计单元,用于统计待压缩数据流中每一个字符出现的频率,并将统计的结果存放在频率缓存单元中;
一个主控状态机部分,根据频率缓存单元中存放的每一个字符的频率,通过最小堆缓存单元、父亲节点缓存单元、深度缓存单元来构造Huffman树及Huffman表,分别存放在码字值缓存单元及码字长度缓存单元中;
三个多路选择器单元,分别用于控制频率缓存单元在不同的工作阶段由主控状态机或者是由数据统计单元控制,和码字值缓存单元、码字长度缓存单元在不同的工作阶段分别由主控状态机或者是由数据打包输出单元进行控制;
一个数据打包输出单元,用于查询待编码的数据块中每一个字符查询码字值缓存单元及码字长度缓存单元得到每一个字符的Huffman编码并打包输出;
一个加法器单元,用于快速的字符统计,统计结果存放在频率缓存单元中。
一种动态Huffman编码硬件实现方法,包括下述步骤:
(1)扫描待压缩的原始数据,并快速统计每一个字符出现的频率,依次存放在频率缓存单元;
(2)主控状态机读取频率缓存单元的数据并把出现频率不为0的字符顺序的放进最小堆缓存单元进行维护;
(3)利用最小堆缓存单元、父亲节点缓存单元、深度缓存单元构造Huffman树,其中Huffman树的信息最终也是存放在最小堆缓存单元中;
(4)遍历Huffman树,得到Huffman树中每一个叶子节点的码字长度;
(5)统计每一个非0码字长度字符的数目;
(6)根据每一个非0码字长度字符的数目去计算出每一个字符的Huffman码字值;
(7)统计数据块经过Huffman编码之后的数据块的大小;
(8)主控状态机部分把码字值缓存单元、码字长度缓存单元控制权交给数据打包单元;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡芯响电子科技有限公司,未经无锡芯响电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210458012.X/2.html,转载请声明来源钻瓜专利网。