首页> 中国专利> 一种基于SRAM型FPGA的RAM数据可靠性加固装置及方法

一种基于SRAM型FPGA的RAM数据可靠性加固装置及方法

摘要

一种基于SRAM型FPGA的RAM数据可靠性加固装置及方法,涉及一种基于SRAM型FPGA的片内或片外RAM存储器数据加固装置和方法。为了解决现有的存储器加固方法存在的抗辐射工艺加固费用高、存储器三模冗余硬件开销大、SRAM型FPGA设计的EDAC电路自身可靠性差等问题。本发明采用Hsiao码作为纠错码实现EDAC电路的编解码操作,能实现数据的纠一检二功能,采用缓存方式实现错误数据纠正后的回写,将处理器或外设访问双口RAM的写地址和写数据暂存于地址缓存和数据缓存中。本发明适用于SRAM型FPGA的RAM数据可靠性加固。

著录项

  • 公开/公告号CN106531224A

    专利类型发明专利

  • 公开/公告日2017-03-22

    原文格式PDF

  • 申请/专利权人 哈尔滨工业大学;

    申请/专利号CN201610939803.2

  • 申请日2016-10-25

  • 分类号G11C29/42;

  • 代理机构哈尔滨市松花江专利商标事务所;

  • 代理人岳泉清

  • 地址 150001 黑龙江省哈尔滨市南岗区西大直街92号

  • 入库时间 2023-06-19 01:51:07

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-16

    授权

    授权

  • 2017-04-19

    实质审查的生效 IPC(主分类):G11C29/42 申请日:20161025

    实质审查的生效

  • 2017-03-22

    公开

    公开

说明书

技术领域

本发明涉及一种基于SRAM型FPGA的RAM数据可靠性加固装置及方法。

背景技术

随着卫星技术与应用的不断发展,人们在要求降低卫星成本、减小风险的同时,迫切需要缩短卫星的开发研制周期,小卫星技术因此应运而生。

SRAM型FPGA由于集成度高,灵活性好,可以反复烧写,开发成本低,高密度等特性,已广泛应用在航空航天领域,但是SRAM型FPGA是易失性存储,很容易受到单粒子翻转的影响。单粒子翻转可能会造成存储器数据状态的变化,从而使星载计算机系统的指令或是数据出现错误,严重时可能导致整个星载计算机系统的崩溃。

在星载计算机系统的设计中,不仅要满足基本的功能需求,更要考虑航天品质的高可靠性要求。目前针对单粒子翻转效应进行器件加固的方法可以归为两类,分别为错误避免和错误容忍。前者是从制作工艺的角度对器件进行加固,以防止单粒子翻转引发的的错误;后者是从电路设计方面对器件进行加固,这种技术不能阻止错误的发生,但是能在出错后保证系统的正常运行,如EDAC电路(Error Detection And Correction即错误检测与纠正电路)、三模冗余等。

上述器件加固方法中,抗辐射工艺加固的方法费用高,且通用性差;存储器的三模冗余方法会增加硬件开销,不适用于对体积、质量与功耗等要求较高的场合;EDAC虽能通过编解码对数据进行保护,但是其自身可能存在可靠性问题,另外,错误数据纠正后的回写操作会降低存储器的访问速度。

发明内容

本发明是为了解决现有的存储器加固方法存在的抗辐射工艺加固的方法费用高,且通用性差;存储器的三模冗余方法会增加硬件开销,不适用于对体积、质量与功耗等要求较高的场合;EDAC虽能通过编解码对数据进行保护,但是存在可靠性差问题,且在错误数据纠正后的回写操作会降低存储器的访问速度的问题,提出了一种基于SRAM型FPGA的片内或片外RAM数据可靠性加固装置及方法。

本发明所述的一种基于SRAM型FPGA的RAM数据可靠性加固装置,该装置包括多路表决器一2、EDAC电路一4、EDAC电路二3、EDAC电路三5和多路表决器二6;

