引言
本课题研究的数据存储与管理技术可应用于在大型海域进行的水中爆炸效能参数测试的分布式测试系统中,整个系统中基站与主站通过无线传输。由于在海域中的测试环境比较恶劣,对于测试设备的布置比较困难,因此有时需要在短时间内做多次重复性实验。重复性实验就要求将每次所采集的数据实时回传处理或存储管理,为下次实验作准备。本系统所采用的无线传输方式决定不可能在短时间内把大量数据回传。NAND Flash存储器作为一种非易失、大容量、可擦除与重复性编程等优点,在其内部构建文件系统,把多次重复性采集的多种数据以文件格式存储,可为系统由无线传输引起的瓶颈提供另一种解决方案。在存储冲击波数据时,冲击波信号有其典型的特征(最大值特征),可提取其最大值特征作为该文件的信息一同存储。事后数据快速分析处理时,最关心的是冲击波压力峰值(即最大值),因此可通过传输特征值少量数据快速分析提高系统实时性。
1 系统组成
本课题研究的数据存储管理系统是分布式测试系统基站的重要组成部分。该模块实现了对冲击波数据、水声定位信号、环境温度等多种数据的存储管理,为事后数据分析处理提供可靠保证,并通过与基站中的无线收发模块通信,实现与主站的通信。图1为系统结构框图。数据存储管理系统主要由单片机与CPLD组成,本系统通过在CPLD内部扩展SPI接口电路,完成冲击波、水声定位等信号的存储;并在NAND Flash存储器中构建文件系统,实现对多种大量数据的存储管理。
图1 系统结构框图
2 数据传输接口电路设计
本数据存储管理系统以单片机和CPLD作为核心控制器。由于单片机的端口、内部串口等资源数目有限,需在CPLD内部扩展SPI接口电路,不仅简化了接口和控制,提高了系统的整体性能及工作灵活性[1],还使系统扩展变得可行。CPLD扩展SPI接口框图如图2所示。
图2 CPLD扩展SPI接口框图
在CPLD内部编写双向I/O总线、译码电路、时钟发生器、移位寄存器等电路完成SPI接口电路设计。READY为从机(冲击波模块)与主机(数据存储管理系统)通信时状态标志位,供主机与从机通信时查询使用。READY为1时,主从机可通信。
图3为CPLD扩展SPI接口电路读取冲击波模块数据时的波形。bit8为READY信号,从机高电平时主机读取数据;bit9为SCK时钟信号,主机查询READY为高时主机产生8个SCK时钟,启动SPI传输;bit10为MOSI,主机输出端口;bit11为MISO,主机输入端口,SCK上升沿读取数据。图3连续两个周期读取的数据为0x07(00000111)、0xb0(10110000),两周期时间间隔为20.400 μs,传输速度可达4×105 bps。
图3 读冲击波数据波形
3 数据存储管理
3.1 存储管理数据特征
在本分布式测试系统实验时,所要存储管理的冲击波、水声信号等数据的大小、存储顺序都一定,是其典型特征。因此存储数据时可以按顺序方式存储,把每一类数据分别以一个文件的形式存储,用文件名把冲击波与水声信号等进行区别,并且每一文件有其唯一的编号ID。采集参数信息(如时间、通道、频率、点数、触发延时信息等)作为每个文件的头信息保存,事后数据分析处理时可先读取文件存储状态(包括所有存储文件的头信息),然后可为事后分析处理数据提供便利。
3.2文件系统的设计
文件系统的具体设计是根据系统资源环境和应用需求而定的,因此在具体的应用系统中文件系统会有不同的实现形式[2]。
结合本课题的存储器特征: NAND Flash(Samsung K9F1208)是以页为单位存储、以块为单位擦除,写入速度快(典型200 μs)、擦除速度慢(典型2 ms)。存储数据特征:文件大小是确定的,存储过程是顺序存储,且存储之后不会对数据进行再写入和随机读取与修改。NAND Flash构建一种基于块设备存储的文件系统,适合对本课题多次重复性实验数据进行有效存储与管理。基于块设备存储的文件系统是磁盘存储器常用的文件系统,典型的是FAT文件系统。FAT文件系统技术成熟、结构简单、系统资源开销小,结合本系统使用的NAND Flash特性,易于在本系统硬件平台(Atmel ATmega162单片机与Xilinx XC2C2567 CPLD为核心控制)上实现。
由于NAND Flash不同于一般的磁盘存储器,在出厂时允许有一定数量的坏块,需对通用FAT文件系统做相应的修改,方可运用于本系统。在NAND Flash中建立无效块表,在该表内把所有块的状态标示出来(如可用0x00表示坏块、0xff表示有效块),这样在之后的数据存储过程中,可防止把数据写到坏块,提高数据存储的可靠性。本文件系统由以下几部分组成:系统记录区、无效块表、文件登记表区、数据区。
本系统所用的NAND Flash是K9F1208,生产厂商设定的存储空间的第1区块必定是有效块。在设计时,将第1区块作为存储器的系统记录区,同时在此区块中建立无效块表、文件分配表、文件登记表。
① 系统记录区:存放最重要的文件系统信息,如Flash存储器的类型、容量、版本信息等。
② 无效块表:标示所有块的状态。无效块表存储在第1区块的第1页到第8页(共8页,每页512字节,512×8=4096,可把Flash所有块状态标示出来)。系统调试结果如图4所示。
图4 无效块表信息
③ 文件登记表:存储每一个文件的文件头信息,存储在无效块表之后。K9F1208每页有512字节,每页存储一个文件的文件头信息。现每一文件头信息占30字节(其余系统可扩展使用),主要包括文件名、ID号、长度、以及该文件存储在NAND Flash中的起始、结束块号物理地址。文件登记表的建立为系统查看所有存储数据提供便利,方便数据管理。根据文件登记表中文件存储在NAND Flash的首尾物理块地址信息,可随机读取少量文件数据分析,为系统因无线传输大量数据的瓶颈提供另一种解决方案。调试结果如图5所示。
图5 文件登记表信息
④ 数据区域:用于存放数据,文件系统中,数据分配的最小单位是Flash存储器的一个基本擦除单元,即一个物理区块(16 KB)。
3.3 基于冲击波数据特征提取的数据存储
由于每次实验冲击波数据量相对于无线传输而言比较大(4 MB,系统实验无线传输需20 min),如果回传全部数据处理,系统实时性能比较差。水中冲击波信号有其典型的特征,如图6所示。Pm为冲击波压力峰值信号(即最大值),事后数据分析处理时,最关心的是冲击波的压力峰值附近的数据。因此在数据存储时,可根据其特征找最大值,并把最大值所存储的NAND Flash的物理地址作为一个参数信息保存到文件头信息中,如图5所示。冲击波文件信息中有最大值与所存储位置文件信息。在文件数据回传时,可依据最大值所在块地址信息读取最大值附近的数据,实现基于特征的高效数据传输,提高系统实时性。图7为根据冲击波文件头信息读取最大值附近40000个点(40000×2/1024=78.125 KB)数据恢复波形,实现了基于特征提取的高效数据传输。
图6 典型冲击波信号波形
图7 最大值附近40000个点数据恢复波形
结语
本课题研究在大型海域进行的分布式测试系统中对多种类大量数据的存储管理,通过在系统内部扩展SPI接口电路,实现与冲击波采集模块数据传输。此方法提高了系统的扩展性,为系统升级管理更多数据模块提供了可能;针对大量、多种类实验测试数据以及实验的重复性,基于NAND Flash K9F1208存储器构建文件系统对数据分类存储管理。文件登记表的创建方便了数据的管理,为实验事后数据分析处理提供了可靠依据;根据冲击波信号的典型数据特征,存储冲击波信号时提取其特征信息,作为文件头信息保存,可实现基于特征提取的高效数据传输。