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

发布者:Asawen最新更新时间:2011-07-28 关键字:无损数据压缩  FPGA 手机看文章 扫描二维码
随时随地手机看文章
    引言

  在工业生产和科研中,通常要对信号进行长时间高速采样,会产生大量采样数据。在一些特殊环境下,受体积和功耗的限制,不能添加过多存储器,需要引入数据压缩技术来解决。软件压缩算法的运算量较大,需要很高的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算法过程并不是很复杂,能够得到较快的压缩速度。并且其在对数据特征并不了解情况下,也能有较好的压缩效果。同时,其对应的解压缩算法也不复杂,解压速度也优于其他一些算法。

  2 LZW算法的FPGA实现

  CycloneII是Altera公司推出的新一代低成本系列FPGA器件,选用CycloneII系列的EP2C5T14418芯片来实现数据压缩。这款芯片有4 608个逻辑单元、26块M4K RAM块、13个嵌入式乘法器、2个锁相环,用户I/O引脚数目为89,完全能够满足设计对存储器容量以及逻辑功能的要求,并且有一定余量,便于功能扩展。设计采用Quartus II为FPGA器件软件开发平台,用VHDL+原理图的混合输入方式进行层次化描述。系统的整体框图如图1所示。采集到的数据经过压缩后存储到外部存储器,再读入计算机,用专用软件对压缩数据进行解压还原,对原始数据进一步分析处理。

b.JPG

  整个设计的核心是压缩算法的实现。FPGA设计过程中模块划分非常重要,好的模块划分能够大大减少逻辑所消耗的面积并优化功能的时序关键路径。具体到LZW算法的FPGA实现,划分了10个大模块,各个模块相互之间的连接如图2所示。图中名字相同的箭头,表示是连接在一起的。为了使框图看起来比较清晰,图中省略了一些控制信号的连接。状态机控制模块(M5)是整个压缩模块的时序控制中心,根据其他模块反馈给它的信号,判断压缩的运行状态,从而控制其他各个模块的运行。

c.JPG

  [page]用FPGA实现LZW算法要解决以下几个问题:

  ①压缩过程中字典的缓存问题。因为所有数据处理和传输工作都是由FPGA完成,且考虑到实时压缩速度,字典的缓存使用FPGA内部的RAM资源。

  ②字典的建立与更新问题。字典的建立使用FPGA片内资源来完成,大容量字典虽然会提高压缩比,但必须考虑到FPGA内部的资源量。因此选用9位的定长编码方式对数据进行处理。

  ③压缩后输出数据流传输和存储问题。由于压缩后是9位的数据流,不利于数据的存储,因此将9位的数据转换成8位的数据流进行传输和存储。

  3 系统测试及性能分析

  首先测试LZW算法模块能否正确无误地压缩数据。先由上位机发送数据给FPGA,FPGA压缩数据并写入SRAM存储器。压缩结束后,上位机读取SRAM中的数据并存为一个文件,最后再将这个文件与用软件压缩的结果作比较,来判断结果正确与否。图3是压缩原文件和解压后文件以十六进制形式对比后的结果,从图中下方框中的信息可知,两个文件的大小都是248 714字节,0字节差异,完全匹配。为了提高测试的全面性,避免出现因为偶然而造成的个别功能死角没被测到,利用格式各异的数据文件进行了大量的压缩结果对比实验,最终实验结果表明软硬件压缩的结果是一致的,并且解压后与源文件也是一样的,说明LZW数据压缩模块实现了功能上的要求。

d.JPG

  然后对压缩模块的压缩率进行测试。整个设计最初的定位是应用于微体积、微功耗的测试系统中,现选取了实验室里一些实测数据(图4~6),对其分别用LZW与WinRAR进行压缩实验。WinRAR是一种商业的无损压缩软件,使用的是混合压缩算法,可根据需要向计算机申请内存作为哈希字典,字典大小可达4 MB。压缩后的最终结果如表1所列。表中的压缩率是按压缩后的数据量除以压缩前的数据量计算的,压缩率数值越小表明压缩效果越好。

