阮 波,沈 统,徐 垒,杨 兰,阳 刚
1.西南科技大学信息工程学院;2.成都理工大学核技术与自动化工程学院
微地震监测技术是岩体稳定性评价的重要技术之一[1],其定位精度直接影响监测的效果,提高微地震监测设备的采样率可以提高初至拾取精度,从而提高微事件的定位精度[2]。但由于微地震监测技术属于被动监测,需要实时记录区域内的微地震活动,并对其进行分析处理,然而高采样率下收集到的数据类型繁杂且量大,不仅对数据传输和存储提出更高的要求,也给后续的数据处理和分析带来了更多的困难[3]。在微地震数据监测过程中,有效的震动数据占比很小,而绝大部分存储的数据为无效的噪声数据,这导致在数据采集过程中存储了大量的冗余数据。利用震动识别算法对震动信号进行自动识别,可以有效去除冗余,保证数据的有效性[4]。
目前,识别震动信号的方法主要有STA/LTA算法[5]、AIC算法[6]、MER算法[7]、MCM算法[7]等。传统的微地震数据处理是先将连续采集的微地震信号存储下来,然后通过软件使用相应算法进行分析处理,以获得需要的定位信息[8]。然而,该方法不仅需要大量的存储空间,还需要耗费大量的时间进行后续处理。在设备连续采集过程中实现震动信号的自动识别需要考虑微控制器的运算速度,并且需要选择简单、实时性高的震动识别算法来实现震动信号的自动识别。贾梦欢等[2]通过在FPGA内嵌STA/LTA算法,实现对连续采集的数据进行震动识别,从而降低数据的存储量。但由于STA/LTA算法受时窗长度和触发阈值影响较大[9],影响震动信号的识别结果;同时该算法对低信噪比的震动信号检测效果不佳[9],可能会增加震动事件的漏判率。
本文提出一种基于Zynq的微地震数据采集优化系统,该系统以Zynq XC7010作为主控芯片,内部嵌入修正能量比(MER)算法,实现对连续采集过程中的震动信号进行自动识别,并且该算法对低信噪比的震动记录检测效果更佳[9];通过优化算法阈值,可使该系统不受特定区域的限制。该系统使用AXI协议实现PL-PS的数据交互[10],通过AXI DMA实现数据的缓存并且不占用CPU资源,从而提高了系统的数据处理能力。
MER算法是利用前后采样时窗内能量比值进行震动信号自动检测与初至拾取的一种方法。前采样时窗反映噪声信号的变化,后采样时窗反映震动信号的变化。当只存在噪声信号时,前后采样时窗能量值趋于相等,对应的ER值趋近于1,MER阈值为ER与当前采样点乘积的立方,该阈值趋近于当前环境噪声的能量值。当震动信号出现时,后采样时窗的能量值远大于前采样的时窗能量值,ER值随之明显增大,同时当前采样值也增大,MER阈值随之明显增大。当MER值大于标准阈值时,即可判断当前存在震动信号,从而实现震动信号的自动识别。MER算法震动信号识别原理如图1所示。
图1 MER算法震动信号识别原理
MER的公式:
(1)
MERi=(ERi|xi|)3
(2)
式中:i为采样时刻;M为采样时窗,前后采样时窗相同;xi为第i个采样时刻的值;ER为前后采样时窗的能量比。
如图1所示,前后采样时窗依次向右滑动,其中后采样时窗对震动信号更敏感,能更快地检测震动信号的发生。
本系统整体设计以Zynq XC7010为主控制器,主要由模拟信号输入、信号调理电路、A/D采样控制软核、信号识别模块、数据存储模块和时间处理模块组成。系统总体设计方案如图2所示,采用动圈式速度传感器作为模拟信号输入,信号经过增益调节后送入ADC采样电路进行模数转换,使用Zynq XC7010的PL端对转换后的信号进行读取,将读取后的数据写入异步FIFO中进行缓存,并通过AXI-Stream流接口从异步FIFO中读出数据,最后通过AXI DMA将AXI流接口的数据传输到PS端的DDR进行存储。Zynq的PS端使用ARM Cortex-A9处理器实现震动信号识别和时间信息获取,最终将识别的震动信号和当前时间戳信息通过SDIO接口传输到SD卡。
图2 系统总体设计
使用动圈式速度传感器拾取震动信号,该传感器灵敏度为35.5 V/(m·s-1)、自然频率为60 Hz,使用ADS131A04芯片进行模数转换,该芯片具备4路差分输入、最高支持128 KSPS采样率和24位精度,并且功耗较低。
在本次设计中,ADS131A04芯片与Zynq通过SPI接口进行命令交互和数据传输,该芯片支持多种SPI数据接口模式,本次设计采用异步中断模式。当检测到芯片的DRDY引脚拉低时,表示数据转换已完成。整体采样状态如图3所示,芯片初始于空闲IDLE状态,经过30个时间单位延时后,执行芯片的初始化操作。该过程用于配置ADC的参考电压和采样率等参数,当接收到ADC最后返回的ACK时,芯片进入RDATA状态,表示芯片初始化完成,可以进行数据转换。当DRDY引脚拉低时表示数据转换完成,随后,拉低CS,启动SCLK时钟,并读取ADC的设备字,读取完成后,继续读取4个通道的采样数据。数据读取完成后,进入READ_DONE状态,拉高CS,等待10个时间单位后继续等待数据采集转换。
图3 ADC采集状态图
为确保该采集模块能够成功采集四通道数据,故使用Vivado的ILA逻辑分析仪捕获DRDY引脚的下降沿,并读取各通道数据,以判断数据是否正常。图4显示了ADC数据采集测试结果,当DRDY引脚拉低时,MISO引脚会持续输出采集的数据,通过对多位数据进行截取即可分别获得4个通道的数据。
图4 ADC数据采集验证
数据采集完成后,需要将PL端的数据传输至PS端进行处理,为此,使用异步FIFO进行数据的缓存和跨时钟域处理,并使用AXI_DMA将缓存的数据传输至PS端的DDR内[11]。ADC采样后,将4个通道的数据同步写入异步FIFO中,使用DMA从FIFO中读出数据。由于AXI_DMA IP核支持32 bit数据传输,因此需要将ADC采样后的24 bit数据扩充为32 bit。接下来,将4个通道的32 bit的并行数据按照通道顺序打包为128 bit的数据,并以串行方式写入异步FIFO[12]。当DMA将数据传输至DDR后,PS端再将128 bit的数据分别截取为4个通道对应的32 bit数据。为了确保对PL端的数据采集具有灵活的控制能力,故使用3个寄存器分别存储采样的开始信号、采样长度和采样通道数,因此,在采集过程中,可以通过PS端来控制数据采集。数据传输处理设计图如图5所示,本次设计将ADC的数据采集处理部分封装为一个IP 软核,使用Block Design 将该IP 软核与DMA等IP核进行连接,实现采样数据的传输。其中,PS端的AXI_GP口实现控制数据采集寄存器,PS端的AXI_HP口实现采样数据流的传输。为提高PL端传输效率,采用DMA的SG模式进行数据传输。该模式可一次访问多个内存空间,在所有任务结束后发出中断通知CPU处理,从而实现高效传输大量数据,提高系统性能。
图5 数据传输处理设计图
由于Zynq7010芯片内置高速ARM Cortex-A9处理器,因此在PS端实现震动信号识别算法,可提高算法的运行速度。经MER算法原理分析,该震动信号识别单元主要由动态阈值计算模块、时窗能量比模块和阈值判断模块组成。
1)动态阈值计算模块:该模块用于计算监测环境背景噪声对应的算法阈值。首先获取一段时间的噪声数据,并将其输入到震动识别算法中,计算每个采样点对应的阈值。当该时间段内所有采样点的阈值都计算完成后,将得到的所有阈值相加,并求平均值。这样可避免某些异常噪声能量过大而造成算法阈值偏高,从而增加震动识别漏判率。噪声数据的获取可通过实时采集一段背景噪声数据,也可将一段该环境的背景噪声存放于设备SD卡中,设备通过读取以获取噪声数据。
2)时窗能量比模块:该模块用于计算采样点前后采样时窗内的能量比,前后的采样时窗需要保持相同,分别对前后采样点的平方求和,即可得到后采样与前采样时窗的能量比值。
3)阈值判断模块:计算完前后采样能量值之比ER后,乘以当前采样点的能量值再立方,得到MER值,再与之前的标准阈值相比较,若大于阈值则判断为震动信号。
设计的震动信号识别流程框图如图6所示,由于PS端每次只能读取有限的采样点,如果使用常规的方法,可能无法对每个时窗的最后一个采样点进行计算。因此,在计算到每个时窗的最后一个采样点时,将该时窗的采样点先进行暂存处理。当下一次的新采样点读取完成后,将暂存的采样点与新采样点一起计算,以完成对完整的震动信号识别。如果每次都要求取前后采样时窗的能量值之和,会消耗大量的时间和逻辑资源。因此,使用滑动时窗的方法进行求和计算,每次只需要加上新增的采样点的能量值,再减去最后一个采样点的能量值,即可计算当前采样点的前后能量比值,从而提高运算效率。
图6 震动信号识别流程框图
本研究的关键在于系统能否准确识别震动信号,因此,将连续采集的微地震数据存储到SD卡内。PS端读取SD卡内的微震数据,然后,设备的震动信号识别模块将识别到的震动数据和时间点存储到SD卡内。最后,利用MATLAB分析数据并观察识别结果。
如图7所示,该系统以12 kHz的采样率进行连续数据采集并内嵌MER算法进行震动信号识别。图中窗口中间的波形为震动识别模块识别出的震动信号,该信号的原始波形为数据的一部分。数据分析结果表明,该系统内嵌的MER算法能够准确识别原始信号中的5个震动信号,并且效果良好。
图7 设备内嵌MER算法识别
合适的阈值选取对震动信号的识别影响很大,由于不同地区的背景噪声及震动强度不同,因此阈值的选取非常重要。系统以12 kHz的采样率连续采集不同强度的震动信号,将数据分别送入设备的固定阈值和动态阈值的震动识别模块,最终将不同阈值的识别结果分别存储,然后得到如图8所示的识别结果。
图8 算法阈值优化识别结果
相对于使用固定阈值后的识别结果,动态阈值的识别结果能够识别完整的震动信号,并且在识别强度较小的震动信号时表现更好。
在微地震数据监测过程中,微震的准确初至拾取非常重要。本系统以12 kHz采样率采集一段低信噪比的震动信号,并分别将选定的数据送入内嵌MER算法和内嵌STA/LTA算法[2]的设备中,其中,选取MER算法触发阈值为300,选取STA/LTA算法触发阈值为3。随后,将识别到的震动数据及其对应的时间点分别存储,得到了如图9所示的识别结果。
图9 低信噪比震动信号识别结果
进行精确微震定位的条件是准确地获取微震的初始到达时间。图9中,内置STA/LTA算法的设备无法识别震动信号的起始段,导致无法准确提取初始到达时间,最终会影响微震定位的精度。而内置MER算法的设备可以更完整地识别震动信号,并准确地拾取初始到达时间,因此能够进行更精确的微震定位。
将本系统和IMS微震监测系统进行16 h的数据采集,两个系统的采样率均为12 kHz,采集结束后,回收数据并观察存储结果。图10为回收的数据存储量。由图10可知,在16 h的数据存储期间,相较于未嵌入震动识别算法的IMS系统,本设备的数据存储量减少了69%,大大减少了无效噪声数据的存储。
图10 系统16 h有无内嵌MER算法数据存储对比
本文以Zynq为平台对微地震数据采集系统进行优化,使该监测系统在长时间连续采集过程中减少无效噪声数据的存储,从而降低数据存储压力。使用低功耗高精度的ADS131A04模数转换芯片实现数据的采样,在Zynq的PL端完成采样数据传输,在PS端内嵌MER算法实现震动信号识别,通过AXI协议实现PL与PS端数据的交互,进而提高系统的灵活性。此外,该系统在数据传输过程中采用了DMA的SG模式,传输过程中不占用CPU资源,使得CPU能在该过程处理PS端大量数据,从而提高系统的数据处理能力和可靠性。相关测试结果表明,该系统能够准确识别震动信号,通过使用动态阈值方法可减少震动信号识别的漏判率,从而提高震动识别精度。此外,在进行长时间连续监测中,该系统极大地减少了无效噪声数据的存储,降低了数据存储量。