处理器或外部设备1的地址码信号输出端和数据信号输出端均同时与EDAC电路一4的地址码信号输入端和数据信号输入端、EDAC电路二3的地址码信号输入端和数据信号输入端和EDAC电路三5的地址码信号输入端和数据信号输入端相连;

EDAC电路一4的地址码、读写控制与数据信号输出端、EDAC电路二3的地址码、读写控制与数据信号输出端和EDAC电路三5的地址码、读写控制与数据信号输出端分别与多路表决器二6的多路信号输入端连接,多路表决器二6的表决后信号输出端连接RAM7的信号输入端;

RAM7的数据信号输出端同时连接EDAC电路一4的解码信号输入端、EDAC电路二3的解码信号输入端和EDAC电路三5的解码信号输入端;

EDAC电路一4的纠错后数据和错误标志位信号输出端、EDAC电路二3的纠错后数据和错误标志位信号输出端和EDAC电路三5的纠错后数据和错误标志位信号输出端分别与多路表决器一2的多路信号输入端连接。

进一步地:EDAC电路一4、EDAC电路二3和EDAC电路三5的结构相同;EDAC电路一4包括地址缓存器41、读写控制电路42、编码器43、数据缓存器44、数据选择器45、错误解码模块46、错误纠正模块47、伴随式生成模块48和错误标志模块49;

地址缓存器41用于接收处理器或外部设备1发送的地址码信号;所述地址缓存器41的信号输入端为EDAC电路一4的地址码信号输入端;向多路表决器二6发送地址码信号;

编码器43用于接收处理器或外部设备1发送的数据信号,向数据缓存器44发送编码后的数据信号,编码器43的信号输入端为EDAC电路一4的数据信号输入端;所述编码后的数据信号为汉明码数据;

读写控制电路42用于接收地址缓存器41发送的状态信号,向数据缓存器44和地址缓存器41发送缓存读或写使能信号,同时向多路表决器二6发送读或写控制信号;

数据缓存器44用于接收读写控制电路42发送的缓存读或写使能信号,根据接收的缓存读或写使能信号接收编码器43发送的编码后数据信号,向数据选择器45发送编码后数据信号;

数据选择器45用于接收读写控制电路42发送的多路选择器选择控制端信号、数据缓存器44发送的编码后数据信号和错误纠正模块47发送的纠正后数据编码信号,向多路表决器二6发送正确的数据编码信号;

错误解码模块46用于接收伴随式生成模块48发送的校验子信号,根据校验子的值与误码位置的对应关系,判断数据中出现错误码的个数和位置,获得错误图样信号,向错误纠正模块47发送错误图样信号;

错误纠正模块47用于读取RAM7的编码信号,接收错误解码模块46发送的错误图样信号,对错误图样、从RAM中读入的数据码和校验码进行异或处理实现错误纠正,将纠正后的编码信号发送至数据选择器45和多路表决器一2;

伴随式生成模块48用于读取RAM7的数据编码信号,利用监督矩阵对读取的数据编码信号与校验码进行异或处理,获得校验子信号,向错误标志模块49发送校验子信号;

错误标志模块49用于接收伴随式生成模块48发送的校验子信号,根据校验子判断数据编码有无错误,输出错误标志位信号,若数据编码无错误,则输出的一位错错误标志位SEF和两位错错误标志位DEF均为0,若数据编码有一位错误,则输出的一位错误标志位SEF为1,两位错错误标志位DEF为0;若数据编码有两位错误,则输出的一位错误标志位SEF为0,两位错错误标志位DEF为1。

一种基于SRAM型FPGA的RAM数据可靠性加固方法,该方法的具体步骤为:

将处理器或外部设备1的数据写入RAM(7)的过程;