e.JPG

  从表中可以粗略看出以下两点:

  ①同一压缩算法对同一类数据压缩效果相差不多,但同一压缩算法对不同类的数据压缩效果相差较大。

  ②LZW压缩算法的压缩性能低于商业软件WinRAR,并且这种压缩性能对不同类的数据的表现也不尽相同。

  从上表可以看出,所设计的算法对某些类型的数据的压缩效果还是非常显著的。虽然从压缩率上来说,LZW不如WinRAR出色,这是由于LZW算法要比使用混合算法的winRAR简单,同时还受到在FPGA器件中构造的哈希字典容量大小的限制。但LZW的优点也在于其算法简单,在对同一数据文件进行压缩时,速度上LZW比WinRAR要胜出一筹,这个速度特性在实时压缩时尤为重要。

  结语

  介绍了一种用FPGA实现的数据压缩系统。通过大量测试验证,结果表明系统能够正确无误地工作,压缩时的最大数据吞吐量在8 MB/s以上,对实测数据压缩率最高可达13.70%,压缩效果显著,大大减少了对存储空间的要求,实现了压缩性能与压缩速度的统一。同时,当FPGA工作在主频为24 MHz,A/D采样频率在1 Msps时,整个电路的供电电流只有37 mA,满足了测试系统低功耗的要求。若用外部RAM存储器实现LZW字典,将能大幅度地扩大字典容量,显著改善数据的压缩效果。

关键字:无损数据压缩  FPGA 引用地址:基于FPGA的实时无损数据压缩系统设计

上一篇:采用FPGA实现视频应用中的OSD设计
下一篇:在FPGA中置入可配置的32位处理器增加设计灵活度

推荐阅读最新更新时间:2024-05-02 21:30

