中自网

热门搜索:PID  plc  传感器  电机  变频器  工业以太网  无线通讯  低压 

当前位置:首页>>应用案例首页>>专业论文>>正文

无损数据压缩在车载信息记录仪存储系统的应用

发布日期:2012-04-01   作者:中北大学仪器科学与动态测试教育部重点实验室 刘飞 徐鹏 张红艳   浏览次数:51875
分享到:
【摘   要】:为解决车载信息记录仪长时间记录数据量大与存储容量之间的矛盾,设计出基于LZW算法的无损数据压缩存储系统,其主要特点是将采集到的数据进行实时压缩,再将压缩后的数据进行存储,通过分析LZW算法,设计出基于FPGA的硬件压缩系统。

1引言
车载信息记录仪俗称汽车黑匣子,是可以对汽车CAN总线、GPS、行驶速度、时间、里程等数据及整车零部件状态进行记录的装置,并存储于存储器中,如FLASH、硬盘等,再通过相应的数据分析系统对记录仪所采集的数据进行特定性能的分析,可以给管理者提供有效的检测工具和改进控制策略的依据。随着科学技术的发展,车载记录仪功能越来越完善,记录仪数据分析的智能化程度也越来越高,这些都为汽车电子产品开发者提供了强大的分析工具,然而同时,需要记录的数据量越来越大,为了缩紧存储空间,提高存储效率,数据压缩技术在工程上具有很高的应用价值。数据压缩可分为有损压缩和无损压缩,有损压缩主要应用于图像、声音等领域,而无损压缩主要应用于对数据要求很高的场合,本文采用LZW算法,利用FPGA来实现数据的实时压缩与存储。
2LZW算法的介绍
LZW算法是一种基于字典的压缩算法,由Lemple-Ziv-Welch 三人共同创造,与其他压缩算法相比,该算法具有逻辑简单、硬件容易实现、运算速度快的特点。LZW算法的关键技术就是字典的查找,字典的查找是基于哈希表查找技术。首先建立字典,本系统中,记录仪采集的数据为8位数据,该算法的是将上一个数据P和与当前数据C为一组,利用哈希函数 Index=(C<<1) XOR (P),产生一个9位的数据,作为PC在字典中的地址索引值。在硬件中,利用RAM作为字典存储器,将IndexPC作为一个25位的字符串存于字典中,并且给这个字符串一个9位的编码值,如256。当然,两组不同的PC有一定的概率产生相同的Index值,为避免这种情况,采用下面两个公式:
Index=Index-Offset                 1        
Index=Index-Offset+Tab_size 2    
       Offset=Tab_size-Index              3
其中 Tab_size为哈希表的长度,该长度应该2bit20%,且为质数,这里bit9位,为尽量避免冲突,本系统选为1021Offset为偏移量。一旦发生冲突,可按公式(1)重新得到Index值,如果小于0,则按公式(2)求得。

