LZW标准化输出的FPGA设计

时间:2022-05-30 10:11:11

LZW标准化输出的FPGA设计

【摘 要】 不断增大的声波测井采集数据使得实时传输较为困难,根据声波测井仪器遥传系统的特点,本文提出了一种基于LZW的无损压缩算法的PFGA实现方案。利用移位存储器原理,重点设计了硬件压缩系统输出模块的标准化输出9/8转换模块及其控制时序,并在QUARTUS II平台上用EP2C5Q208C8N进行了时序仿真验证,结果表明:该输出设计是可行的,且具有较好的移植性和可扩展性。

【关键词】 标准化输出 无损压缩 LZW算法 FPGA

在地球信息勘探中,声波测井[1,2]以其含有丰富的地层信息量备受重视。但是,随着声波测井采集速率和精度的提高,数据量越来越大,严重影响采集数据的实时传输至井口数据中心。为了便于实时传输,需要对声波测井数据进行必要的压缩编码。数据压缩技术[3-5]是信息处理的重要技术之一,通常分为无损压缩和有损压缩。有损压缩是指对原始信源数据信息进行重构,据此解压缩(还原)后的数据信息是原始数据的一种近似表达,但不影响受信端对原始信息的理解与判断,其优点是压缩比较大,主要应用于有限失真要求的场合。无损压缩是指对原始信源数据信息压缩编码后,解压缩还原的数据与原来的数据完全相同,其不足是压缩比不大,主要应用于对原始信息要求不失真的场合。

目前,无损压缩有软件和硬件[4,6]2种实现方式,其中,硬件压缩方式以其快速的处理能力在实时数据处理场合是软件压缩方式无法替代的,从而获得重视。为了获得较大的压缩比,无损压缩需要根据信源的统计特性进行相应的压缩方法。而声波测井数据的统计特征随地域不同而有很大差异,因此很难构造一个具有普适性的基于声波测井统计特征的最佳无损压缩硬件实现方案,需要寻求一种与信源统计特征无关的压缩算法,并且便于硬件实现。而LZW(Lenpel-Ziv&Welch)[7]压缩算法就是一种无需信源统计特征的压缩算法它是一种压缩性能和解码速度综合指标相当好的一种压缩算法。

而用具有高性能数字处理能力的FPGA器件实现无损压缩具有较大的优势[8,9],根据声波测井数据和数传的特点,本文将设计了一种基于LZW用FPGA实现声波测井数据的硬件压缩方案。本文将重点设计LZW输出模块及其工作时序,并对其进行VerilogHDL设计与时序仿真验证。

1 LZW的标准化9/8输出模块的设计

LZW[2]是一种基于字典的无损压缩算法,根据声波测井数据采集系统的数据流的特点,本文设计LZW的FPGA的系统硬件框图如图1所示,系统主要划分为数据输入缓冲模块、压缩模块(包括算法模块、字典存储表)、数据输出模块(包括输出缓存、输出标准化转换9/8)和控制器模块。

其中,数据输入模块主要由一个FIFO(FirstinFirstOut)构成,以完成对不同采集速率和采样精度的声波测井数据的缓存,并将声波采集数据转换为适合压缩模块处理的8bit数据;压缩模块是核心,主要是压缩算法子模块和字典存储子模块,字典的每个词条存放三部分内容:前缀码、当前码、当前词条编码值。存储器容量设计为1K,则其地址宽度为10位。前缀码为9位,当前码为8位,当前词条编码值为9位(即压缩后输出的数据),则字典存储器总的数据宽度为26位。为了防止字典满时重建清空字典,当词条数达到510时,字典就清空,为此设计两个相同的字典存储器,使两个字典存储器交替工作,以空间换取速度。