步骤一、将处理器或外部设备1发送的地址码信号和数据信号同时发送至EDAC电路一4、EDAC电路二3和EDAC电路三5,对地址码信号和数据信号进行三模备份;

步骤二、EDAC电路一4、EDAC电路二3和EDAC电路三5分别利用三个编码器对处理器或外部设备1发送的数据信号进行编码,获得三路数据编码,所述编码为改进汉明码;

步骤三、利用多路表决器二6对通过EDAC电路一4、EDAC电路二3和EDAC电路三5获得三路数据编码进行三选二表决,获得正确的编码,并将正确的编码写入RAM7;编码包括数据码与校验码;

处理器或外部设备1从RAM(7)中读取数据的过程;

步骤四、处理器或外部设备1将需要访问的地址信号同时发送至EDAC电路一4、EDAC电路二3和EDAC电路三5,EDAC电路一4、EDAC电路二3和EDAC电路三5分别采用三个地址缓存器41将需要访问的地址数据发送至多路表决器二6,经多路表决器二6对需要访问的地址数据进行三选二表决,将表决获得的地址码数据作为所需要访问的地址,对RAM7进行访问;

步骤五、由于EDAC电路一4、EDAC电路二3和EDAC电路三5的结构相同,因此数据处理过程相同,EDAC电路一4通过伴随式生成模块48利用从RAM7读取的编码生成校验子,错误解码模块46利用校验子的值与误码位置的对应关系,生成错误图样信号;错误标志模块49根据校验子判断数据编码有无错误,输出错误标志位信号,若数据编码无错误,则输出的一位错错误标志位SEF和两位错错误标志位DEF均为0,若数据编码有一位错误,则输出的一位错误标志位SEF为1,两位错错误标志位DEF为0;若数据编码有两位错误,则输出的一位错误标志位SEF为0,两位错错误标志位DEF为1;

步骤六、利用错误图样信号与从RAM7读取的编码对错误图样、从RAM中读入的数据码和校验码进行异或处理实现错误纠正,将纠正后的编码信号发送至数据选择器45和多路表决器一2,数据选择器45对纠正后的编码信号进行回写;

步骤七、多路表决器一2对接收的EDAC电路一4、EDAC电路二3和EDAC电路三5发送的纠正后的编码信号进行三选二表决,将表决后的编码发送至处理器或外部设备1。

进一步说明:EDAC电路一4、EDAC电路二3和EDAC电路三5的数据选择器45对纠正后的编码信号进行回写的过程均为:

EDAC电路一4的数据选择器45、EDAC电路二3的数据选择器45和EDAC电路三5的数据选择器45均将错误纠正模块47发送的纠正后的编码信号发送至多路表决器二6进行三选二表决,获得正确的编码信号,并将正确的编码信号写入RAM7;实现回写。

本发明的有益效果在于:

(1)采用Hsiao码作为纠错码实现EDAC电路的编解码操作,能实现数据的纠一检二功能。Hsiao码具有编码效率高、纠错成本低、纠错时间短的优点,与相同纠检错能力的编码方式相比,Hsiao码占用资源较少,且编码和解码过程延时较短。

(2)采用缓存方式实现错误数据纠正后的回写,将处理器或外设访问双口RAM的写地址和写数据暂存于地址缓存和数据缓存中。该方法解决了处理器对RAM写操作与EDAC回写操作的冲突,即使连续读取数据且发生一位错误也不会影响写操作的执行,提高处理器向RAM写入数据的频率。

(3)SRAM型FPGA不仅BRAM受单粒子翻转的影响,配置区也可能因单粒子翻转而出错。利用SRAM型FPGA的逻辑资源对EDAC模块采用三模冗余设计,三选二输出正确结果,实现对配置区电路的加固,防止EDAC电路受单粒子翻转影响导致编码或解码等过程出错,提高装置自身的可靠性。

附图说明

图1为发明所述一种基于SRAM型FPGA的RAM数据可靠性加固装置的原理框图;

