式中:Cij表示第i行,第j列的存储单元;R表示读操作;W表示写操作;表示全部C的集合;∑表示,集内的总和;逗号“,”是公式内各有序操作之间的分隔符;0或1表示背景数据和操作数据。根据公式可以算出测试的复杂度为5N。简单说就是按照一定的规则向存储器写入和读出数据。针对不同的故障模型,在测试中添加不同的数据背景可以实现相应的故障覆盖。通常,一种算法不能覆盖所有的故障类型,所以测试时要用两种或两种以上的算法。
2.3 March算法在检测系统中的应用
一般的March算法都是以位进行操作的,而被测对象是18位的数据通道,存储方式为字节存储,因此应该对March算法进行扩展。测试时不仅要考虑到字间故障,而且也应该考虑一个字内多个位之间的耦合故障。面对这种情况就应该增加March算法的测试数据。对于N位的存储器,共有log2N+1种测试数据,文献给出了数据背景的计算公式。被测对象有18位存储器,通过计算有5组测试数据:
3 系统的软件设计
3.1 软件总体方案
该系统软件部分基于虚拟仪器技术进行开发。选择LabVIEW作为测试程序开发工具,Access作为数据库工具。整个软件由主控程序、人机界面、测试模块、诊断模块、数据库模块组成。主控程序负责各个模块之间的调用和协调;人机界面实现用户与测试系统的交互;测试模块完成数字信号的输出和采集;数据库模块主要用于实现整个系统数据的管理。
3.2 主程序
主程序依托LabVIEW软件,采用模块化的设计思想,主要包括程序初始、测试数据、读/写数据、取消设置、和错误判断五个部分。程序初始模块,用于进行面板参数设置和板卡设置;测试数据模块。用于:通过对数据库数据的查询,提取地址和数据等信息;通过对读/写信息的判断,选择数据信息输出的读入。如果测试时出现异常现象,则由程序输出自定义错误,通过自定义错误传递故障信息,同时跳出读/写循环;取消设置,用来恢复测试时改变的各个参数;错误判断模块,用于判断错误类型,通过判断自定义错误携带的信息判断故障类型,并反馈给人机界面。图2是主程序的程序框图。
3.3 测试程序
对存储器测试时采用March算法。March算法的特点是向存储器顺序地写入和读出数据,通过分析数据判断存储器的故障。因此在测试程序的编制过程中,数字信号的输入/输出较为关键。图3是读/写操作的程序框图。根据适配器的实际方案.数据的输入/输出在设计时也有一定的要求。向存储器写数据时分为三个步骤:向锁存器写地址,向锁存器写数据,锁存器和状态输出。读取存储器的数据分为4个步骤:向锁存器写地址,锁存器和状态输出,检测数据输出有效信号,读锁存器数据。实际应用时,可以根据不同的芯片,设置不同的延迟时间,以满足读/写周期的要求。