图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×105bps。
3 数据存储管理
3.1 存储管理数据特征
在本分布式测试系统实验时,所要存储管理的冲击波、水声信号等数据的大小、存储顺序都一定,是其典型特征。因此存储数据时可以按顺序方式存储,把每一类数据分别以一个文件的形式存储,用文件名把冲击波与水声信号等进行区别,并且每一文件有其唯一的编号ID。采集参数信息(如时间、通道、频率、点数、触发延时信息等)作为每个文件的头信息保存,事后数据分析处理时可先读取文件存储状态(包括所有存储文件的头信息),然后可为事后分析处理数据提供便利。
3.2 文件系统的设计
文件系统的具体设计是根据系统资源环境和应用需求而定的,因此在具体的应用系统中文件系统会有不同的实现形式。
结合本课题的存储器特征:NAND Flash(Samsung K9F1208)是以页为单位存储、以块为单位擦除,写入速度快(典型200μs)、擦除速度慢(典型2 ms)。存储数据特征:文件大小是确定的,存储过程是顺序存储,且存储之后不会对数据进行再写入和随机读取与修改。NAND Flash构建一种基于块设备存储的文件系统,适合对本课题多次重复性实验数据进行有效存储与管理。基于块设备存储的文件系统是磁盘存储器常用的文件系统,典型的是FAT文件系统。FAT文件系统技术成熟、结构简单、系统资源开销小,结合本系统使用的NAND Flash特性,易于在本系统硬件平台(Atmel ATmega162单片机与Xilinx XC2C256-7 CPLD为核心控制)上实现。
由于NAND Flash不同于一般的磁盘存储器,在出厂时允许有一定数量的坏块,需对通用FAT文件系统做相应的修改,方可运用于本系统。在NAND Flash中建立无效块表,在该表内把所有块的状态标示出来(如可用0x00表示坏块、0xff表示有效块),这样在之后的数据存储过程中,可防止把数据写到坏块,提高数据存储的可靠性。本文件系统由以下几部分组成:系统记录区、无效块表、文件登记表区、数据区。
本系统所用的NAND Flash是K9F1208,生产厂商设定的存储空间的第1区块必定是有效块。在设计时,将第1区块作为存储器的系统记录区,同时在此区块中建立无效块表、文件分配表、文件登记表。
①系统记录区:存放最重要的文件系统信息,如Flash存储器的类型、容量、版本信息等。
②无效块表:标示所有块的状态。无效块表存储在第1区块的第1页到第8页(共8页,每页512字节,512×8=4 096,可把FLash所有块状态标示出来)。系统调试结果如图4所示。