郝小龙 鞠晓东 卢俊强 门百永 陈云霞
(1 西安石油大学 油气钻井技术国家工程实验室井下测控研究室 西安 710065)
(2 中国石油大学(北京)北京 102249)
(3 中国石油集团测井有限公司随钻测井中心 西安 710054)
为了提高探测深度和方位分辨率,新一代方位远探测声波测井仪采用阵列化的方位接收换能器并记录更长时间的全波列数据[1],每个深度点的数据量能够达到4 Mbits。如果采用电缆实时传输所有数据,最大测井速度仅为60 m/h 左右。为此,实际仪器中采用了井下存储全部数据而只上传部分抽查数据的工作方式,使仪器的测井速度达到480 m/h[2−3]。声波测井仪器在井下高温恶劣环境中工作,存储器在高温下的可靠性是仪器存储功能稳定运行的关键。受工艺水平的限制,目前的存储器在测井高温(175◦C 甚至更高)条件下会出现比特位翻转、坏块、读写错误甚至彻底损坏等故障。因此,使用前筛选出高温下稳定的存储器并设计有效的温度补偿算法是非常必要的。
电子元件的失效曲线为浴盆型,即早期失效的概率远远大于中间使用阶段失效的概率。基于这一规律,为了提高测井仪器高温下的可靠性,通过一定时间的高温老化实验进行元器件的筛选是常用的途径[4]。设计一种简易的存储器高温老化检测系统有助于高效地进行存储器的筛选,同时可以评估温度补偿算法的效果。存储器检测系统的关键在于设计它的访问接口和测试策略以保证检测的有效性和简易性,研究者们在这方面做了许多工作。微软公司的FAT32 文件系统提供了一种对存储设备进行访问的机制[5];三星公司提供了一种针对存储器大数据块的错误校验纠错(Error checking and correction,ECC)算法,该算法具备定位及纠正单比特错误,并发现双比特错误的能力[6];肖红兵等[7]、邹骁等[8]、Hao 等[9]分别设计了随钻声波测井工作条件下的存储器控制器和数据存储管理策略。
本文在前人研究的基础上,设计了基于通用存储器测试座的硬件测试环境,编写了基于MSComm控件的上位机控制软件,开发了包含功能分区、ECC 算法以及模拟实际测井温度环境的存储器测试管理策略,测试了不同存储器在高温老化时出现故障的类型和严重程度,分析了ECC算法对存储器使用的温度补偿效果,高效地完成了存储器的筛选工作。
图1为基于DSP处理器的Flash 高温老化实验系统,其中虚线框中的DSP 和以插拔方式安装的Flash 测试座被设计在同一块高温电路板上。DSP通过普通IO 管脚模拟的时序访问Flash 存储器,通过USB-TTL 模块与上位机连接以接收测试命令并上传测试结果。Flash 在DSP 的控制下,接收数据总线(IO7-IO0)上的命令、地址或数据,然后按照相应的时序完成数据读写、块擦除及相应的组合操作。USB-TTL模块通过FT2232和MAX3232两个接口芯片,实现了USB与UART两种数据传输格式的转换,建立了DSP和上位机通信的桥梁。
图1 系统硬件设计的原理框图Fig.1 Hardware schematic diagram of system
图2为设计的Flash 测试座的实物图,包括夹持模块和转换模块两部分。夹持模块为定制的高温老化测试座,它可以对符合开放NAND 闪存接口协议(Open NAND flash interface,ONFI)、引脚数为48个、间距为0.5 mm、封装形式为薄型小尺寸封装(Thin small outline package,TSOP)的存储器进行测试。转换模块将夹持模块的48 个引脚线进行分类组合,形成了2 组双排插针接口(P1 和P2),该接口同时起着安装固定和信号传递的作用。不同容量的存储器在内部一般按照片、区(plane)、块、页几级地址结构进行组织,外部访问接口的差异在片选信号(Chip select,CE)上。为了满足不同容量存储器的测试要求,DSP 能够控制所有片选信号(CE1∼CE4)。该设计不仅避免了焊接测试法对芯片的伤害,而且使测试更加方便和高效。
图2 Flash 存储器测试座的实物图Fig.2 Photograph of testing model for Flash memory
本文在上位机中设计了基于MSComm 控件的控制软件,在DSP控制器中开发了存储器的测试管理策略。二者配合实现了存储器的实时交互测试。
图3是在VS2010 环境中开发的上位机控制软件界面。MSComm 控件是Microsoft 公司提供的简化Windows 下串行通信编程的Active X 控件[10]。通过该控件,上位机与DSP 处理器之间以波特率115200、8 位数据、1 位停止位、无奇偶校验的方式进行串行通信。设计中,利用该控件的标准通信命令实现了数据的格式化接收和发送,其中上位机的接收使用事件驱动方式而发送采用主动方式。此外,软件中的数据存储功能可以实时保存全部测试数据以供后续的详细分析与处理。
图3 Flash 测试的上位机软件Fig.3 PC software for Flash testing
图4为自顶向下的存储器测试管理层次图,主要由坏块管理、读写管理、校验纠错管理、交互管理四个部分组成。下面详细介绍该策略的具体实现方法。
图4 存储器测试管理的层次图Fig.4 Hierarchical graphic of testing management for Flash
(1)坏块管理
存储器的坏块主要来源于两方面:初始出厂时的坏块和使用过程中产生的坏块。通过读取存储器中出厂时的坏块标记,可以建立初始坏块信息表。当擦除或者写入失败时,进行坏块的动态标记。设计中,使用数组分别记录坏块的标记和坏块的位置,并实时更新与显示坏块的个数和位置信息。
(2)读写管理
对存储器的读写访问实质上就是设计底层驱动。本文通过DSP 的普通IO 管脚构建片选(CE)、读写使能信号(WE、RD),地址和命令锁存信号(ALE、CLE)、状态线(R/B)和数据线(I/O)的逻辑控制组合,使它们满足读写操作的时序要求。
(3)校验纠错管理
ECC 算法能够评价存储器在高温环境下出现位翻转及其可校正的程度。本文改进了传统的ECC算法[6],使其适合声波测井的数据特点,同时对存储器的管理信息和波形数据均可以检验和纠错。算法以16 位的字为数据块的基本单元,采用可变ECC字节的方法,对任意2n(n≥0)个字的数据块进行校验,能够发现数据块中的双比特位错误并纠正单比特位错误。其中,2个字节的ECC码可以校验1字到8 字的数据块,而4 字节的ECC 码可以校验256字到2048 字的数据块。
本文以2 字数据的ECC 算法为例进行说明。表1为算法的极性分布表,将2 个字按照高低字节和位的顺序进行排列,可以构成4 行×8 列的数据位矩阵,其中W0_LB表示第0 字的低字节,bit7 表示字中的第7 位,CP0∼CP5 为列校验值,LP0∼LP3表示行校验值。CP0和LP0 由式(1)∼式(4)计算得到,其中Wi(j)表示第i字的第j位,Li(j)表示第i行字节的第j位,CP0_Temp(i)和LP0_Temp(i)为计算的中间值。
其他极性值的定义和计算方法类似,每个极性值是不同组合的16个数据位异或的结果,每一位数据与3 个列极性值和2 个行极性值唯一对应。比较存储时的ECC 校验值和读取到的ECC 校验值,即可实现数据块中单比特位错误的定位和校正。
(4)交互管理
设计中,DSP 的串行接口和USB-TTL 模块是高温测试板和上位机的硬件交互通道。通过设计功能分区、测试函数、状态显示、异常处理等内容,可以测试存储器在不同温度下出错和可恢复的程度,进而完成存储器的高温老化实验。
表2为10 个交互命令的测试功能、分区、操作内容和实时显示信息的对应关系。上位机控制软件以字符形式发送0∼9 即可选择这10 个命令,对Flash的三个测试区域进行操作。
表1 ECC 算法的极性生成表Table1 Polar table for the ECC algorithm
表2 交互管理的对应表Table2 Correspondence table of interactive management
为了模拟实际测井的数据存取环境,存储器的筛选通过不带电高温老化实验和带电完整测试两个步骤完成。不带电高温老化实验是指不给所有存储器上电,将它们放置于烤箱中加温至175◦C,持续2 h 后降温,测试加温前和降温后存储器的性能变化,初步判断存储器是否彻底损坏。
带电完整测试是指选择表2中的命令编码对存储器在以下三种情况下的性能进行测试:(1)室温下写入数据,加温到175◦C 并持续2 h,降温后读取;(2)175◦C 时写入数据,持续2 h 后降至室温读取;(3)任意温度下实时写入数据并读取。按照以下流程,可以对一个新的Flash 存储器进行完整的测试,实时显示的信息如表2所示。
(1)室温下正确获取ID。如果错误,说明存储器彻底损坏。
(2)室温下建立初始化坏块表。
(3)室温下测试。对表2中的3个分区进行读写测试,统计芯片在室温下的出错情况。
(4)加温测试。从室温到175◦C 的加温过程以及降温过程中,使用连续读写模式进行测试;175◦C稳定半小时后,对单温度点随机存取区写入数据,持续2 h 结束前读取数据。
(5)降至室温测试。分别使用命令2和命令4 读取相应测试区的数据并进行分析。
按照上述方法,对三星、镁光、青岛智腾等公司生产的多种Flash 存储器进行了检测,发现三星的存储器在高温下比较可靠。在此基础上,对28个三星存储器进行了测试,现象和初步结论如下:
(1)第一次不带电加温实验后,28 个存储器中有4 个彻底损坏,2 个有新的坏块产生。第二次不带电加温实验后,没有彻底损坏的存储器出现。因此,不带电高温老化实验可以有效地剔除严重不满足要求的存储器。
(2)在剩余的24 个存储器中随机挑选5 个,进行了完整的带电加温测试,统计的读写操作开始出错温度、带ECC 处理和不带ECC 处理两种方式下读取数据的错误数、错误类型以及错误位置如表3所示,其中CE0和CE1为每个存储器中两个片结构的片选标志。部分存储器在加温到150◦C 后,就开始出现页内单比特位翻转错误,且出错的块、页、列地址固定,未出现单页内多比特位翻转和多处错误的情况。由于ECC 算法可以校正页内单比特位翻转的错误,所有存储器在175◦C的高温读写实验中,带ECC 处理的数据读取错误数均为0。因此,通过ECC 算法进行温度补偿后,该款存储器可以在测井要求的175◦C高温环境中工作。
表3 存储器读写错误统计表Table3 Error statistics of memory reading and writing
声波测井仪器在井下高温恶劣环境中工作,存储器在高温下的可靠性是仪器存储功能稳定运行的关键。筛选出高温下稳定的存储器并设计有效的温度补偿算法有助于提高存储器的可靠性。
本文设计了基于老化测试座和MSComm 控件的存储模块高温老化检测系统,使用ECC算法进行数据的校验纠错以提高存储器的使用温度。实验结果表明,存储器在测井高温条件下会出现比特位翻转、擦除失败甚至彻底损坏等故障,高温老化实验可以筛选出满足要求的存储器;三星的该款存储器在测井高温下的比特位翻转以页内单比特位翻转为主,ECC算法能够起到很好的温度补偿作用。
本设计不仅可以对符合开放NAND 闪存接口协议的同类存储器进行快速的高温老化与筛选实验,而且对井下存储系统的设计有着重要的参考意义。