图2为EDAC电路一的原理框图;图中,读写控制电路的WR端为处理器写使能信号端,RD端为处理器读使能信号端,wr_en端为缓存写使能信号端,rd_en端为缓存读使能信号端,ram_we端为RAM写信号端,ram_oe端为RAM读信号端,full为缓存满状态标志位,empty为缓存空状态标志位,SEF为一位错错误标志(错误标志模块生成),WD为数据选择器选择控制端信号。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

具体实施方式一、结合图1说明本实施方式,本实施方式所述的一种基于SRAM型FPGA的RAM数据可靠性加固装置,该装置包括多路表决器一2、EDAC电路一4、EDAC电路二3、EDAC电路三5和多路表决器二6;

处理器或外部设备1的地址码信号输出端和数据信号输出端均同时与EDAC电路一4的地址码信号输入端和数据信号输入端、EDAC电路二3的地址码信号输入端和数据信号输入端和EDAC电路三5的地址码信号输入端和数据信号输入端相连;

EDAC电路一4的地址码、读写控制与数据信号输出端、EDAC电路二3的地址码、读写控制与数据信号输出端和EDAC电路三5的地址码、读写控制与数据信号输出端分别与多路表决器二6的多路信号输入端连接,多路表决器二6的表决后信号输出端连接RAM7的信号输入端;

RAM7的数据信号输出端同时连接EDAC电路一4的解码信号输入端、EDAC电路二3的解码信号输入端和EDAC电路三5的解码信号输入端;

EDAC电路一4的纠错后数据和错误标志位信号输出端、EDAC电路二3的纠错后数据和错误标志位信号输出端和EDAC电路三5的纠错后数据和错误标志位信号输出端分别与多路表决器一2的多路信号输入端连接。

具体实施方式二、本实施方式是对具体实施方式一所述的一种基于SRAM型FPGA的RAM数据可靠性加固装置的进一步说明,EDAC电路一4、EDAC电路二3和EDAC电路三5的结构相同;EDAC电路一4包括地址缓存器41、读写控制电路42、编码器43、数据缓存器44、数据选择器45、错误解码模块46、错误纠正模块47、伴随式生成模块48和错误标志模块49;

地址缓存器41用于接收处理器或外部设备1发送的地址码信号;所述地址缓存器41的信号输入端为EDAC电路一4的地址码信号输入端;向多路表决器二6发送地址码信号;

编码器43用于接收处理器或外部设备1发送的数据信号,向数据缓存器44发送编码后的数据信号,编码器43的信号输入端为EDAC电路一4的数据信号输入端;所述编码后的数据信号为汉明码数据;

读写控制电路42用于接收地址缓存器41发送的状态信号,向数据缓存器44和地址缓存器41发送缓存读或写使能信号,同时向多路表决器二6发送读或写控制信号;

数据缓存器44用于接收读写控制电路42发送的缓存读或写使能信号,根据接收的缓存读或写使能信号接收编码器43发送的编码后数据信号,向数据选择器45发送编码后数据信号;

数据选择器45用于接收读写控制电路42发送的多路选择器选择控制端信号、数据缓存器44发送的编码后数据信号和错误纠正模块47发送的纠正后数据编码信号,向多路表决器二发送正确的数据编码信号;WD=0,选择0通道,发送的是编码器编码后数据;WD=1,选择1通道,发送的是纠正后的编码数据;

错误解码模块46用于接收伴随式生成模块48发送的校验子信号,根据校验子的值与误码位置的对应关系,判断数据中出现错误码的个数和位置,获得错误图样信号,向错误纠正模块47发送错误图样信号;

错误纠正模块47用于读取RAM7的编码信号,接收错误解码模块46发送的错误图样信号,对错误图样、从RAM中读入的数据码和校验码进行异或处理实现错误纠正,将纠正后的编码信号发送至数据选择器45和多路表决器一2;

