CN206712982U - 一种用于VLSI设计的Huffman编码系统 - Google Patents
一种用于VLSI设计的Huffman编码系统 Download PDFInfo
- Publication number
- CN206712982U CN206712982U CN201720439745.7U CN201720439745U CN206712982U CN 206712982 U CN206712982 U CN 206712982U CN 201720439745 U CN201720439745 U CN 201720439745U CN 206712982 U CN206712982 U CN 206712982U
- Authority
- CN
- China
- Prior art keywords
- unit
- huffman
- coding
- node
- data
- 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.)
- Expired - Fee Related
Links
- 238000001514 detection method Methods 0.000 claims abstract description 11
- 230000003068 static effect Effects 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 7
- 241000894007 species Species 0.000 claims description 5
- 241001269238 Data Species 0.000 claims description 3
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本实用新型涉及一种用于VLSI设计的Huffman编码系统,系统包括复位信号检测单元、开始信号检测单元、输入数据扫描单元、输入数据缓存单元、码字频数缓存单元、数据拼接单元、拼接数据缓存单元、Huffman树节点生成单元、Huffman树节点缓存单元、构造Huffman树并编码单元、识别叶子节点单元、去掉根节点编码位单元、建立Huffman码表单元、编码输出单元、编码输出结束标志单元、返回开始信号检测单元。本实用新型的系统提高了编码的可读性和可维护性,节约了电路面积。
Description
技术领域
本实用新型涉及编码系统领域,特别是涉及一种用于VLSI设计的Huffman编码实现系统。
背景技术
目前,在对芯片面积、编码速率和压缩效率要求较高的数据无损压缩系统如视频和图像编码系统等一些领域,基于动态Huffman编码或者传统静态Huffman编码芯片已经很难满足要求。Huffman编码属于最佳熵编码法的同时也是一种前缀码,其数据压缩效率最高。为了提高编码压缩效率的需要通常可采用动态Huffman编码或者静态Huffman编码二种方案。
动态Huffman编码对输入字符的统计是动态进行的,随着待压缩数据的输入,逐步构造Huffman树,因此随着编码的进行,同一个字符的编码可能发生改变(变得更长或更短)。动态Huffman编码算法中每输入一个字符就要更新一次Huffman树,这也导致动态Huffman编码算法非常复杂,需要更多的寄存器和逻辑运算电路。在待压缩数据量不大时,由于不用预先统计待压缩数据中每种字符的频数,相对静态Huffman编码可以节约时钟周期,但随着待压缩数据量的增加,消耗在更新Huffman树上的时钟周期数急剧增加,降低了系统编码速率,不适合对编码速率要求较高且数据量巨大的编码系统。
此外,编码系统通常应该具有与之对应的同样优秀的解码系统才更具有实用价值,然而动态Huffman编码系统每编码完一个字符,解码系统都必须使用和编码系统相同的算法更新Huffman树后才能解压缩一个字符,解压缩效率的低下也导致动态Huffman编码实际应用并不广泛。
静态Huffman编码系统通过对待压缩数据的一次扫描,统计每种字符的出现频数后构造Huffman树并得到每个字符对应的的编码,再对一次扫描中存储的待压缩数据进行遍历得到输出码流。在具备高速率编码功能的同时无需额外的存储器或复杂逻辑运算电路结构,节约芯片面积的同时也保证了整体编码系统的稳定性,这些特点使得其在对编码速率要求较高且数据量巨大的编码系统应用中成为一个很好的选择方案。
然而传统静态Huffman编码系统一般是利用高级编程语言如C/C++语言中丰富的数据结构(如结构体变量和枚举变量)来描述构造Huffman树过程中每一个节点的数据特性(如频数、节点位置关系、在Huffman树中所处层数)并在软件开发平台上完成。在VHDL/Verilog HDL硬件描述语言中并没有高级编程语言中类似结构体或枚举的数据结构,无法将传统静态Huffman编码直接移植到VLSI设计中。
因此,若想要实现适用于VLSI设计的Huffman编码系统,首先必须要在兼顾编码速率、芯片面积和系统功能稳定性的前提下,结合静态Huffman树的构造过程提出了一种新的适合Huffman编码器电路实现的数据格式
另一个问题是传统静态Huffman编码系统中采用先构造Huffman树后编码的算法不适合硬件电路实现且效率很低,因此必须改进静态Huffman编码系统中构造Huffman树的算法。新算法必须要在构造Huffman树的过程中完成每次从队列里递归找到最小的两个节点,并且前一次的递归运算结果作为后一次的输入的同时完成对节点的编码,即在构造Huffman树的过程中完成所有节点的编码。最后根据新的数据格式特点,在Huffman树所有节点中快速匹配找到叶子节点及其对应的编码。
发明内容
有鉴于此,本实用新型的目的是提供一种用于VLSI设计的Huffman编码系统,提高了编码的可读性和可维护性,节约了电路面积。
本实用新型采用以下方案实现:一种用于VLSI设计的Huffman编码系统,包括:
一复位信号检测单元,用以在系统运行时检测到复位信号使能后,使系统异步复位,并重新初始化编码系统;
一开始信号检测单元,用以当复位信号未使能且开始信号有效时启动编码系统,编码系统开始运行;
一输入数据扫描单元,用以对输入的待压缩数据进行扫描;
一输入数据缓存单元,用于保存扫描后的待压缩数据;
一码字频数缓存单元,用以保存待压缩数据中每种字符和它出现的频数;
一数据拼接单元,用以将频数、识别、字符、编码这四种寄存器变量按顺序拼接成与输入字符种类数目相同的寄存器变量;
一拼接数据缓存单元,用以保存拼接后的数据;
一Huffman树节点生成单元,用以按静态Huffman树生成节点的构造方法生成所有节点;
一Huffman树节点缓存单元,用以存放生成的Huffman树的所有节点数据;
一Huffman树构造编码单元,用以将生成的所有节点从上到下逐层构造Huffman树,并在构造Huffman树的同时完成对所有节点的编码;
一叶子节点识别单元,用以从Huffman树的所有节点中识别出叶子节点及其对应的编码;
一根节点编码位去除单元,用以去掉每个叶子节点所对应编码中的根节点编码位,去掉每个叶子节点所对应编码中的根节点编码位;
一Huffman码表建立单元,用以建立Huffman码表并得到每个叶子节点所对应编码的长度;
一编码输出单元,用以根据Huffman码表按位输出编码结果;
一编码输出结束标志单元,用以表示编码输出是否结束;
一返回开始信号检测单元,用以重新检测开始信号,等待编码系统再次运行。
在本实用新型中,一种用于VLSI设计的Huffman编码系统的实现方法,包括下述步骤:
步骤S1:所述编码系统运行时对复位信号是否使能进行实时检测,若检测到复位信号使能,则使系统异步复位,并重新初始化编码系统;
步骤S2:当复位信号未使能且开始信号有效时,启动编码系统,开始扫描输入的待压缩数据;
步骤S3:对输入的待压缩数据进行一遍扫描,将输入的待压缩数据送入输入数据缓存单元,通过加法器实现每一种字符出现的频数进行统计,将频数统计结果送入码字频数缓存单元,将待压缩数据保存入寄存器中;
步骤S4:将字符、频数这两种寄存器变量与识别、编码这两种寄存器变量,依次按频数、识别、字符、编码的顺序分配一定位宽后拼接成与输入字符种类数目相同的寄存器变量,此时初始时识别、编码位均为零,并送入拼接数据缓存单元保存;
步骤S5:将按照新数据格式构造的数据,采用静态Huffman树生成节点的算法递归生成所有节点;
步骤S6:对根节点编码1并初始化第一层的两个节点的编码,用第一层的节点匹配出下一层的节点,从上到下逐层构造出Huffman树,并在构造Huffman树的同时对所有节点进行编码;
步骤S7:对Huffman树中所有的节点进行识别,找出所有叶子节点及其对应的编码;
步骤S8:去掉每个叶子节点所对应编码中的根节点编码位,得到每个叶子节点所对应编码的长度,根据最后得到的叶子节点的编码和编码长度,建立Huffman码表;
步骤S9:按照Huffman码表按位输出编码结果,编码结果全部输出后,编码输出结束标志单元置1,编码输出结束;
步骤S10:返回开始信号检测,为系统下一次开始编码进行初始化。
附图说明
图1是本实用新型的一种用于VLSI设计的Huffman编码系统框图。
图2是本实用新型的一种用于VLSI设计的Huffman编码系统的设计流程图。
具体实施方式
下面结合附图及实施例对本实用新型做进一步说明。
本实施例提供一种用于VLSI设计的Huffman编码系统,如图1所示,包括:
一复位信号检测单元,用以在系统运行时检测到复位信号使能后,使系统异步复位,并重新初始化编码系统;
一开始信号检测单元,用以当复位信号未使能且开始信号有效时启动编码系统,编码系统开始运行;
一输入数据扫描单元,用以对输入的待压缩数据进行扫描;
一输入数据缓存单元,用于保存扫描后的待压缩数据;
一码字频数缓存单元,用以保存待压缩数据中每种字符和它出现的频数;
一数据拼接单元,用以将频数、识别、字符、编码这四种寄存器变量按顺序拼接成与输入字符种类数目相同的寄存器变量;
一拼接数据缓存单元,用以保存拼接后的数据;
一Huffman树节点生成单元,用以按静态Huffman树生成节点的构造方法生成所有节点;
一Huffman树节点缓存单元,用以存放生成的Huffman树的所有节点数据;
一Huffman树构造编码单元,用以将生成的所有节点从上到下逐层构造Huffman树,并在构造Huffman树的同时完成对所有节点的编码;
一叶子节点识别单元,用以从Huffman树的所有节点中识别出叶子节点及其对应的编码;
一根节点编码位去除单元,用以去掉每个叶子节点所对应编码中的根节点编码位,去掉每个叶子节点所对应编码中的根节点编码位;
一Huffman码表建立单元,用以建立Huffman码表并得到每个叶子节点所对应编码的长度;
一编码输出单元,用以根据Huffman码表按位输出编码结果;
一编码输出结束标志单元,用以表示编码输出是否结束;
一返回开始信号检测单元,用以重新检测开始信号,等待编码系统再次运行。
在本实施例中,一种用于VLSI设计的Huffman编码系统的实现方法,如图2所述,包括下述步骤:
步骤S1:所述编码系统运行时对复位信号是否使能进行实时检测,若检测到复位信号使能,则使系统异步复位,并重新初始化编码系统;
步骤S2:当复位信号未使能且开始信号有效时,启动编码系统,开始扫描输入的待压缩数据;
步骤S3:对输入的待压缩数据进行一遍扫描,将输入的待压缩数据送入输入数据缓存单元,通过加法器实现每一种字符出现的频数进行统计,将频数统计结果送入码字频数缓存单元,将待压缩数据保存入寄存器中;
步骤S4:将字符、频数这两种寄存器变量与识别、编码这两种寄存器变量,依次按频数、识别、字符、编码的顺序分配一定位宽后拼接成与输入字符种类数目相同的寄存器变量,此时初始时识别、编码位均为零,并送入拼接数据缓存单元保存;
步骤S5:将按照新数据格式构造的数据,采用静态Huffman树生成节点的算法递归生成所有节点;
步骤S6:对根节点编码1并初始化第一层的两个节点的编码,用第一层的节点匹配出下一层的节点,从上到下逐层构造出Huffman树,并在构造Huffman树的同时对所有节点进行编码;
步骤S7:对Huffman树中所有的节点进行识别,找出所有叶子节点及其对应的编码;
步骤S8:去掉每个叶子节点所对应编码中的根节点编码位,得到每个叶子节点所对应编码的长度,根据最后得到的叶子节点的编码和编码长度,建立Huffman码表;
步骤S9:按照Huffman码表按位输出编码结果,编码结果全部输出后,编码输出结束标志单元置1,编码输出结束;
步骤S10:返回开始信号检测,为系统下一次开始编码进行初始化。
以上所述仅为本实用新型的较佳实施例,凡依本实用新型申请专利范围所做的均等变化与修饰,皆应属本实用新型的涵盖范围。
Claims (1)
1.一种用于VLSI设计的Huffman编码系统,其特征在于:包括:
一复位信号检测单元,用以在系统运行时检测到复位信号使能后,使系统异步复位,并重新初始化编码系统;
一开始信号检测单元,用以当复位信号未使能且开始信号有效时启动编码系统,编码系统开始运行;
一输入数据扫描单元,用以对输入的待压缩数据进行扫描;
一输入数据缓存单元,用于保存扫描后的待压缩数据;
一码字频数缓存单元,用以保存待压缩数据中每种字符和它出现的频数;
一数据拼接单元,用以将频数、识别、字符、编码这四种寄存器变量按顺序拼接成与输入字符种类数目相同的寄存器变量;
一拼接数据缓存单元,用以保存拼接后的数据;
一Huffman树节点生成单元,用以按静态Huffman树生成节点的构造方法生成所有节点;
一Huffman树节点缓存单元,用以存放生成的Huffman树的所有节点数据;
一Huffman树构造编码单元,用以将生成的所有节点从上到下逐层构造Huffman树,并在构造Huffman树的同时完成对所有节点的编码;
一叶子节点识别单元,用以从Huffman树的所有节点中识别出叶子节点及其对应的编码;
一根节点编码位去除单元,用以去掉每个叶子节点所对应编码中的根节点编码位,去掉每个叶子节点所对应编码中的根节点编码位;
一Huffman码表建立单元,用以建立Huffman码表并得到每个叶子节点所对应编码的长度;
一编码输出单元,用以根据Huffman码表按位输出编码结果;
一编码输出结束标志单元,用以表示编码输出是否结束;
一返回开始信号检测单元,用以重新检测开始信号,等待编码系统再次运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201720439745.7U CN206712982U (zh) | 2017-04-25 | 2017-04-25 | 一种用于VLSI设计的Huffman编码系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201720439745.7U CN206712982U (zh) | 2017-04-25 | 2017-04-25 | 一种用于VLSI设计的Huffman编码系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN206712982U true CN206712982U (zh) | 2017-12-05 |
Family
ID=60457237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201720439745.7U Expired - Fee Related CN206712982U (zh) | 2017-04-25 | 2017-04-25 | 一种用于VLSI设计的Huffman编码系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN206712982U (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110072114A (zh) * | 2019-04-16 | 2019-07-30 | 西南交通大学 | 用于静态霍夫曼表生成的全并行频数生成电路结构与方法 |
-
2017
- 2017-04-25 CN CN201720439745.7U patent/CN206712982U/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110072114A (zh) * | 2019-04-16 | 2019-07-30 | 西南交通大学 | 用于静态霍夫曼表生成的全并行频数生成电路结构与方法 |
CN110072114B (zh) * | 2019-04-16 | 2021-04-09 | 西南交通大学 | 用于静态霍夫曼表生成的全并行频数生成电路结构与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106407285B (zh) | 一种基于rle和lzw的优化比特文件压缩与解压缩方法 | |
JP3309031B2 (ja) | 短ブロックのデータを圧縮、伸長するための方法、及び装置 | |
EP0695040B1 (en) | Data compressing method and data decompressing method | |
CN101095284B (zh) | 用于有选择地压缩和解压缩数据的设备与方法 | |
CN104283567B (zh) | 一种名称数据的压缩、解压缩方法及设备 | |
CN101783788B (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
Lin et al. | A lossless data compression and decompression algorithm and its hardware architecture | |
WO2019153700A1 (zh) | 编解码方法、装置及编解码设备 | |
JP3083730B2 (ja) | データ情報を圧縮するためのシステムおよび方法 | |
CN103236847A (zh) | 基于多层哈希结构与游程编码的数据无损压缩方法 | |
JP2002319865A (ja) | 接頭語予測を用いた符号化方法 | |
CN107888197A (zh) | 一种数据压缩方法和装置 | |
CN103078646B (zh) | 字典查询压缩、解压缩方法及其装置 | |
CN206712982U (zh) | 一种用于VLSI设计的Huffman编码系统 | |
WO2020114283A1 (zh) | 数据处理方法及装置 | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
CN106484753A (zh) | 数据处理方法 | |
CN108829930A (zh) | 三维数字化工艺设计mbd模型的轻量化方法 | |
CN100581258C (zh) | 霍夫曼解码方法和霍夫曼解码装置 | |
CN202931290U (zh) | 一种基于gzip的压缩硬件系统 | |
JPH0628149A (ja) | 複数種類データのデータ圧縮方法 | |
Howard et al. | Parallel lossless image compression using Huffman and arithmetic coding | |
JPH05241775A (ja) | データ圧縮方式 | |
CN107094022B (zh) | 一种用于VLSI设计的Huffman编码系统的实现方法 | |
Yang et al. | A Hardware Implementation of Real Time Lossless Data Compression and Decompression Circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171205 |