基于FPGA的实时无损数据压缩系统设计
引言
在工业生产和科研中,通常要对信号进行长时间高速采样,会产生大量采样数据。在一些特殊环境下,受体积和功耗的限制,不能添加过多存储器,需要引入数据压缩技术来解决。软件压缩算法的运算量较大,需要很高的CPU运算速度和数据缓存空间,所以软件压缩一般应用在对时间要求不高的非实时压缩场合。而对运行速度有特殊要求的情况下,对数据的实时压缩一般都要用硬件实现。有损压缩之后数据进行重构,与原来的数据有所不同。多数数据采集系统因被测对象的不确定性,需要采用无损数据压缩。由于LZW无损压缩算法具有自适应特性,在对信号统计特性不明确的情况下仍然有较好的压缩效果。结合FPGA的高集成度、低功耗、灵活性及并行运算的特性,该设计用FPGA硬件实现LZW算法,以提高系统的实时压缩能力。
1 LZW算法简介
LZW算法是一种基于字典的压缩算法,由Lemple、Ziv、Welch三人共同创造。该算法在数据的压缩过程中会根据输入的数据动态地建立一个字典,后续输入的数据都会在这个字典中匹配查找,根据查找是否成功决定压缩编码的输出。该算法的巧妙之处在于,压缩过程中动态建立的字典不需要与压缩数据流一道进行传输和存储。在对数据进行解压时,也能够通过压缩数据流重新建立一个字典,来完成解压缩。算法粗略的描述如下:
算法首先进行字典的初始化。然后输入第一个字符数据赋给变量String(S)。数据逐个输入压缩器中,并赋给变量Character(C)。s和C生成一个索引,与字典中的词条数据进行匹配:如果匹配成功,将S和C的编码值赋给S,继续进行下一轮的匹配;如果匹配失败,则将S输出,将S和C的编码值存入字典,并且将C的值赋给S,这一过程一直进行直到结束。最后输出S,输出结束标志。
由算法描述可见,LZW算法过程并不是很复杂,能够得到较快的压缩速度。并且其在对数据特征并不了解情况下,也能有较好的压缩效果。同时,其对应的解压缩算法也不复杂,解压速度也优于其他一些算法。
2 LZW算法的FPGA实现
CycloneII是Altera公司推出的新一代低成本系列FPGA器件,选用CycloneII系列的EP2C5T14418芯片来实现数据压缩。这款芯片有4 608个逻辑单元、26块M4K RAM块、13个嵌入式乘法器、2个锁相环,用户I/O引脚数目为89,完全能够满足设计对存储器容量以及逻辑功能的要求,并且有一定余量,便于功能扩展。设计采用Quartus II为FPGA器件软件开发平台,用VHDL+原理图的混合输入方式进行层次化描述。系统的整体框图如图1所示。采集到的数据经过压缩后存储到外部存储器,再读入计算机,用专用软件对压缩数据进行解压还原,对原始数据进一步分析处理。
相关文章
- 2023-12-06智能电针治疗仪原理与实现
- 2024-10-30分贝的计算及应用
- 2023-11-06坐标测量机在几何量精密测量实验教学中的应用
- 2024-03-01一种气体流量的软测量系统研究
- 2024-02-22高空作业车工作斗限重控制系统设计与应用
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。