伴随式生成模块48用于读取RAM7的数据编码信号,利用监督矩阵对读取的数据编码信号与校验码进行异或处理,获得校验子信号,向错误标志模块49发送;

错误标志模块49用于接收伴随式生成模块48发送的校验子信号,根据校验子判断数据编码有无错误,输出错误标志位信号,若数据编码无错误,则输出的一位错错误标志位SEF和两位错错误标志位DEF均为0,若数据编码有一位错误,则输出的一位错误标志位SEF为1,两位错错误标志位DEF为0;若数据编码有两位错误,则输出的一位错误标志位SEF为0,两位错错误标志位DEF为1。

EDAC电路解码器模块的主要功能是对从RAM中读取的编码数据进行纠检错,向处理器或外设传送正确数据并生成错误状态,主要由伴随式生成、错误解码、错误纠正、错误标志四个部分组成,其关键在于通过伴随式找到发生翻转位的位置,确定后对该位取反,即可得到正确的数据。当处理器或外设要读取RAM中的数据时,ram_oe=1,RAM中的编码数据经解码器模块得到原始数据。

a)伴随式生成

根据监督矩阵H,对从RAM中读入的信息码与校验码进行异或处理,得到校验子S。

b)错误解码

根据校验子S的值,按照校验子与误码位置的对应关系,判断出数据中出现错误的个数和位置,得到错误图样E。

c)错误纠正

错误图样E与从RAM中读入的信息码与校验码进行异或处理,实现错误纠正功能。

d)错误标志

通过校验子S进行判断,若一位错误标志SEF=0,两位错误标志DEF=0,读入的数据无错;若SEF=1,DEF=0,数据有一位错误,电路进行纠错处理;若无错,SEF=0,DEF=1,数据有两位错误,电路请求中断。

回写:数据回写功能是指当从RAM中读取的数据有一位错误时,EDAC电路将解码器模块纠正后的正确数据重新写入RAM中。

利用缓存实现错误数据纠正后的回写,是将处理器或外设访问RAM的地址和写入数据缓存在地址缓存和数据缓存中实现的。

当RAM中读取的数据有一位错误时,SEF=1,此时令wr_en=1,rd_en=0,地址缓存和数据缓存只进不出,多路选择器MUX选择“1”通路,ram_we=1,纠正后的数据重新写入RAM。若此时处理器仍然要对RAM执行写操作,则要写入的数据和地址暂存在地址缓存和数据缓存中,直至回写完成再使能rd_en,通过empty信号判断地址缓存和数据缓存是否为空,若不为空,证明在回写过程中处理器已执行写操作,因此根据地址缓存中的地址依次读取数据缓存中的数据写入RAM中。若在数据回写过程中缓存满信号full=1,则处理器进行异常处理。

本发明解决了处理器对RAM写操作与EDAC回写操作的冲突,也能防止更新后的数据重新纠正,提高处理器向RAM写入数据的频率。

具体实施方式三、本实施方式所述的是一种基于SRAM型FPGA的RAM数据可靠性加固方法,该方法的具体步骤为:

将处理器或外部设备1的数据写入RAM7的过程;

步骤一、将处理器或外部设备1发送的地址码信号和数据信号同时发送至EDAC电路一4、EDAC电路二3和EDAC电路三5,对地址码信号和数据信号进行三模备份;

步骤二、EDAC电路一4、EDAC电路二3和EDAC电路三5分别利用三个编码器对处理器或外部设备1发送的数据信号进行编码,获得三路数据编码,所述编码为改进汉明码;

步骤三、利用多路表决器二6对通过EDAC电路一4、EDAC电路二3和EDAC电路三5获得三路数据编码进行三选二表决,获得正确的编码,并将正确的编码写入RAM7;编码包括数据码与校验码;

处理器或外部设备1从RAM7中读取数据的过程;

步骤四、处理器或外部设备1将需要访问的地址信号同时发送至EDAC电路一4、EDAC电路二3和EDAC电路三5,EDAC电路一4、EDAC电路二3和EDAC电路三5分别采用三个地址缓存器41将需要访问的地址信号发送至多路表决器二6,经多路表决器二6对需要访问的地址数据进行三选二表决,将表决获得的地址码数据作为所需要访问的地址,对RAM7进行访问;

步骤五、由于EDAC电路一4、EDAC电路二3和EDAC电路三5的结构相同,因此数据处理过程相同,EDAC电路一4通过伴随式生成模块48利用从RAM7读取的编码生成校验子,错误解码模块46利用校验子的值与误码位置的对应关系,生成错误图样信号;错误标志模块49根据校验子判断数据编码有无错误,输出错误标志位信号,若数据编码无错误,则输出的一位错错误标志位SEF和两位错错误标志位DEF均为0,若数据编码有一位错误,则输出的一位错误标志位SEF为1,两位错错误标志位DEF为0;若数据编码有两位错误,则输出的一位错误标志位SEF为0,两位错错误标志位DEF为1;

步骤六、利用错误图样信号与从RAM7读取的编码对错误图样、从RAM中读入的数据码和校验子进行异或处理实现错误纠正,将纠正后的编码信号发送至数据选择器45和多路表决器一2,数据选择器45对纠正后的编码信号进行回写;

步骤七、多路表决器一2对接收的EDAC电路一4、EDAC电路二3和EDAC电路三5发送的纠正后的编码信号进行三选二表决,将表决后的编码发送至处理器或外部设备1。

改进汉明码(Hsiao码)的H矩阵应满足:

(1)每列含有奇数个1,且无相同列;

(2)总的1的个数少,所以校验位、伴随式生成表达式中的半加项数少,从而生成逻辑所需的半加器少,可以节约器材、降低成本和提高可靠性;

(3)每行中1的个数尽量相等或接近某个平均值,这种决定了生成逻辑及其级数的一致性,不仅译码速度快,同时线路匀称。

考察其伴随式:

(1)若S=0,则认为没有错误;

(2)若S≠0,且S含有奇数个,则认为产生了单位错;

(3)若S≠0,且S含有偶数个,则认为产生了两位错。

Hisao码在纠检错能力方面优于扩展汉明码,它的三位错误的误纠概率低于后者,而四位错误的检测概率高于后者,从性能上看性能更加优越;逻辑中所需半加器数量少,且线路均匀,可以降低成本,提高编译码速度,便于硬件实现。

具体实施方式四、本实施方式三所述的一种基于SRAM型FPGA的RAM数据可靠性加固方法的进一步说明,EDAC电路一4、EDAC电路二3和EDAC电路三5的数据选择器45对纠正后的编码信号进行回写的过程均为:

EDAC电路一4的数据选择器45、EDAC电路二3的数据选择器45和EDAC电路三5的数据选择器45均将错误纠正模块47发送的纠正后的编码信号发送至多路表决器二6进行三选二表决,获得正确的编码信号,并将正确的编码信号写入RAM7;实现回写。

本发明对EDAC电路的可靠性设计采用三模冗余结构,将EDAC电路三次备份,通过三选二多路表决器进行判断,三个模块输出结果均一致,或者有两个模块输出结果一致时,可以输出正确结果。由于三个模块是互相独立的,两个模块同时出现错误是极小概率事件,故可以大大提高器件的可靠性。

当处理器向RAM写入数据时,EDAC1、EDAC2和EDAC3中编码器的输出结果通过多路表决器1进行判决,向RAM输入正确数据;当处理器从RAM读取数据时,EDAC1、EDAC2和EDAC3中解码器的输出结果通过多路表决器2进行判决,向处理器输入正确数据。本发明中的RAM可以指代SRAM型FPGA片外的RAM,也可以是SRAM型FPGA片内的RAM。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号