基于LZW算法的数据无损压缩硬件实现
2020-03-07 08:39:12 点击:
上一篇:英特尔:超频友好的14nm桌面Broadwell CPU年中到来
压缩字典最多可容纳16 384个码,共分为三部分,其中0~4 095为12位输出,4 096~8 191为13位,8 192~16 383为14位。每当输出长度变化时,同时输出一个变长标识,便于解码器解码。
2 LZW算法FPGA实现
2.1 算法实现硬件结构
LZW数据压缩算法的FPGA硬件实现,其内部功能模块划分如图2所示。
2.3 仿真结果
清空字典存储器模块,初始化信号,将可能出现的单字符存入字典,压缩时新传续存地址为4096,新字符串输入时产生相应的哈希表地址与偏移量; 然后读字典存储器相应地址的内容,如内容为空则输出输入的数据,并把相应内容存入字典,如内容匹配,则继续输入下一数据,否则(即发生冲突)产生新的哈希表地址,重新读取字典,进行判断、比较。仿真时序如图3所示。
仿真结果:输入数据为5,6,7,8,9,5,6,7,8,9,5,6,7,…;输出数据为5,6,7,8,9,4 098,4 100,4 102,…。仿真结果与理论计算值一致。
3 结 论
LZW算法逻辑简单,实现速度快,擅长于压缩重复出现的字符串;无需事先统计各字符的出现概率,一次扫描即可;相对于其他算法,更有利于硬件实现。本文利用FPGA实现了改进的LZW压缩算法,仿真证明其算法具有很高压缩率,适合工程的实际应用。
2.2 各功能模块说明
输入/输出数据缓存模块完成FPGA所有数据传输工作,为了保证异步时钟域数据同步,使用FPGA片内的Block RAM构成一个FIFO对输入数据进行缓存。