本帖最后由 drentsi 于 2013-4-28 22:18 编辑
数据无损压缩技术IPCORE介绍
1.基于LZS压缩算法的IPCORE
LZS算法是一种压缩和解压速度非常高的无损压缩算法,同时又可以提供可以接受的压缩效果,通常可以把数据压缩2~3倍。LZS算法可用于数据流的实时无损压缩,无需额外的缓存空间,延时非常小。目前有公司提供了LZS的专用压缩芯片,单芯片可以达到800MB/s的速度。然而在FPGA中,可实现更灵活的配置,达到每个时钟周期压缩1、2、4、8、16、32个字节的数据,远远超过专用芯片的性能。
在低成本的spartan-3A芯片上,可运行于125MHz,达到125MB/s的处理速度。在每周期2字节模式下约可达到250MB/s的速度。
在高性能的virtex-5/6/7芯片上,可运行于250MHz以上,配置为每周期16字节模式下,可超过4GB/s的速度,而从数据输入到数据输出延时仅为10us。配置为每周期32字节模式时,运行速度200MHz,可达到6.4GB/s的速度。
这种压缩算法具有最快的压缩和解压速度,适合于对数据流实时压缩和解压,也可以用于数据块压缩。每个核心最高达6.4GB/s的速度,以及1个芯片可配置多达8个核心,可以应付各种极端场合。
2.多元自适应算术编码器/解码器IPCORE
算术编码是一种熵编码无损压缩算法,在对随机数据进行无损压缩时,具有最好的压缩效果。目前只有二元算术编码得到应用,多元算术编码比二元算术编码压缩效果好得多,但是算法非常复杂,仍缺乏实用性。通过一系列理论与技术的创新,目前在FPGA中已实现多元的自适应算术编码器,编码和解码一体设计。256元自适应算术编码,平均编码一个数据需要21个时钟周期,解码一个数据需要31个时钟周期。
在低成本的spartan-3A芯片上,可运行于115MHz,需要约1200slices,每个核心压缩速度为5MB/s,解压速度为3.7MB/s。
在高性能的virtex-5/6/7芯片上,可运行于250MHz以上,每个核心压缩速度为12MB/s,解压速度为8MB/s。
3.高阶自适应预测器配合多元自适应算术编码器IPCORE
算术编码对随机数据进行压缩时具有最好的效果,但是通常的数据都具有一些相关性,算术编码的优势反而不明显。高阶自适应预测器,可以用来消除数据的相关性。目前在FPGA上实现了256阶自适应预测器,通过统计所有历史信息,根据最近256个数值预测下一个即将出现的数值,对预测的偏差进行自适应算术编码,可以达到非常好的压缩效果。预测器处理一个数据需要21个时钟周期,刚好配合256元自适应算是编码器。使用这种方式通常可以对采集的数据无损压缩5倍左右,比gzip,rar等各种算法高出1倍左右。
在低成本的spartan-3A芯片上,可运行于115MHz,需要约1500slices,每个核心压缩速度为5MB/s,解压速度为3.7MB/s。这个性能和软件实现在I7-3770CPU上的性能相当。
在高性能的virtex-5/6/7芯片上,可运行于250MHz以上,每个核心压缩速度为12MB/s,解压速度为8MB/s。
这种压缩算法,压缩速度慢,但是压缩效果最好,可以并行处理,适合于需要高压缩比并且数据可以分块的场合。可在FPGA中配置多达128个核心,达到1500MB/s的压缩速度以及1000MB/s的解压速度。
联系dren82@163.com |