0 导言
跟着航天技能的开展,空间使命日益复杂化、多样化,未来航天体系对处理器的功用要求越来越高。在一些航天设备如星载 ATP 等体系的电子模块规划中,依据 SRAM 的现场可编程门阵列(FPGA)得到了日益广泛的运用。空间环境中的电子体系规划,不只需满意高功用,并且其数据处理、传输和操控的准确性和牢靠性也有必要得到确保。关于机载、星载、空间兵器和其他空间运用电子体系,往往暴露在五花八门的电磁辐射环境中,如α粒子、宇宙射线、外太空强辐射等等恶劣环境,加之一些电子体系作业在地上的高电磁辐射环境中,这些辐射环境中充满了各种高能粒子,高能粒子碰击作业中的电子器材会引发辐射效应,如单粒子翻转(SEU)等,并导致器材产生毛病,由辐射效应引起的软过错是导致空间环境中电子体系失效的重要原因之一[1]。
在进步体系牢靠性与安全性方面,避错与容错技能是常用的两种要害技能。微电子抗辐射加固技能[2],经过对资料选取、工艺结构规划等方面进行加固规划,在物理层消除导致损害的各类寄生参数, 能有用进步电子器材的抗辐射才能。可是仅在物理层上对体系进行毛病防护不能满意恶劣环境中的体系牢靠性要求,还需求从电路规划方面临体系功用进行维护。运用过错校对码(ECC)技能[3],在数据包的后端添加额定的校验数据位,来完成读取 / 写入数据的准确性,能在必定程度上对存储器进行检错和纠错。容错规划技能,如选用冗余规划来“屏蔽”或“阻隔”毛病,如信息冗余[4]、硬件冗余[5]等,进而在必守时期内将毛病的影响掩盖起来,使产生毛病的电子体系在必守时期内仍能正常作业,但这种办法并未排除毛病,跟着毛病的累积和叠加,体系依然或许失效,所以赋予体系毛病自修正才能能有用削减毛病累积,进步体系的牢靠性。
本文从毛病容错和毛病自修正视点对体系进行芯片级的牢靠性规划,提出了一种依据 SRAM 型 FPGA 的实时容错自修正体系结构,并将该规划结构在 Xilinx Virtex-6 FPGA 进步行了规划验证。
1 依据动态部分重构的模块修正
FPGA 的装备可分为静态装备和动态装备,静态装备一般对整个 FPGA 模块进行重新装备,体系功用在装备进程时中止,并在装备完毕后改动体系功用。动态装备,又称为动态部分重构,能够在不搅扰 FPGA 内部其他模块作业的一起动态地对部分区域的逻辑功用进行修正。其间心思维是将 FPGA 内部的逻辑资源从物理布局上区分为静态区域和若干个动态区域。每个动态区域能够对应有多个装备文件,以完成不同的功用,将这些装备文件事前存放在片外存储器中。在体系运转的不一起刻,依据体系的实践需求加载不同的装备文件到同一个动态区域来完成相应的逻辑功用。在某一动态区域进行功用切换时,不影响静态区域和其他动态区域的逻辑功用,体系依然处于接连运转状况。
动态部分重构技能能对 FPGA 的部分资源完成分时复用,使芯片能够在不一起刻完成不同的功用,进步了芯片资源的运用率,已广泛运用于工业体系规划中,如文献[6]中结合动态部分重构技能对工业传感器数据收集体系进行规划,针对不同的传感器切换不同的功用。该技能还可运用于可重构核算[7]、可进化硬件[8-9]、容错规划[10-14]等方面。将动态部分重构技能和冗余技能结合,行将冗余规划中各冗余模块别离置于一动态区域中,在毛病产生时经过动态重构对毛病模块进行修正,能够防止毛病的累积和叠加,在容错的一起赋予体系毛病自修正才能。
2 粗粒度和细粒度的三模冗余自修正结构
2.1 粗粒度的三模冗余规划结构
典型的模块冗余技能——N 模冗余规划:将功用模块仿制为 N 份,N 个模块具有相同的输入,N 个模块的输出经过大都表决器表决输出。N 模冗余体系在作业进程中能一起忍受不超越对折的冗余模块产生毛病而不影响终究的体系输出。跟着冗余模块的数量添加,体系的容错才能进步,但一起体系的硬件资源开支和功耗增大,归纳考虑容错才能和资源开支,三模冗余(TMR)技能具有最高的功用体现。
FPGA 的体系一般能够分为多个功用模块,粗粒度的三模冗余规划结构以整个功用模块为单位进行冗余规划,如图 1 所示,行将整个功用模块作为一个冗余单位,将整个功用模块仿制三份,将每个功用单元模块 FU1~FU3 装备到独自的部分重构模块(PRM)中,使得每个冗余模块都能够独立被修正。表决器挑选大都的输入成果进行输出。在粗粒度的三模冗余规划结构中,只需两个冗余模块的输出成果正确,就能确保整个模块输出正常,当其间恣意模块产生毛病时,经过体系的毛病检测机制可进行毛病定位,阻隔毛病区域并进行自修正操作。
2.2 细粒度的三模冗余规划结构
选用粗粒度规划结构能有用进步体系的牢靠度,但其依然存在一些缺乏,一是当大都表决器呈现毛病时整个自修正结构本身不牢靠;二是因为模块粒度较大,一些不能导致模块功用失效的隐性毛病继续累积,简单导致多个模块一起毛病,使得防护结构失效。本文中细粒度的三模冗余规划结构能有用削减毛病累积,该规划结构将一功用模块拆分为若干个独立的时序元件和组合逻辑部分,本文将该规划结构运用图形化标明来阐明,将功用单元模块中的组合逻辑标明为 CG,时序元件标明为 SE,则运用有向图标明办法能够将图 2(a)电路标明为图 2(b)。
细粒度的三模冗余容错自修正结构树立在有向图标明办法根底之上,其间心思维是,将电路切割为逻辑电路和时序电路,在时序电路输出刺进大都表决器,然后再对原始电路进行三模冗余规划,使得此自修正结构具有三个表决器,因而加强了此结构的毛病容错才能,一起减轻了时序电路引起的过错累积,能够成功防止域穿插过错的呈现。图 2(a)标明的原始电路,运用有向图标明办法将原始电路切割开来如图 2(b)所示,运用 TMR 三模冗余技能将其容错化如图 2(c)所示。MV 标明大都表决器(Multiple Voter)在电路时序元件输出之后刺进,运用其三模冗余结构,增强了电路容错才能。当 D1 模块的组合、时序电路以及表决器呈现毛病时,D2 模块和 D3 模块经过大都表决器能够检测到此类毛病,并经中止唤醒处理器进行部分动态重构处理,使得 D1 部分重构区域得以自修正。
细粒度的三模冗余容错自修正结构一起降低了时序电路引起的过错累积的概率,能够成功防止域穿插过错的产生。当 D1 模块的 SE2 电路和 D3 模块的 CG4 电路一起呈现毛病的时分,因为在时序电路的输出端用表决器成功地将 SE2 毛病进行检测和阻隔,不会传递堆集影响下一级的 CG4 过错,因而能够成功防止域穿插过错的产生。
2.3 牢靠度比照
功用模块在 FPGA 内部的完成能够用逻辑资源来标明,如查找表(LUTs)、触发器(Flip-Flops)、块存储器(BRAM)等。而各逻辑资源的衔接和运用经过比特流文件装备来完成。比特流文件由若干个装备帧(frame)组成,装备帧又包含若干个标明装备信息的比特位。在辐射环境中,当 FPGA 中的电路模块产生单粒子翻转效应时,并不是模块恣意比特位产生翻转就会导致模块功用失效,该模块功用往往由一些要害比特位所决议。考虑该粗粒度的三模冗余规划结构的容错才能,评论马尔科夫模型下的三模冗余结构[15],假定功用模块在时刻 t 内功用正常的牢靠度跟着时刻的推移呈指数递减,其牢靠度能够标明为:
其间λm 标明功用模块 m 的毛病率,其由比特位在单位时刻内的翻转速率和模块对应的要害比特位数量所决议。关于一个三模冗余体系来说只有当两个或许两个以上的模块产生过错时体系防护功用才会失效,假定三模冗余体系表决逻辑功用正常,那么关于该粗粒度的三模冗余规划结构其牢靠度能够标明为:
将提出的细粒度的三模冗余结构和粗粒度的三模冗余结构的牢靠度进行比较,其牢靠度示意图如图 3 所示。细粒度的三模冗余结构容错牢靠度相关于粗粒度的牢靠度有明显的进步,但一起细粒度的三模冗余结构会引进额定表决器和毛病检测逻辑,导致额定资源开支的添加。细粒度的三模冗余结构更适用于对毛病率高的电路模块进行防护。
3 实时毛病自修正体系规划
3.1 实时毛病自修正体系全体规划结构
图 4 给出了一种依据 Xilinx FPGA 完成的毛病自修正体系全体结构规划计划。整个体系完成依据 MicroBlaze 软核的片上微处理器体系,首要区分为两个部分:静态区域和动态部分重构区域。静态区域首要包含:软核 MicroBlaze、串口操控器、Flash 操控器等,这部分区域包含了整个要害处理模块不适于动态重构的模块,首要担任运转低优先级程序和检测动态重构区域的正常运转。动态部分重构区域是整个电子体系自修正的根底,一切的自修正操作都在其他模块监测、操控下有序地进行,确保整个电子体系不间断正常的作业,其间各个冗余模块的规范装备文件存放于片外 Flash 中。当体系收到重构恳求时,由 Flash 操控器读取片外存储器中对应模块的比特流文件并经过内部装备拜访端口(ICAP)写入重构区域。动态部分重构区域结合上文提出的容错计划进行容错规划,一起 MicroBlaze 担任操控和监测每个动态重构单元的作业状况:比方当规划动态重构单元为三模冗余毛病容错模块时,当此模块内部毛病检测单元检测到产生毛病时,经过中止的办法将信息发送到 MicroBlaze 中,MicroBlaze 读取此模块的状况寄存器以判明毛病类型和区域,依据运用场合不同挑选不同的毛病自修正战略将此模块进行有序的自重构,完成毛病自修正的一起并不影响体系正常运转。
3.2 内嵌式毛病检测结构
选用一内嵌式毛病检测结构对冗余模块进行毛病检测,该计划将毛病检测单元嵌入到冗余模块中。图 5(a)所示为三模冗余容错自修正结构中以逻辑门描绘的毛病检测单元示意图,该毛病检测单元由大都表决器和异或非门构成,将大都表决器的输出和检测的冗余模块的输出接到异或非门的输入端,大都表决器的输出作为过错标志信号 FLAG。当检测的冗余模块的输出和表决器的输出相同,则异或门输出为逻辑 1,标明该检测的冗余模块无毛病产生,若异或门输出逻辑为 0,则标明检测的冗余模块产生毛病或毛病检测单元本身产生毛病。具有该毛病检测单元的三模冗余结构如图 5(b)所示。
功用模块在 FPGA 内部的完成能够用逻辑资源来标明,如查找表(LUTs)、触发器(Flip-Flops)、块存储器(BRAM)等。而各逻辑资源的衔接和运用经过比特流文件(Bitstream)装备来完成。比特流文件由若干个装备帧(frame)组成,功用模块巨细也可经过装备帧的数量来标明。
该检测单元从细粒度的视点对电路输出的每一位进行比较,也就是说关于一个输出信号为 N 位的功用模块来说,选用该毛病检测单元会对每一个冗余模块会产生 N 个毛病标志信号。但是关于一个冗余模块来说只需求一个标志信号来标明该模块是否产生毛病。对此提出了一种将标志信号进行交融的逻辑结构,该交融逻辑结构选用 FPGA 片内进位链逻辑来完成。如图 6 所示,以 4 位的输出信号为例,毛病检测单元对 TR1 模块的输出位进行检测,将毛病标志信号别离接入进位链的 C0~C3 端口。进位链 CIN 端口输入逻辑 1,当无毛病产生时进位链输出逻辑 1,当其间一位或许多位过错产生时,进位链中的二选一挑选器挑选毛病标志信号进行传递,进位链输出逻辑 0,标明 TR1 模块产生毛病。关于模块输出信号位数少于 4 位的状况,能够将进位链闲暇的输入端输入逻辑 1 即可。关于模块输出信号位数大于 4 位的状况,能够将前一进位链的标志输出 FLAG 接入后一进位链的 CIN 输入端,将进位链串行衔接。
4 试验规划与剖析
本节中将上文提出的毛病自修体系在 Xilinx XC6VLX240T-1FF1156 FPGA 进步行规划完成,试验中静态区域包含了一依据 MicroBlaze 核的片上微处理器体系,该微处理器体系首要担任与上位机进行交互、呼应重构恳求、操控片外存储器读取比特文件数据和操控内部装备拜访端口(ICAP)对重构区域进行重装备等使命。动态区域中将 ITC99 benchmark 电路中 8 个不同粒度的规范电路进行冗余规划,以剖析不同粒度模块的毛病自修正时刻。
4.1 FPGA 体系规划流程
试验中对体系进行规划完成选用的是依据 Xilinx ISE 开发东西的规划流程,规划流程如图 7 所示。在 ISE 顶层规划规划中对体系各模块进行区分,界说体系中的各静态模块和动态模块,并对动态模块进行冗余维护规划。片上微处理器体系在 Xilinx 的 XPS 规划东西中进行规划建立,并在 SDK 规划东西中对微处理器体系进行软件功用编译,PlanAhead 规划东西可经过图形界面(GUI)对 FPGA 进行前期剖析和布局规划功用,施加物理束缚,剖析布线和时序的成果。试验中各动态模块的区域区分在 PlanAhead 中进行规划。PlanAhead 中比特流文件生成完成后,需求进行软硬件协同处理,行将 XPS 生成的块存储器映射文件(*.bmm)、SDK 生成的可执行文件(*.elf)和 PlanAhead 生成的大局比特流文件合为一个新的比特流文件,凭借 Xilinx 指令行东西 ISE Design Suite Command Prompt,经过指令指令组成终究的比特流文件。
4.2 试验成果剖析
试验中各动态模块的区域区分如图 8 所示,动态区域内的逻辑资源能够满意各模块功用完成。各动态模块的资源开支如表 1 所示,由试验成果可知,模块粒度越小其冗余规划中表决器和毛病检测结构所占的资源份额则越大,即体系模块粒度区分越小、重构区域区分越多,则容错自修正规划所带来的额定资源开支越大。
各动态模块重构时刻花费表 2 所示。试验中所采纳的毛病注入办法相同采纳动态重构办法,即经过 FPGA 的内部装备拜访通道(ICAP)动态地对各模块进行过错装备来完成。试验中毛病检测计划选用上文所提出的内嵌式毛病检测结构,其毛病检测推迟与信号在进位链中的传达推迟相关,即和进位链的串联个数相关,而进位链中信号传达推迟为纳秒级,远小于模块重构时刻,能够为模块的自修正时刻近似于模块的重构时刻。由试验成果可看出模块重构时刻与模块占用资源数和模块重构区域巨细成正比,即模块占用资源数越多,其区分的最小重构区域则越大,模块重构时刻花费越大。而一起,功用模块区分越小,其进行冗余设计时所带来的额定资源开支份额则越大。故在体系规划时,需求归纳考虑资源分配状况和毛病修正时刻要求,合理地进行模块粒度区分,完成粗粒度和细粒度的灵敏组合。
5 定论
本文提出了一种依据 SRAM 型 FPGA 的实时容错自修正体系结构和规划办法。该规划办法将体系分为若干功用模块,选用粗粒度三模冗余结构和细粒度三模冗余结构并结合动态重构对体系进行容错自修正规划,试验成果标明该规划结构下毛病修正时刻短,体系的牢靠性得到有用进步。在体系规划时,能够归纳考虑资源分配状况和毛病修正时刻要求,合理进行模块粒度区分,完成粗粒度和细粒度的灵敏组合。