STM32单片机按键消抖和FPGA按键消抖大全
写在前面: STM32单片机按键消抖和FPGA按键消抖大全 按键去抖:由上图可以看出理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动的现象,抖动时间的长短和按键的机械特性有关,一般为5~10ms。通常我们手动按键然后释放,这个动作中稳定闭合的时间超过了20ms。因此单片机在检测键盘是否按下时都要加上去抖动操作,有专用的去抖动电路,也有专门的去抖动芯片,但通常我们采用软件延时的方法就可以解决抖动问题。 1. 单片机中按键消抖程序 1.1 单片机中,比如STM32中,一般的方法(最简单的方法) 软件消抖程序: if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_14
[单片机]
STM32单片机按键消抖和<font color='red'>FPGA</font>按键消抖大全
一种基于FPGA的图神经网络加速器解决方案
(白皮书编号:WP024) 得益于大数据的兴起和计算能力的快速提升,机器学习技术近年来经历了革命性的发展。诸如图像分类、语音识别和自然语言处理等机器学习任务,都是对具有一定大小、维度和有序排列的欧几里得数据进行处理。然而,在许多现实场景中,数据是由复杂的非欧几里得数据(例如图形)表示的。这些图形不仅包含数据,还包含数据之间的依赖关系,例如社交网络、蛋白质分子结构、电子商务平台中的客户数据等。数据复杂性的提升给传统的机器学习算法设计及其实现技术带来了严峻的挑战。在这种情况下,许多全新的基于图形的机器学习算法或图神经网络(GNN)不断在学术界和工业界涌现。 GNN对计算能力和存储有非常高的要求,而且其算法的软件实现效率非常低。因
[嵌入式]
一种基于<font color='red'>FPGA</font>的图神经网络加速器解决方案
莱迪思升级混合信号设计软件
莱迪思半导体公司(NASDAQ: LSCC)今天宣布推出PAC - Designer®混合信号设计软件6.1版本,更新支持莱迪思的Platform Manager™、Power Manager II 和 ispClock™器件。现在用Platform Manager器件进行设计的用户将能够访问今天宣布的Lattice Diamond® 1.3软件设计环境。PAC – Designer 6.1和Diamond 1.3设计软件工具的整合将使Platform Manager产品成为实现更先进的数字设计的选择。一个自动化的模拟环境是设计软件整合的主要优势,而以前Platform Manager设计人员没有这样的环境。 莱迪思器件和解决
[嵌入式]
莱迪思升级混合信号设计软件
基于单片机的FPGA并行配置方法
在当今变化的市场环境中,产品是否便于现场升级、是否便于灵活使用,已成为产品能否进入市场的关键因素。在这种背景下,Altera公司的基于SRAM LUT结构的FPGA器件得到了广泛的应用。这类器件的配置数据存储在SRAM中。由于SRAM的掉电易失性,系统每次上电时,必须重新配置数据,只有在数据配置正确的情况下系统才能正常工作。这种器件的优点是可在线重新配置ICR(In-Circuit Reconfigurability),在线配置方式一般有两类:一是通过下载电费由计算机直接对其进行配置;二是通过微处理器对其进行配置。前者调试时非常方便 ,但在应用现场是很不现实的。因此,如果系统重新上电时,系统本身具有自动加载可编程逻辑器件的编程文件
[单片机]
Mentor高等级逻辑综合(HLS)流程助力FPGA
Achronix的Speedcore系列eFPGA可得到Catapult HLS的全面支持 Catapult HLS为FPGA流程提供集成化设计与开发环境,率先支持5G无线应用 基于现场可编程门阵列(FPGA)的硬件加速器件和嵌入式FPGA(eFPGA)半导体知识产权(IP)领导性企业Achronix半导体公司(Achronix Semiconductor Corporation)日前宣布:该公司FPGA技术系列产品已获得其合作伙伴、西门子旗下的Mentor公司的支持,为其提供优化的高等级逻辑综合(HLS)流程。 该集成开发环境使设计人员能够使用Mentor的Catapult®HLS和Achronix的ACE设计工
[嵌入式]
FPGA与DS18B20型温度传感器通信的实现
DS18B20是DALLAS公司生产的一线式数字温度传感器,采用3引脚TO-92型小体积封装;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。 一线式(1-WIRE)串行总线是利用1条信号线就可以与总线上若干器件进行通信。具体应用中可以利用微处理器的I/O端口对DS18B20直接进行通信,也可以通过现场可编程门阵列(FPGA)等可编程逻辑器件(PLD)实现对1-WIRE器件的通信。 本文介绍利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的通信功能。FPGA可以将读出DS18B20的48位ID号和12位温度
[应用]
FIR滤波器的FPGA实现方法
在数字信号处理系统中,有限脉冲响应(finite impulse response, FIR )数字滤波器是一个非常重要的基本单元。近年来,由于 FPGA 具有高速度、高集成度和高可靠性的特点而得到快速发展。随着现代数字通信系统对于高精度、高处理速度的需求,越来越多的研究转向采用FPGA来实现FIR滤波器。而对于FIR滤波器要充分考虑其资源与运行速度的合理优化,各种不同的FIR滤波结构各具优缺点,在了解各种结构优缺点后才能更好地选择合适结构来实现FIR滤波。 1 FIR数字滤波器 FIR数字滤波器由有限个采样值组成,设计中在满足幅值特性时,还能保证精确、严格的相位特性,因此在信号处理等领域得到广泛的应用。 对于
[嵌入式]
FIR滤波器的<font color='red'>FPGA</font>实现方法
FPGA在虚拟仪器设计中的应用
众所周知,虚拟仪器技术是根据用户的需求由软件定义通用测试硬件功能的系统。 通过将可重复配置的硬件应用到一个虚拟仪器系统,工程师可以使用软件来开发算法并把它们应用到一个嵌入式芯片,从而把虚拟仪器软件的可配置能力扩展至硬件。 以前只有那些熟悉底层编程语言如VHDL的硬件设计人员才能利用FPGA技术。然而,现在工程师们已可以用LabVIEW FPGA(NI公司开发的用于现场可编程门阵列芯片的图形化开发环境)来开发出定制的控制算法并把它下载到FPGA芯片上。LabVIEW FPGA是一种图形化的编程环境,通过LabView FPGA,用户可以在测试的过程中很容易地对FPGA进行配置,系统将其自动转化为VHDL语言,下载到FPGA中
[测试测量]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved