APP下载

基于数据重构的自适应间隔游程压缩算法

2021-02-23石冯磊宫海波

兵器装备工程学报 2021年1期
关键词:低电平字节脉冲

王 宽,石冯磊,宫海波

(中国飞行试验研究院,西安 710089)

武器系统的特性主要通过武器脉冲信号的幅度、极性、上升沿及下降沿曲线等信息进行表征。近年来,随着航空武器系统的发展[1],武器脉冲信号的测试要求也越来越高[2-3]:如武器脉冲信号的通道数从之前的几个增加到现在的32个,脉冲宽度从之前的微秒级缩减至纳秒级,脉冲边沿的时间分辨率不得超过100 ns。因此为了满足系统的采集要求,信号的采样率至少应为20 MHz。若要对机上32路信号进行不间断数据记录方式,按一个飞行架次2 h计算,理论数据存储容量为20 M×32路×3 600 s×2 h×2=9 000 GB,目前微型存储设备的发展远远满足不了该要求[4]。同时,理论数据传输速率为20 M×32路×16 bit=10 Gb/s,即数据总线带宽要满足10 Gb/s以上才能完成数据的正常记录,而现有的总线无法满足该带宽的要求[5]。因此必须对采集数据进行实时压缩才能满足总线带宽和数据存储的要求。

目前,常用的压缩技术分为无损压缩与有损压缩。为了确保压缩后的数据不存在损失,可正常恢复,需使用无损压缩[6-7]。无损压缩中应用较为广泛的有2种方案,分别是字典编码和熵编码方法[8]。常用的字典编码算法有RLE、LZ77/78、LZSS、LZW等,其压缩核心是使用信息码元之间的相关性,为数据流中的码元创建对应的编码字典,然后将数据流中的码元用编码来代替,从而实现数据的压缩数据。常用的熵编码法有霍夫曼编码、算数编码、香农-范诺编码,其压缩的核心是将数据流中的字母用不同长度的比特代替[9-10],进而实现数据的压缩。熵编码法的复杂性主要集中在各符号的概率统计及概率树生成,当数据流中各符号的出现概率差别不大时,其可压缩性差,会得到更大体积的压缩数据[11];字典编码算法的复杂性集中在符号串的比较上,其有较高的数据压缩率,但计算复杂并不适合实时压缩[12],文献[6]采用改进行程编码算法进行遥测数据的压缩,其计算简单可进行实时压缩,但该算法压缩效率低。

针对上述方法中存在的可压缩性差及压缩效率低的缺点,提出了基于数据重构的自适应间隔游程压缩算法。该算法首先采用重构技术将数据中的相同字节重构成连续的数据块,提高了数据的可压缩性,然后提出了自适应间隔游程编码规则,通过引入连续字节标志位,实现了压缩方式随数据特性的自适应,避免了数据的膨胀问题,同时通过引入游程长度和游程域长度标志,对压缩长度进行动态调整,实现了游程间隔的自适应调整,进一步提高了数据的压缩率,同时该算法计算量小,满足嵌入式实时压缩的需求。最后通过试验表明该算法能够对数据进行实时压缩。

1 武器脉冲信号特征分析

武器脉冲信号的波形如图1所示。该信号中有用的信息包括:脉冲的幅值,上升沿曲线和下降沿曲线。为了保证信号采集的延时最小,必须采用AD连续转换的方式进行信号采集。然而,由于AD转换过程中存在噪声干扰、量化误差等因素,经AD转换后的码值通常会有几个值的差别,同时系统采用16位AD转换,因此很难存在连续多个字节相同的情况,武器脉冲信号AD采样数据如表1所示。

图1 武器脉冲信号

表1 武器脉冲采集数据

由表1可见,采样数据几乎不存在两个连续相同的字节。然而,当数据流中存在大量连续相同字节时可以得到很好的压缩比,当数据流中没有连续相同字节时,游程编码不但无法进行压缩,还会得到体积更大的压缩数据,因此为了实现武器脉冲采样数据的压缩,设计了基于数据重构的自适应间隔游程压缩算法。

2 武器脉冲信号重构技术

由第1节分析可知,由于实际模数转换过程中存在量化误差、噪声干扰等因素,采集的数据基本不存在连续相同字节的情况,采用传统的游程编码压缩后会得到体积更大的数据,无法达到数据压缩的目的,因此为了实现武器脉冲信号的可压缩性,提出了武器脉冲信号重构技术。

2.1 脉冲低电平阈值滤波

脉冲低电平的采样数据如表1所示,可见每个数据的高字节都为0,低字节只有十几个码值的差别,其物理量约为几个毫伏的差别,这些差别主要由量化误差、噪声干扰的引起。这些由干扰带来的码值的差别造成采样数据中几乎不存在连续相同的字节,故而使数据不可压缩。因此该算法采用低电平阈值数字滤波技术来滤除干扰信号。该电平阈值数字滤波技术的传递函数如式(1)所示:

(1)

式中,y为采样存储值;x为初始采样值;X为阈值。

若AD转换后的采样值x小于阈值X,表明脉冲信号为 0 V,则将AD转换后的码值强制修改为0;如果AD转换后的码值大于阈值则认为信号不为0 V,不对AD转换后的码值进行修改,保持真实转换码值。这样即可完成阈值滤波,可以保证脉冲信号为低电平时,AD转换后数据的高低字节均为0,以便对数据进行压缩。可见,低电平阈值滤波技术解决了脉冲低电平的可压缩性问题,然而却无法解决脉冲高电平的压缩性问题。

2.2 信号采集重构技术

由表1可知:无论是脉冲高电平还是脉冲低电平,每个数据的高字节在电平一定的情况下是保持不变的,仅低字节数据变化;同时结合脉冲信号的特性可知,当信号电平不变化时,前后两个数据仅低字节变化,高字节基本不变。

针对以上脉冲信号的特点,提出了武器脉冲信号采集重构技术,如图2所示。将一个16位采集数据按照高低字节分裂开来,将所有数据的高字节重新组合成一个新的数据块存储,同时将所有数据的低字节重新组合成一个新的数据块存储,这样一段完整的原始数据就分成高字节部分和低字节部分两个区域。这样当脉冲电平不变时,高字节部分数据保持不变,可进行数据压缩。

图2 数据重构技术框图

如图2所示,将每一个数据按照高低字节分开存储,这样在脉冲电平一定的情况下,数据高字节存储区域的字节是不变化的,可实现高字节存储区域的数据可压缩性。

3 自适应游程长度编码

为了解决传统游程编码压缩后数据膨胀的问题,产生了很多改进算法,其中应用比较多的是Apple公司提出的PackBits算法,其通过引入标志位成功解决了压缩膨胀问题。由于武器脉冲信号频率低且采样率高,因此会存在上百万个字节相同的数据块,这就要求行程长度需达到百万级,而PackBits算法中的行程长度为127,所以其压缩率并不是很高。为了进一步提高其压缩率,提出了一种自适应游程长度的编码算法,其算法定义如表2所示,其具体属性如表3所示。

表2 自适应游程长度编码协议

该算法在PackBits的基础上增加了数据字节类型Type、校验位Check和游程域长度Length-Number三个属性。其中数据字节类型Type用以表示该数据域的内容是数据的高字节还是低字节;校验位Check用以解码校验使用,每一个原始数据块都会分配一个校验值,该原始数据块分裂成的高低字节数据块会继承该原始数据块的校验值,这样若两个高低字节数据块的的校验值相同,则说明这两个数据块能够配对并可解码出正确的原始数据,若两个高低字节数据块的校验值不同,则说明这两个数据块不能配对并进行解码;若游程域长度Length-Number表示游程域的长度,因此游程域长度最少为1个字节,最大为16个字节。

表3 协议属性

本算法中Length-Number为2个bit,所以游程域的最大长度为4个字节,因此本算法最大可以表示的数据大小为GB。若这4 GB的数据全部为低电平,则压缩后的数据可表示为0x83、0xFF、0xFF、0xFF、0xFF、0x00、0xD3、0xFF、0xFF、0xFF、0xFF、0x00,可见4GB的低电平数据压缩后可通过12个字节表示;若这4 GB的数据全部为高电平,则压缩后的数据可表示为:高字节部分(6个字节)+低字节(5个字节+231)。所以可得到该算法的压缩率为

(2)

式中:x为总的字节数量;D为高电平字节数占总字节数的比率。

由于在实际试飞过程中总的字节数x远远大于23,所以该算法的压缩率可表示为

(3)

即算法的压缩率为高字节比率的一半。由于武器脉冲信号只有在执行武器发射任务时才会产生,且每个脉冲的时间非常短,所以在一个2 h的飞行试验中,武器脉冲的累计时间不会超过总时间的5%,所以该算法的理论压缩率不会超过2.5%。

自适应游程长度编码的主要步骤:

1) 标志位Indicator,校验位Check,游程域长度Length-Number等位置初始化,并设置数据压缩长度L。

2) 获取字节B(k)(k=0),将其放置在数据域Data区,同时将数据字节类型属性按照数据重构的结果赋值(高字节为0,低字节为1);

3) 获取B(k+1)字节,若B(k)与B(k+1)相同,则游程域Run Length加1,并将Indicator置1;若B(k)与B(k+1)不相同,则游程域Run Length加1,同时将B(k)也放置在数据Data区,并将Indicator置0;

4) 判断Indicator是否发生变化,若Indicator发生变化,则执行步骤6);

5) Run Length若小于压缩长度L,则执行步骤3),若大于L,则执行步骤6);

6) 根据Run Length的数值所占的字节长度确定Length-Number的数值,后将数据输出,同时重复步骤2)。

4 试验结果

该算法的压缩流程如图3所示。如图3所示,系统的压缩过程为首先对原始数据进行阈值判断,若原始数据小于阈值认为数据为脉冲低电平,若原始数据大于阈值认为该数据为脉冲高电平,为了简化压缩规则,对高低电平进行单独压缩。若数据为脉冲高电平,此时不对数据进行阈值滤波,直接进行数据重组,若数据为脉冲低电平,则需要先对数据进行阈值滤波后再进行重组,最后应用自适应游程长度压缩算法对数据进行压缩。

图3 压缩流程框图

以表1中20个数据为例进行数据压缩。通过阈值判断可知数据1到数据10为脉冲低电平数据,数据11到数据20为脉冲高电平数据,对原始数据进行重构,结果如表4所示。

表4 数据重构结果

由表4可以看出:经过阈值滤波后脉冲低电平数据高低字节全部变为0x00,而脉冲高电平数据不被影响,同时经过数据重构之后高字节数据块和低字节数据块均出现了连续相同字节区域,即数据具备了可压缩特性。对表4数据进行压缩,结果如下:

0x80、0x0A、0x00、0xC0、0x0A、0x00、0X84、0x0A、0xB3、0x44、0x0A、0x33、0x23、0x2F、0x37、0x30、0x2F、0x32、0x33、0x2D、0x2F

可见表1压缩后的数据可由以上21个字节进行表示,可见该算法能够对数据进行压缩。同时,按照表3的协议可知高字节数据块的前10个字节可通过0x80,0x0A,0x00这3个字节来表示,而这3个字节可最大可表示64 K的数据,其压缩率比较高。而实际应用中,算法的压缩率与武器高脉冲电平的比率有关。

为了进一步验证算法的可行性和效率,分别基于文[6]中的改进行程编码和本文的算法设计了实时压缩模块,如图4所示。该模块的功能为:接收数据采集系统发送的数据,将其压缩后发送出去。并搭建了如图5所示的试验系统。

图4 武器脉冲数据实时压缩模块

试验中采用高速信号采集器采集飞机武器系统的一路武器参数信号,随后将采集到的数据分成3路,一路直接进入高速数据记录系统,一路进入改进行程编码的实时压缩模块,最后一路进入本文的实时压缩模块,经过数据压缩后进入高速数据记录系统。为了避免数据过大,试验中在1 h内做完整套武器系统发射的模拟流程,理论上产生的数据量约。试验结果如表5所示。

图5 试验系统框图

表5 采集数据压缩结果

由表6可知:单路信号1 h将产生102 G的数据量,经过改进行程编码方法压缩后产生4.4 G的数据量,压缩效率为4.3%,本文方法压缩后产生2.3 G的数据量,其压缩率约为2.26%。可见本文提出的压缩算法能够对数据进行压缩,且压缩效率较改进行程编码有很大的提高。

目前,基于该压缩算法的数据实时压缩模块已经应用于飞行试验中,飞行试验中武器参数采集记录设备采用PCIE总线进行数据传输其速率为1 Gb/s,数据记录介质的容量为500 GB,而经过该压缩算法后可得到理论数据的传输速率为20 M×32路×16 bit×2.26%=231.424 Mb/s,理论数据存储容量为20 M×32路×3 600 s×2 h×2×2.26%=203.4 GB,可见经过该算法压缩后满足嵌入式存储设备的性能范围。

5 结论

本文通过对武器脉冲信号的特性进行分析,提出了一种基于数据重构的自适应间隔游程压缩算法,采用阈值滤波技术和数据重组技术实现了武器系统脉冲数据的可压缩性,同时设计了自适应游程长度编码协议,大大提高了数据的压缩效率。该算法编码规则简单,能够满足边采集边压缩的要求,可应用于嵌入式采集系统中。试验结果表明该算法的压缩效率高达2.26%,满足嵌入式存储设备的性能范围,且该算法已经成功应用于试飞测试系统中,满足武器系统试飞数据的采集压缩需求。

猜你喜欢

低电平字节脉冲
基于非因果滤波和零点法的近断层脉冲型地震动识别方法
No.8 字节跳动将推出独立出口电商APP
他克莫司联合超脉冲CO2点阵激光治疗慢性湿疹的疗效观察
一种实用的电脑接口判断方法
No.10 “字节跳动手机”要来了?
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
数字电子技术的应用
浅谈物理电路与数字电路
基于脉冲反射法电缆故障定位脉冲源的设计
人类进入“泽它时代”