SCI、SSCI、EI、SCOPUS指导服务
论文翻译润色 论文预审评估 质量分析报告 期刊匹配推荐

与学术顾问沟通

高安全电子设备RAM测试算法

分类:应用电子技术论文发表 时间:2020-12-18 10:33 关注:(1)

  为了满足航空高安全电子设备领域的高可靠性和高安全性,解决内存故障给系统带来的不稳定性,针对内存的故障类型和典型的内存测试场景,设计出一种按数据总线、地址总线、存储单元划分功能电路,以总线宽度(字或双字)为测试基准,结合字内组合故障测试码的RAM测试算法。算法通过设置测试步进量调整存储单元测试地址的跨越幅度,满足不同测试场景对测试时间的需求。通过在一些型号项目的上电检测、内存故障定位等应用场景中的验证,算法的时间性能、错误检测率和可配置性等均能满足要求。

高安全电子设备RAM测试算法

  关键词:电子设备;可靠性;RAM测试;March算法

  随着军用电子技术的发展,高安全的电子设备已经成为航空武器装备自动化、智能化、信息化的重要组成部分,对于该系统的可靠性和安全性的研究十分有必要。内存(RAM)作为操作系统和上层应用软件运行的基础,它能否正常工作直接关系到整个系统数据存取的正确性和稳定性。内存故障引发的上层软件故障表现形式多样,隐藏较深,内存跳变还会引起一些不能稳定复现的故障,给系统排故定位带来了极大的难度。因此为了提高电子设备系统的安全性和可靠性,有必要设计一种全面、灵活可配置的内存测试算法,满足在系统测试、排故、上电检测等不同场景中对测试时间、故障覆盖率的要求。

  1RAM的故障分类

  按照故障发生的原因,RAM的故障类型可以分为以下4类[1-2]:1)固定故障:故障存储单元为固定值(0或1),不能发生变化。2)翻转故障:故障存储单元只能发生从0到1或者从1到0的单向变化,不能反向翻转。3)地址译码故障:不能按正确地址访问存储单元。4)耦合故障:故障单元相互影响发生的故障,且故障可能是不同的表现形式。包括某个存储单元跳变引起其他存储单元值翻转、某个存储单元跳变迫使其他存储单元变为固定值、组合存储单元读写操作导致组合存储单元逻辑值跳变、某个存储单元写操作引起其他存储单元进入不定状态、多个存储单元一个发生故障引起某些存储单元发生变化。

  2March算法

  从表面来看,RAM测试非常简单,只要对每个存储单元检测一次就可以了。但事实上,由于耦合故障会导致RAM内部任何存储单元的复杂变化,使得全面测试的工作量成为一个天文数字,这个时间复杂度在实际应用中几乎是不可接受的。随着RAM检测技术的发展,逐渐发展了一批标准化的测试方法,目前最常用的是March方法,和以此为基础产生的各种改进算法。图1所示为目前比较流行的几种March改进算法[3-4],它针对4种故障模型进行设计,对存储器单元按照地址升序或者降序逐个单元向其中写入测试向量,同时将相应向量读出,检查实际值与预定值是否一致,不一致则为故障。该方法在故障覆盖率、检测率、隔离率等性能指标上都有很大改进,但上述方法没有准确地划分故障的功能电路,且是以存储单元比特位为测试基准,效率不高,很难满足系统上电时对内存检测的要求。

  3RAM测试算法

  本文以MarchC-算法为基础,以总线宽度(字或双字)为测试基准,弥补MarchC-算法时间性能的缺陷。对于无法对字内故障,即字内的各个位之间发生的耦合故障或者其他类型故障进行检测,提出变换测试码的方法。根据存储器的物理结构,字内组合故障发生概率最大的是相邻两位之间,而相邻两位之间的关系只可能为00,01,10,11,因此只需将测试码选择为0101…01,1010…10,就可以检测出字内的组合故障[5]。本算法对内存按照数据总线(以32位为例)、地址总线(以32位为例)、存储单元划分功能电路,首先检测数据总线的正确性,作为后续测试的基础,然后依次检测地址总线、存储单元。为了保证测试数据是从内存中读取的,测试过程中一定要保持Cache的关闭。

  3.1数据总线测试

  数据总线测试的算法步骤如下:Step1:走0测试,测试电路的下冲能力:数据总线的初始值为全1,“0”沿着数据总线从最低位向最高位滑动,共滑动32次,对应硬件的32位数据总线。程序实现为向内存范围内的某固定地址依次写入0xFFFFFFFE、0xFFFFFFD、……、0x7FFFFFFF后读出判断,若与写入的测试码不相等,则表示当前0所在位置的数据线在从高电平跳转为低电平时有异常或错误。Step2:走1测试,测试电路上冲能力:与走0法类似,“1”沿着数据总线从最低位向最高位滑动。此步骤可检测出数据线在从低电平跳转为高电平时的异常或错误。Step3:扇出电流测试,测试电路的负载能力:数据总线由全0变为全1,然后再读出判断。Step4:稳定性测试:数据总线在全1和全0间来回变换,循环400次后再读出判断。该步骤可以检测出数据总线在大扇出电流、强干扰、上冲、下冲频繁发生的恶劣情况下发生的异常或错误。

  3.2地址总线测试

  假设数据总线已经通过测试是正常的,在此基础上对地址总线进行测试。由于RAM的物理存储大小限制,不可能访问到地址总线可以表示的所有的地址范围,因此需根据系统配置中内存地址的实际分配情况进行测试。设定内存分配的首地址为0x00800000,内存大小为0x08000000,测试算法步骤如下:Step1:走1测试,测试电路上冲能力。从内存首地址开始,对地址总线从最低位向最高位滑动1,直到该地址超过了内存尾地址(0x00800000+0x08000000-1),并向这些地址依次写入从0开始递增的测试码,布码结束后再依次读出当前值与测试码比较。Step2:走0测试,测试电路下冲能力。与走1法类似,从内存尾地址开始,对地址总线从低位向高位进行“0”滑动,直到该地址小于内存首地址,并向这些地址依次写入从0开始递增的测试码,布码结束后再依次读出当前值与测试码比较。Step3:扇出电流测试,测试电路的负载能力。由于内存存储大小的范围限制,无法测试地址总线由全0变为全1的情况。本文采用一种近似算法,从内存二进制地址范围中找出0位最多的地址“Addr0”和1位最多的地址“Addr1”,将测试码0x01010101u和0x5A5A5A5Au分别赋值给Addr0和Addr1,赋值后读出判断是否与写入的测试码一致。该算法可以在最大程度上测试RAM地址总线0~1变换时的负载能力。Step4:粘连测试:选择内存中一片连续的存储区域,依次写入测试码,布码结束后再读出,判断与测试码是否一致。其中选择存储区域的大小可以根据测试场景的时间要求决定。Step5:稳定性测试:将测试码0x01010101u和0x5A5A5A5Au分别赋值给地址Addr0和Addr1,循环400次后再读出判断是否与写入的测试码一致。该步骤可以检测出地址总线在大扇出电流、强干扰、上冲、下冲频繁发生的恶劣情况下发生的异常或错误。

  3.3存储单元测试

  存储单元的测试算法流程如图2所示.以RAM的起始地址和大小作为测试的输入,选取不同的测试码对指定的RAM区域的数据存储能力进行测试。本文分别选取全1、全0、0x5A5A5A5A作为测试码,将图2所示的算法循环执行3次。为了满足不同测试场景对测试时间的需求,本文提出设置测试步进量调整存储单元测试地址的跨越幅度,实现对存储单元测试覆盖率的灵活设定。该测试算法可以检测出存储单元的两种异常,一种是不能在存储单元写入正确测试码的“写异常”;另一种是两次读取同一存储单元但数据值不一致,且不等于测试码的“读异常”,并且记录发生错误的存储单元地址。

  4结束语

  本算法已经在若干型号机载系统中得到实际验证,测试场景包括上电检测、内存故障定位等。在应用过程中,该算法的时间性能、错误检测率和可配置性等均能满足测试要求。随着航空电子技术的的发展,内存测试的确定性还需要进一步提升,因此还需要对测试输入引发的测试时间、测试覆盖率做进一步的量化,作为后续的研究内容。

  参考文献:

  [1]刘洋,孙允明.PowerPC8641处理器模块的自检测设计[J].航空计算技术,2015,45(3):119-126.

  [2]杜永良,高亚奎.机载计算机RAM故障诊断技术[J].测控技术,2015,34(12):66-69.

  [3]刘振田,李维波,林城美,等.一种改进的随机存储器自检测March算法[J].电子与封装,2015,15(5):14-20.

  [4]肖爱斌,王斐尧,王文尧,等.宇航用静态随机存储器验证方法研究与应用[J].微计算机信息,2007,23(10):107-109.

  [5]蒋登峰,周娟.随机存取存储器故障分析及测试方案实现[J].中国计量学院学报,2010,21(3):257-262.

  作者:杨晓宁 黄保垒 卫一芃

期刊目录网是一家专业从事国内国外期刊学术论文发表指导,著作出版,发明专利的权威平台,提供文章翻译、文章润色、文章预审、期刊推荐、发表支持、书号申请、出书指导、专利申请等评职称相关学术成果服务。是您评职称学术成果指导首选权威平台。

Copyright © 2013-2022 www.qikanmulu.com,All Rights Reserved