当输入数据流为3745633745633745443745时,字典的建立如下表1,为避免重复,字典编码从256开始,相邻两个PC生成一个Index值,当数据对重复时,如序号5处,将该数据对的编码值作为下一对的P,如序号6。下表中,在序号9处发生冲突,这时可按公式(1)、(2)、(3

处理,重新生成Index值。压缩的数据输出为3745632562584544256,从表中可以看出,虽然输出数据为9位,但是在数据量上,却少了很多。
字典的查找实际上就是利用Index值,反过来判断与之对应的PC是否重复或者冲突,无论软件或者硬件压缩,关键就在于处理好Index值。压缩过程的流程图如图1所示。
1 哈希表计算
序号
字典编码
P
C
Index
压缩数据输出
是否冲突
1
   
37
     
2
256
37
45
127
37
3
257
45
63
83
45
4
258
63
37
117
63
5
 
37
45
127
 
6
259
256
63
380
256
7
 
63
37
117
 
8
260
258
45
350
258
9
261
45
44
117
45
10
     
234
 
11
262
44
37
102
44
12
 
37
45
127
 
13
 
256
   
256
 
3LZW算法的软件验证
在用硬件实现LZW压缩算法之前,先用软件实现该算法是非常有必要的。用软件去实现一个算法相对硬件实现来说要简单的多,在用软件正确无误的实现LZW算法后,可以根据高级语言代码所建立的模型来指导硬件模型的架构以及硬件代码的编写,极大的提高效率和正确率。同时,在硬件电路设计完成后,可以通过对比软硬件压缩的结果,以此确定硬件实现的正确与否,及在硬件实现出现错误的情况时,能够快速定位硬件代码错误的位置,方便调试。所以软件实现LZW算法是必须的。
本系统采用VB语言根据图1的流程图编写了压缩软件,因为本系统着重利用硬件实现压缩过程,所以解压缩只用软件实现,本文没有讲解解压缩过程。压缩软件界面如图2所示,软件上添加了软件和硬件压缩比较模块,用以比较硬件压缩的正确性。
             
 
                             图2  LZW压缩算法流程图

2  VB压缩测试软件
4LZW算法的硬件实现
   车载信息记录仪硬件结构如图3所示,采用FPGA来实现数据采集、压缩、存储,并与单片机通信。其中压缩模块的硬件原理如图4所示。

3 系统结构框图


4 压缩模块硬件结构图
压缩模块采用Verilog语言编写,上电后,状态机控制模块开始工作,初始化其他模块,然后读前端FIFO,如果前端FIFO没有数据,则处于循环等待状态。当前端FIFO有数据时,读取该数A,并同时发给数据转换模块、字典模块、字典地址索引模块,之后读取下一个数B,同样发给上述三个模块,此时在字典地址索引模块中,上一个数A(P)和当前数B(C),利用哈希函数Index=(C<<1) XOR (P)生成一个Index值。在字典中,ABIndex成为一个25位的字符串存于FPGA内部的RAM中,RAM的长度为哈希表的长度,编码器将该字符串的地址编码为256,完成一对数据的处理。然后,读取下一个数据作为当前数据C,同样发给上述三个模块,上一个数据B作为P,在字典地址索引模块完成Index值的计算并在字典中建立新的25位字符串。这时,字典比较模块开始工作,查找该Index值是否出现过,如果没有出现,说明是非重复数据,编译器将该字符串编码为257。如果出现过,则判断是否冲突,冲突则重新计算Index值,并赋给新的编码值,不冲突说明这串数据之前出现过,属于重复数据,则将该字符串的编码值作为P,与读取的下一个数进行新一轮的计算。压缩工作的同时,将压缩好的数据存入后面的SDRAM中。当字典放满后(编码值超过允许最大值),将字典清空,重新从初始状态重建。
5系统仿真与测试
程序编写完之后,利用Modelsim对其进行仿真,ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDLVerilog混合仿真的仿真器。编译仿真速度快,编译的代码与平台无关,是FPGA/ASIC设计的首选仿真软件。压缩与存储模块仿真如图5所示,仿真结果表明与软件压缩完全符合,对于CAN总线数据的压缩,压缩率达到了19%,具有很高的压缩率,具有很高的实用价值。

5 数据压缩仿真图
6结束语
为解决车载信息记录仪长时间大容量存储与有限存储容量之间的矛盾,在记录仪存储系统中设计了基于FPGA的数据压缩模块,数据从前端采集到之后,经过压缩模块压缩之后,存入SDRAM中,可以利用SDRAM的可覆盖性,周期存储,也可以直接存储SD卡。实验证明,该压缩方法具有很高的压缩效率,实现简单,在记录仪存储系统中起到关键作用,该方法具有很高的应用价值,可以很方便地移植到其他应用FPGA的存储系统中。
作者简介
刘飞(1986-)男,硕士研究生 ,就读于中北大学仪器科学与动态测试教育部重点实验室,研究方向为测试计量技术及仪器。
参考文献
[1]李锦明张文栋毛海央等.实时无损数据压缩算法硬件实现的研究[J].哈尔滨工业大学
学报200638(2):315-317.
[2]宋光德张慧,梁磊等.一种基于FPGA的高速波形采集与实时数据压缩方法[J].电子测量
与仪器学报,2004(3):47-50.
[3]柳楠赵秀梅张志军等.基于L ZW压缩的图像信息隐藏方法[J].计算机应用与软件
2007 , (8):193-195.
[4]林小竹籍俊伟.一种改进的LZW压缩算法[J].计算机工程,2005,(14):199-201.
[5]刘洪庆王新才沈海斌缪志宏等.一种基于LZW算法的数据无损压缩硬件实现[J].
电工程200825(8):1-4.
[6]陈晋敏黄春明周军等激光雷达数据无损压缩的FPGA实现[J].计算机测量与控制,2007
15(1):100-102.
 
 
[ 应用案例搜索 ]  [ ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]  [ 返回顶部 ]

0条 [查看全部]  网友评论