新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA的实时无损数据压缩系统设计

基于FPGA的实时无损数据压缩系统设计

作者:时间:2011-07-26来源:网络收藏

摘要:针对某些特殊的测试实验,既要求测试系统微体积、低功耗,还要求记录大量数据的问题,提出基于解决方案。介绍了LZW压缩算法的基本理论及其用硬件实现的方法。大量的实验表明,系统工作稳定,压缩速度快(8 MB/s以上),对实测数据的压缩效果好(25%左右)、工作时电流小(37 mA),实现了速度、性能、功耗三者的统一。
关键词:;LZW算法

引言
在工业生产和科研中,通常要对信号进行长时间高速采样,会产生大量采样数据。在一些特殊环境下,受体积和功耗的限制,不能添加过多存储器,需要引入技术来解决。软件压缩算法的运算量较大,需要很高的CPU运算速度和数据缓存空间,所以软件压缩一般应用
在对时间要求不高的非实时压缩场合。而对运行速度有特殊要求的情况下,对数据的实时压缩一般都要用硬件实现。有损压缩之后数据进行重构,与原来的数据有所不同。多数数据采集系统因被测对象的不确定性,需要采用无损数据压缩。由于LZW无损压缩算法具有自适应特性,在对信号统计特性不明确的情况下仍然有较好的压缩效果。结合FPGA的高集成度、低功耗、灵活性及并行运算的特性,该设计用FPGA硬件实现LZW算法,以提高系统的实时压缩能力。

1 LZW算法简介
LZW算法是一种基于字典的压缩算法,由Lemple、Ziv、Welch三人共同创造。该算法在数据的压缩过程中会根据输入的数据动态地建立一个字典,后续输入的数据都会在这个字典中匹配查找,根据查找是否成功决定压缩编码的输出。该算法的巧妙之处在于,压缩过程中动态建立的字典不需要与压缩数据流一道进行传输和存储。在对数据进行解压时,也能够通过压缩数据流重新建立一个字典,来完成解压缩。算法粗略的描述如下:
a.JPG
f.jpg
算法首先进行字典的初始化。然后输入第一个字符数据赋给变量String(S)。数据逐个输入压缩器中,并赋给变量Character(C)。s和C生成一个索引,与字典中的词条数据进行匹配:如果匹配成功,将S和C的编码值赋给S,继续进行下一轮的匹配;如果匹配失败,则将S输出,将S和C的编码值存入字典,并且将C的值赋给S,这一过程一直进行直到结束。最后输出S,输出结束标志。
由算法描述可见,LZW算法过程并不是很复杂,能够得到较快的压缩速度。并且其在对数据特征并不了解情况下,也能有较好的压缩效果。同时,其对应的解压缩算法也不复杂,解压速度也优于其他一些算法。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