输出模块主要是将压缩输出的9bit码流转换成适合测井仪器遥传系统的8bit数据位宽格式。可分为6个子模块:寄存器选择存储模块、数据锁存模块、9bit移位寄存模块、8bit移位寄存模块、移位允许控制模块、输出缓冲模块。其硬件框图如图2所示,其核心是利用9bit和8bit的两个移位寄存器来达到位数转换目的。为了避免压缩模块输出数据丢失,用两个9bit的存储器实现数据缓冲,先将压缩模块输出的9bit有效数据并入寄存器RI9,再锁存到锁存器RL9,然后其锁存到9bit的移位寄存器RG9里面准备移位。在移位允许(O9_VALID为高)下,高速移位脉冲上升沿有效,每移位一次,计数器O_COUNT就加1。由于数据输入是9bit,而输出是8bit,就需要将9bit的数据移位到8bit的移位寄存器里面凑足8bit,然后将这8bit数据输出之后再移位剩余的数据位。输出模块的时序图设计如图5所示。

从图5中可知,9bit移位寄存器里面的数据每锁存一次要分两次移位,而第一次的移位次数受O_COUNT的控制:当O_COUNT=0时,计数到14停止第一次移位,当O_COUNT=1,计数倒13停止第一次移位……当O_COUNT=7时,计数到7就停止移位,此时RG9里面恰好还剩下8bit数据,可以将这8bit数据移位输出然后将O_COUNT清零,重新开始控制。而每次只有在RG9移出一位到RG8的输入线上才能使RG8移位允许信号有效,否则RG8移位之后数据还是无效的。而每次RG8里面有效数据凑足8bit就输出,而每输出一次O_COUNT+1。

2 9/8标准化输出的仿真与验证

在QUARTUSII平台上用EP2C5Q208C8N对输出模块的9bit移位寄存器移位子模块进行了时序仿真,该子模块的主要功能是实现9bit移位寄存器RG9里面的数据的移位以及移位位数的统计。其时序仿真结果如图4所示。

从图4可知:移位允许信号O9_VALID有效时,在高速移位脉冲O_CLK9作用下,串行右移一位,每右移一位,移出的数据就放在8bit移位寄存器RG8的输入线上,并且每移出一位,其计数器O_CNT9就加1。在本设计中,利用计数器的置数功能,当局部清0信号O_CLR=1即产生清0作用时,而O_CNT9则置数为6。由此表明该子模块的设计达到了预定的设计目标。

通过时延分析,该子模块的最差的最高工作频率为227.09MHZ(3.744ns)。该速度可以满足声波测井数据处理的要求。

3 结语

本文所设计的基于FPGA的声波测井数据的LZW实时无损压缩系统的标准化9/8输出子模块经过QUARTUSII的时序仿真和验证,表明该软件设计有较强的可移植,可以满足该应用需求,用2个移位寄存器实现不同码流位数转换的方法可以扩展至其他不同位数转换设计。

参考文献:

[1]李传伟,慕德俊,李安宗,姚根虎.随钻声波测井数据实时压缩算法[J].西南石油大学学报,2008,30(5):81-84.

[2]刘付斌,李艾华.偶极子数字阵列声波测井仪中数据压缩的实现[J].设计与研发,2007,12:58-61.

[3]王国权,朱振玉,卜小平.数据压缩技术的应用与研究[J].煤矿机械,2003(2)35~36.

[4]缪志宏.数据压缩算法的实现研究[D].硕士学位论文.浙江大学,2007.

[5]李锦明,张文栋,毛海央.实时无损数据压缩算法硬件实现的研究[J].哈尔滨工业大学学报,2006,38.2:315-317.

[6]靳鸿,裴东兴,祖静.无损数据压缩在数据采集系统中的应用探讨[J].华北工学院学报,2003,24(1):69-71.

[7]Phillips Dwayne, LZW data compression, Computer Application Journal Circuit Cellar Inc. 1992 (27):36-48.

[8]陈晋敏,黄春明,周军.激光雷达数据无损压缩的FPGA实现[J].计算机测量与控制,2007,15(1):100-102.

[9]李雷定.利用FPGA实现LZW算法的研究[J].可编程器件应用,2008,31.10:170-171.

上一篇:延长N区单个测井相和沉积微相分析 下一篇:计量装置‘六角图’远程监测子系统研发、应用