CN104731668B - Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 - Google Patents
Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 Download PDFInfo
- Publication number
- CN104731668B CN104731668B CN201410740815.3A CN201410740815A CN104731668B CN 104731668 B CN104731668 B CN 104731668B CN 201410740815 A CN201410740815 A CN 201410740815A CN 104731668 B CN104731668 B CN 104731668B
- Authority
- CN
- China
- Prior art keywords
- module
- reloading
- state machine
- state
- failure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明是FPGA三模冗余架构的故障管理与恢复控制器,包括寄存器模块、中断模块、ID映射电路、主状态机以及外部处理器;寄存器模块、中断模块、ID映射电路分别连接主状态机;寄存器模块通过并行局部总线连接到外部处理器;外部处理器通过对寄存器模块中各个寄存器进行读写来监控控制器的工作状态,并对控制器工作模式进行控制;中断模块向外部处理器发送需要其知悉或处理的中断事件;ID映射电路用于管理故障冗余模块ID和局部重加载命令ID之间的映射关系,该映射关系由外部处理器通过寄存器模块进行设置和更改。本发明既可以提高系统的可靠性,同时又加大了系统在很多故障情况下保持正常工作的可能性,即提高了系统的可用性。
Description
技术领域
本发明涉及嵌入式计算领域,尤其涉及一种FPGA三模冗余架构的故障管理与恢复控制器及其控制方法。
背景技术
通过提高密度、降低功耗和成本等手段,现场可编程门阵列(FPGA)在嵌入式计算领域的应用变得越来越广泛。根据编程特性和实现工艺,目前市场上的FPGA主要分为三类:反熔丝工艺FPGA、Flash工艺FPGA和SRAM工艺FPGA。这三类FPGA中,反熔丝工艺FPGA仅可进行一次性编程,Flash工艺和SRAM工艺的FPGA可进行重复编程。就运行频率和资源密度而言,SRAM工艺的FPGA要远优于Flash工艺FPGA和反熔丝工艺FPGA,但是基于SRAM工艺的FPGA对于带电粒子的辐射较为敏感,在辐射环境下容易发生单粒子翻转(SEU),从而可能导致其内部电路结构发生变化,这种故障模式严重影响了SRAM工艺FPGA在高辐射环境下的可靠性。相较SRAM工艺FPGA而言,Flash工艺FPGA和反熔丝工艺FPGA具有良好的抗辐射特性,由于实现工艺的不同,这两种FPGA在辐射环境下并不会发生电路结构的变化(注,这两种FPGA在辐射环境下其内部flip-flop和RAM元件中的存储内容也可能发生SEU,但是电路结构本身并不会发生变化)。所以,在高辐射的环境下,Flash工艺FPGA和反熔丝工艺FPGA的可靠性要高于SRAM工艺FPGA。
太空环境中存在着各种宇宙射线与高能带电粒子辐射,高空大气层中也有很强的高能量中子辐射,所以,航天和航空领域里对可靠性要求较高的电子系统中通常都采用Flash工艺FPGA和反熔丝工艺FPGA。但随着近年来航天和航空技术的不断发展,对其电子系统的计算能力的要求也在不断提升,Flash工艺FPGA和反熔丝工艺FPGA由于其运行频率和资源密度的不足,在某些应用中已逐渐被SRAM工艺FPGA所取代。在这样的发展趋势下,SRAM工艺FPGA的抗辐射技术变得越来越重要。
三模冗余(TMR)技术是一种可用于处理SRAM工艺FPGA上单粒子翻转问题的容错技术,已得到了较为广泛的应用。其基本原理是使用三个相同的模块分别实现相同的功能,最后在输出口通过表决电路来选择出属于多数的输出信号以实现容错的目的。在采用TMR架构的SRAM FPGA设计中,仅单个模块中发生SEU并不会影响整个功能的正确输出。所以TMR设计技术可以很大程度地提高SRAM工艺FPGA的可靠性。但是如果发生了多次SEU,SEU的累积就可能会造成同一TMR架构中多个模块均发生故障,从而就会导致TMR输出表决失效,进而造成系统故障。随着局部动态重加载技术的发展,出现了一种TMR技术和局部重加载技术的组合应用技术,两种技术的配合使用可以对SEU做出更好的处理。使用这种组合应用技术,TMR架构的某个模块中发生SEU并导致该模块故障时,表决电路可以判断出发生故障的模块并以某种方式触发该模块的局部重加载,从而对该故障模块的电路进行修复。通过这样的技术手段,可以使SRAM工艺FPGA发生SEU时,其内部的功能仍可正常运行并将SEU自行修复,这就在很大程度上避免了SEU累积造成的系统故障问题。
通过文献资料检索可以查到当前国内外一些关于SRAM工艺FPGA的TMR设计技术和局部重加载技术的综述性文章。对于这两种技术的组合应用,主要是一些高校在从事理论方面的研究,而且这种研究也大多只是针对具体项目的实现,目前尚缺乏通用化、平台化的TMR架构下FPGA的故障管理与恢复的控制手段。
发明内容
为了解决背景技术中所存在的技术问题,本发明提出了一种FPGA三模冗余架构的故障管理与恢复控制器,利用该控制器可以对TMR架构的SRAM工艺FPGA中发生的电路故障进行监控、分析与管理,并根据故障分析结果自动对发生故障的冗余模块进行局部重加载来对故障模块的电路进行修复。
本发明的技术解决方案是:FPGA三模冗余架构的故障管理与恢复控制器,其特征在于:所述控制器包括寄存器模块、中断模块、ID映射电路、主状态机以及外部处理器;所述寄存器模块、中断模块、ID映射电路分别连接主状态机;所述寄存器模块通过并行局部总线连接到外部处理器;所述外部处理器通过对寄存器模块中各个寄存器进行读写来监控控制器的工作状态,并对控制器工作模式进行控制;所述中断模块向外部处理器发送需要其知悉或处理的中断事件;所述ID映射电路用于管理故障冗余模块ID和局部重加载命令ID之间的映射关系,该映射关系由外部处理器通过寄存器模块进行设置和更改。
上述控制器还包括SRAM工艺FPGA局部重加载控制电路,所述SRAM工艺FPGA局部重加载控制电路与主状态机连接。
FPGA三模冗余架构的故障管理与恢复控制方法,其特征在于:所述方法包括以下步骤:
1)处理器通过局部总线对寄存器模块中的各模块监控使能寄存器进行读写,把需要进行故障状态监控的模块设置为监控使能;
2)控制器自动对TMR架构FPGA中的各冗余模块的工作状态进行监控,直至监测到某个监控使能的模块发生了故障,此时主状态机从【空闲】状态转入【监测到故障】状态;
3)控制器对故障的类型进行判断,如果TMR架构FPGA中的同一功能逻辑中的三个冗余模块中,仅一个模块为故障状态,则该功能逻辑由于仍可进行正确的TMR多数表决,功能逻辑仍可正常工作,并且可以进行不打断正常工作的单模块故障恢复,此时主状态机进入【同一TMR中单模块故障】状态来进行后续处理,并进行步骤4);如果TMR架构FPGA中的同一功能逻辑中的三个冗余模块均为故障状态,则该功能逻辑已无法进行正确的TMR多数表决,也无法进行不打断正常工作的模块故障恢复,需要将此功能级错误汇报给处理器并进行故障隔离,此时“主状态机”进入【同一TMR中多模块故障】状态,并进行步骤12);
4)在【同一TMR中单模块故障】状态,主状态机记录发生故障的单模块ID,并向中断模块通知发生了同一TMR中单模块故障的中断事件,再由中断模块进一步向外部处理器发出中断信号,然后主状态机转入【启动单模块故障恢复】状态,开始后续的故障恢复过程;
5)在【启动单模块故障恢复】状态,主状态机向ID映射电路发送故障模块的ID,然后转入【获取局部重加载ID】状态;
6)在【获取局部重加载ID】状态,主状态机从ID映射电路获得故障模块进行电路恢复所对应的重加载ID,然后转入【发起局部重加载】状态;
7)在【发起局部重加载】状态,主状态机向局部重加载控制电路发送重加载命令及其ID,以使其开始对TMR架构FPGA中的故障模块进行配置数据的重新加载,之后,主状态机监控从局部重加载控制电路返回的重加载完成信号,如果收到重加载完成信号,则主状态机进入【局部重加载完成】状态来进行后续处理,并进行步骤8);如果超过了规定的最大时间仍未收到重加载完成信号,则主状态机进入【局部重加载失败】状态,并进行步骤12);
8)在【局部重加载完成】状态,主状态机记录前次局部重加载过程的状态信息,然后转入【发送模块复位信号】状态;
9)在【发送模块复位信号】状态,主状态机向进行过局部重加载的故障模块发送足够宽度的复位脉冲信号,以使该模块在局部重加载完成后进入稳定的初始状态,然后主状态机转入【等待模块故障恢复】状态;
10)在【等待模块故障恢复】状态,TMR架构FPGA中进行过局部重加载的故障模块需要从复位后的初始状态恢复至与三模冗余另外两个模块同步的工作状态中去,并重新参与表决,若该恢复过程成功,则模块状态会恢复正常;主状态机对该模块的状态保持监控,若该模块状态恢复正常,则主状态机进入【模块恢复成功】状态,并进行步骤11);若监控超过最大时间后该模块状态仍为故障,则判断该模块无法恢复正常,主状态机进入【模块恢复失败】状态,并进行步骤12);
11)在【模块恢复成功】状态,主状态机向中断模块通知发生了故障模块恢复正常的中断事件,再由中断模块进一步向外部处理器发出中断信号,完成了单模块故障的全部处理与恢复过程,然后主状态机回到【空闲】状态;
12)在【同一TMR中多模块故障】状态、【局部重加载失败】状态、或者【模块恢复失败】状态,均表示发生了无法恢复的模块故障;在这些状态下,主状态机记录发生故障的模块ID,并向中断模块通知相应的故障中断事件,再由中断模块进一步向外部处理器发出中断信号;然后主状态机进入【不可恢复故障】状态,等待处理器对于这些故障中断事件的后续处理;
13)在【不可恢复故障】状态,外部处理器收到中断后,获知TMR架构FPGA中发生了无法恢复的模块故障,处理器需要禁止相应的故障模块的工作状态监控使能,并根据情况决定是否进行进一步的功能级故障处理,在无法恢复的故障模块的状态监控使能被禁止后,主状态机回到【空闲】状态。
上述方法还包括故障注入与自测试:
1)处理器通过局部总线对寄存器模块中的各模块监控使能寄存器进行读写,禁止所有模块的监控使能;
2)处理器通过局部总线对寄存器模块中的故障注入寄存器写入故障注入命令及本次故障注入所对应的局部重加载ID;
3)寄存器模块向主状态机发出故障注入命令和本次故障注入所对应的局部重加载ID;
4)主状态机在对于所有模块的监控使能都被禁止时,收到故障注入命令,则从【空闲】状态转入【启动故障注入】状态;
5)在【启动故障注入】状态,主状态机记录本次故障注入所对应的局部重加载ID,然后转入【发起故障注入局部重加载】状态;
6)在【发起故障注入局部重加载】状态,主状态机向局部重加载控制电路发送局部重加载命令及局部重加载ID,以使其开始更改TMR架构FPGA中某个模块的配置数据,之后,主状态机监控从局部重加载控制电路返回的重加载完成信号,如果收到重加载完成信号,则主状态机进入【故障注入局部重加载完成】状态来进行后续处理,并进行步骤7);如果超过了规定的最大时间仍未收到重加载完成信号,则主状态机进入【故障注入局部重加载失败】状态,并进行步骤10);
7)在【故障注入局部重加载完成】状态,主状态机通知寄存器模块本次故障注入已完成,然后转入【空闲】状态;寄存器模块的主状态机工作状态寄存器会对故障注入完成的事件进行记录;
8)处理器通过局部总线对寄存器模块中的主状态机工作状态寄存器进行循环读取,直至发现本次故障注入已完成;
9)处理器通过局部总线对寄存器模块中的各模块监控使能寄存器进行读写,将被故障注入的模块及其对应的在同一TMR架构中的另两个冗余模块的工作状态监控设置为使能;然后控制器将监控到被故障注入的模块的故障状态,并且开始故障监控、管理与恢复过程,从而完成整个系统的故障注入与自测试过程;
10)在【故障注入局部重加载失败】状态,主状态机通知寄存器模块本次故障注入局部重加载失败,然后转入【空闲】状态;寄存器模块的主状态机工作状态寄存器会对故障注入局部重加载失败的事件进行记录;
11)处理器通过局部总线对寄存器模块中的主状态机工作状态寄存器进行循环读取,直至发现本次故障注入局部重加载失败,系统中局部重加载的功能出现问题,需对其进行排查。
本发明的优点是:
1)本控制器及其控制方法可以同时提高系统的可靠性和可用性。在SRAM工艺FPGA发生导致单模块故障的SEU之后,本控制器不仅可以及时监测到故障,同时还能在不影响系统正常工作的情况下自动对该故障模块进行电路恢复来使其重新参与工作,这就在很大程度上避免了SRAM工艺FPGA中SEU累积造成的系统失效问题,所以,相较于传统的FPGA三模冗余设计方法而言,本控制器及其控制方法通过故障自愈的方式既提高了系统的可靠性,同时又加大了系统在很多故障情况下保持正常工作的可能性,即提高了系统的可用性。
2)本控制器提供的是一种通用平台式的FPGA三模冗余架构的故障监控、管理与恢复手段。本控制器的实现方式和控制方法与TMR架构的SRAM工艺FPGA中设计的具体功能无关,所以对于在具有局部重加载功能的SRAM工艺FPGA中采用模块级粒度的三模冗余技术进行设计的任何项目,都可以直接使用或者经过简单修改后使用本控制器来对其TMR架构的FPGA进行故障监控、管理与恢复。
3)本控制器发明具有很好的自动化特性,在工作时无需处理器的干预便可自行完成对于TMR架构FPGA中SEU导致的单模块故障的监控、管理和恢复全过程,而现有的其他故障管理和恢复方法大多都需要处理器进行直接控制,相较而言,本控制器发明节约了系统的计算资源。
4)本控制器内部集成了一个灵活有效的故障模块ID与重加载命令ID的映射电路。通过该映射电路,用户可以根据自己的应用需要灵活地建立起故障模块ID和对该模块进行电路恢复时所需进行的局部重加载的命令ID之间的对应关系。这也进一步提高了本控制器的通用特性,在很多应用场合都可以为用户带来便利。
本控制器在硬件上使用Flash工艺或者反熔丝工艺的FPGA作为平台来进行实现。控制器的前端为并行局部总线与中断信号,外部处理器通过局部总线和中断来对控制器进行控制。控制器的后端与TMR架构的SRAM工艺FPGA及其局部重加载控制电路相连,用于监控TMR架构FPGA的工作状态,并在TMR中单个模块发生故障时,利用局部重加载控制电路来对其进行恢复。
附图说明
图1是本发明的控制器硬件组成示意图;
图2是本发明控制器信号的连接方式示意图;
图3是本发明主状态机的状态变迁图;
图4是本发明ID映射电路的实现示意图;
具体实施方式
参见图1,控制器由图中左侧部分组成,其与TMR架构的SRAM工艺FPGA一起协同工作,来完成对SRAM工艺FPGA的故障管理与恢复。控制器硬件由六部分组成,分别为:a.寄存器模块;b.中断模块;c.ID映射电路;d.主状态机;f.外部处理器;g.SRAM工艺FPGA局部重加载控制电路。其中寄存器模块通过并行局部总线连接到外部处理器,外部处理器可通过对寄存器模块中各个寄存器进行读写来监控控制器的工作状态,并对其工作模式进行控制,包括读取当前TMR架构FPGA各冗余模块的工作状态,读取控制器主状态机的工作状态,设置对于各冗余模块工作状态的监控使能、设置故障模块ID与重加载ID的映射关系、对控制器进行故障注入测试、对各个中断事件的使能与禁止等。中断模块用于向外部处理器发送需要其知悉或处理的中断事件,例如有冗余模块发生故障、故障模块恢复失败、局部重加载过程失败等等。ID映射电路用于管理故障冗余模块ID和局部重加载命令ID之间的映射关系,该映射关系可由外部处理器通过寄存器模块进行设置和更改,通过这样的映射机制可以增加控制器的灵活性与通用性。主状态机是本控制器的核心部分,该状态机用于监控TMR架构FPGA各冗余模块的工作状态,并在各被监控模块发生故障时,进行故障类型判断,若为单模块故障则启动故障恢复工作,故障恢复工作包括获取局部重加载ID、发起局部重加载、重加载完成后对模块发送复位信号、等待模块恢复等阶段。另外,主状态机也负责进行控制器自测试时的故障注入,故障注入是通过向冗余模块中重加载入错误的配置数据来实现的。主状态机的状态变迁图见附图3,有关该状态机的详细工作流程在后文中会进一步仔细介绍。
本控制器中的SRAM工艺FPGA局部重加载控制电路是用于对TMR架构FPGA中的单个模块故障进行恢复,控制器向局部重加载控制电路发出重加载命令及ID,来让其开始对TMR架构FPGA中的故障模块进行配置数据的重新加载,待重新加载完成后,局部重加载控制电路向控制器返回重加载完成信号。通过文献资料检索可以知道当前已有多种SRAM工艺FPGA局部重加载控制电路的设计,所以局部重加载控制电路并不是本控制器发明的技术重点,在此就不对其实现方式进行详细描述。
为使本控制器具有较高的抗辐射特性,本控制器中处理器之外的电路在Flash工艺或者反熔丝工艺的FPGA上进行实现。
本控制器用于为TMR架构的SRAM工艺FPGA提供故障管理与恢复手段,以提高其工作的可靠性,本控制器与TMR架构FPGA相胶连的信号为各冗余模块工作状态信号和各冗余模块复位信号,以及局部重加载的控制信号,这些信号的连接方式详见附图2。TMR架构FPGA中每个功能逻辑由三个冗余模块构成,并通过表决逻辑来给出判决为多数的输出信号,每个冗余模块的工作状态由表决逻辑给出,若模块输出为表决逻辑中的多数值,则其工作状态判定为正常,若模块输出为表决逻辑中的少数值,则其工作状态判定为故障,若表决逻辑中发现三个冗余模块的输出各不相同,则三个冗余模块的工作状态都判定为故障。各冗余模块复位信号分别连接到每一个冗余模块,每个复位信号均用于在相应模块发生故障并进行局部重加载之后对其进行复位,以使该模块在局部重加载完成后进入稳定的初始状态。
本发明各功能的工作流程是:
本控制器可以对TMR架构的SRAM工艺FPGA的工作状态进行监控,并对其各个冗余模块中发生的故障进行分类管理与自动恢复。另外,通过本控制器还可向TMR架构FPGA中注入故障,来测试整个系统的容错特性。本控制器的两个主要功能的工作流程如下:
一、对TMR架构FPGA的故障监控、管理与恢复过程:
1.处理器通过局部总线对“寄存器模块”中的各模块监控使能寄存器进行读写,把需要进行故障状态监控的模块设置为监控使能。
2.控制器自动对TMR架构FPGA中的各冗余模块的工作状态进行监控,直至监测到某个监控使能的模块发生了故障,此时“主状态机”从【空闲】状态转入【监测到故障】状态。
3.控制器对故障的类型进行判断,如果TMR架构FPGA中的同一功能逻辑中的三个冗余模块中,仅一个模块为故障状态,则该功能逻辑由于仍可进行正确的TMR多数表决,功能逻辑仍可正常工作,并且可以进行不打断正常工作的单模块故障恢复,此时“主状态机”进入【同一TMR中单模块故障】状态来进行后续处理,并转入阶段4;如果TMR架构FPGA中的同一功能逻辑中的三个冗余模块均为故障状态,则该功能逻辑已无法进行正确的TMR多数表决,也无法进行不打断正常工作的模块故障恢复,需要将此功能级错误汇报给处理器并进行故障隔离,此时“主状态机”进入【同一TMR中多模块故障】状态,并转入阶段12。
4.在【同一TMR中单模块故障】状态,“主状态机”记录发生故障的单模块ID,并向“中断模块”通知发生了同一TMR中单模块故障的中断事件,再由“中断模块”进一步向外部处理器发出中断信号,然后“主状态机”转入【启动单模块故障恢复】状态,开始后续的故障恢复过程。
5.在【启动单模块故障恢复】状态,“主状态机”向“ID映射电路”发送故障模块的ID,然后转入【获取局部重加载ID】状态。
6.在【获取局部重加载ID】状态,“主状态机”从“ID映射电路”获得故障模块进行电路恢复所对应的重加载ID,然后转入【发起局部重加载】状态。
7.在【发起局部重加载】状态,“主状态机”向局部重加载控制电路发送重加载命令及其ID,以使其开始对TMR架构FPGA中的故障模块进行配置数据的重新加载,之后,“主状态机”监控从局部重加载控制电路返回的重加载完成信号,如果收到重加载完成信号,则“主状态机”进入【局部重加载完成】状态来进行后续处理,并转入阶段8;如果超过了规定的最大时间仍未收到重加载完成信号,则“主状态机”进入【局部重加载失败】状态,并转入阶段12。
8.在【局部重加载完成】状态,“主状态机”记录前次局部重加载过程的状态信息,然后转入【发送模块复位信号】状态。
9.在【发送模块复位信号】状态,“主状态机”向进行过局部重加载的故障模块发送足够宽度的复位脉冲信号,以使该模块在局部重加载完成后进入稳定的初始状态,然后“主状态机”转入【等待模块故障恢复】状态。
10.在【等待模块故障恢复】状态,TMR架构FPGA中进行过局部重加载的故障模块需要从复位后的初始状态恢复至与三模冗余另外两个模块同步的工作状态中去,并重新参与表决,若该恢复过程成功,则模块状态会恢复正常。“主状态机”对该模块的状态保持监控,若该模块状态恢复正常,则“主状态机”进入【模块恢复成功】状态,并转入阶段11;若监控超过最大时间后该模块状态仍为故障,则判断该模块无法恢复正常,“主状态机”进入【模块恢复失败】状态,并转入阶段12。
11.在【模块恢复成功】状态,“主状态机”向“中断模块”通知发生了故障模块恢复正常的中断事件,再由“中断模块”进一步向外部处理器发出中断信号,完成了单模块故障的全部处理与恢复过程,然后“主状态机”回到【空闲】状态。
12.在【同一TMR中多模块故障】状态、【局部重加载失败】状态、或者【模块恢复失败】状态,均表示发生了无法恢复的模块故障。在这些状态下,“主状态机”记录发生故障的模块ID,并向“中断模块”通知相应的故障中断事件,再由“中断模块”进一步向外部处理器发出中断信号。然后“主状态机”进入【不可恢复故障】状态,等待处理器对于这些故障中断事件的后续处理。
13.在【不可恢复故障】状态,外部处理器收到中断后,获知TMR架构FPGA中发生了无法恢复的模块故障,处理器需要禁止相应的故障模块的工作状态监控使能,并根据情况决定是否进行进一步的功能级故障处理,例如对于同一TMR中的多模块故障,需要把相应的功能进行故障隔离。在无法恢复的故障模块的状态监控使能被禁止后,“主状态机”回到【空闲】状态。
二、故障注入与自测试过程:
1.处理器通过局部总线对“寄存器模块”中的各模块监控使能寄存器进行读写,禁止所有模块的监控使能。
2.处理器通过局部总线对“寄存器模块”中的故障注入寄存器写入故障注入命令及本次故障注入所对应的局部重加载ID(该ID所对应的局部重加载会更改TMR架构FPGA中某个模块的配置数据,即更改该模块电路,从而造成模块故障)。
3.“寄存器模块”向“主状态机”发出故障注入命令和本次故障注入所对应的局部重加载ID。
4.“主状态机”在对于所有模块的监控使能都被禁止时,收到故障注入命令,则从【空闲】状态转入【启动故障注入】状态。
5.在【启动故障注入】状态,“主状态机”记录本次故障注入所对应的局部重加载ID,然后转入【发起故障注入局部重加载】状态。
6.在【发起故障注入局部重加载】状态,“主状态机”向局部重加载控制电路发送局部重加载命令及局部重加载ID,以使其开始更改TMR架构FPGA中某个模块的配置数据,之后,“主状态机”监控从局部重加载控制电路返回的重加载完成信号,如果收到重加载完成信号,则“主状态机”进入【故障注入局部重加载完成】状态来进行后续处理,并转入阶段7;如果超过了规定的最大时间仍未收到重加载完成信号,则“主状态机”进入【故障注入局部重加载失败】状态,并转入阶段10。
7.在【故障注入局部重加载完成】状态,“主状态机”通知“寄存器模块”本次故障注入已完成,然后转入【空闲】状态。“寄存器模块”的主状态机工作状态寄存器会对故障注入完成的事件进行记录。
8.处理器通过局部总线对“寄存器模块”中的主状态机工作状态寄存器进行循环读取,直至发现本次故障注入已完成。此时由于TMR架构FPGA中被故障注入的模块的电路状态已经发生改变,故而该模块工作状态成为故障状态。
9.处理器通过局部总线对“寄存器模块”中的各模块监控使能寄存器进行读写,将被故障注入的模块及其对应的在同一TMR架构中的另两个冗余模块的工作状态监控设置为使能。然后控制器将监控到被故障注入的模块的故障状态,并且开始如前文所述的故障监控、管理与恢复过程,从而完成整个系统的故障注入与自测试过程。
10.在【故障注入局部重加载失败】状态,“主状态机”通知“寄存器模块”本次故障注入局部重加载失败,然后转入【空闲】状态。“寄存器模块”的主状态机工作状态寄存器会对故障注入局部重加载失败的事件进行记录。
11.处理器通过局部总线对“寄存器模块”中的主状态机工作状态寄存器进行循环读取,直至发现本次故障注入局部重加载失败,这说明系统中局部重加载的功能出现问题,需对其进行排查。
下面对本发明做进一步详细说明。分别介绍各个硬件组成模块各自的实现方式。
1.主状态机
“主状态机”是本控制器的核心部分,其内部状态变迁及输入输出信号详见附图3。“主状态机”在控制器监控到TMR架构FPGA的模块发生故障时,开始故障管理与恢复工作,包括判断故障类型,发起用于单模块故障恢复的局部重加载,向故障模块发送复位信号等等。另外,“主状态机”在收到“寄存器模块”的故障注入命令时,也可发起用于故障注入的局部重加载工作。它的工作和实现方式已在本控制器工作流程部分的“对TMR架构FPGA的故障监控、管理与恢复过程”和“故障注入与自测试过程”中进行了详细阐述,在此不再赘述。
2.ID映射电路
“ID映射电路”用于在控制器中建立起故障模块ID和对该模块进行电路恢复时所需进行的局部重加载的命令ID之间的映射关系,“主状态机”可以根据故障模块的ID来从“ID映射电路”获取相应的局部重加载ID。
“ID映射电路”可以使用FPGA内部双口RAM存储器的方式来实现,如附图4所示。故障模块的ID作为双口RAM存储器的地址,该地址中存储的数据即为对应的局部重加载命令ID,通过这样的地址与数据的对应关系,即可建立并存储故障模块ID与重加载ID的映射关系。双口RAM存储器的一个访问端口用于设置映射关系,另一个访问端口用作重加载ID的获取。外部处理器可通过局部总线访问“寄存器模块”中的映射关系设置寄存器,进而通过双口RAM访问端口A来对其内部的数据进行修改,从而达到对映射关系的设置。“主状态机”发出故障模块ID来做为双口RAM访问端口B的地址,获得的数据即为对应的重加载命令ID。
通过该映射电路,用户可以根据自己的应用需要灵活地建立起故障模块ID和重加载命令ID之间的对应关系。这也进一步提高了本控制器的通用特性,在很多应用场合都可以为用户带来便利。
3.寄存器模块
“寄存器模块”是外部处理器访问本控制器的直接接口,其中包含控制寄存器和状态寄存器。控制寄存器用于外部处理器对本控制器进行控制,例如设置各冗余模块工作状态的监控使能、设置故障模块ID和重加载命令ID之间的映射关系、发起故障注入命令、设置中断事件使能等等。状态寄存器用于外部处理器查询本控制器的各种状态,例如查询TMR架构FPGA各冗余模块的工作状态、查询控制器主状态机的当前工作状态、查询中断事件状态等等。
4.中断模块
“中断模块”用于本控制器向外部处理器告知需其处理或知悉的中断事件。“主状态机”将中断事件与相应信息告知“中断模块”,“中断模块”将这些中断事件和信息存储起来,并以中断信号的形式告知处理器。各种中断事件均可通过“寄存器模块”内的中断使能寄存器进行中断使能或中断禁止,当前的中断事件状态也可以通过“寄存器模块”内的中断状态寄存器进行读取。
本控制器的中断事件主要有:a.监测到同一TMR中单模块故障;b.监测到同一TMR中多模块故障;c.模块故障恢复局部重加载失败;d.模块故障恢复失败;e.模块故障恢复成功。
Claims (3)
1.FPGA三模冗余架构的故障管理与恢复控制器,其特征在于:所述控制器包括寄存器模块、中断模块、ID映射电路、主状态机、外部处理器以及SRAM工艺FPGA局部重加载控制电路;所述寄存器模块、中断模块、ID映射电路分别连接主状态机;所述寄存器模块通过并行局部总线连接到外部处理器;所述外部处理器通过对寄存器模块中各个寄存器进行读写来监控控制器的工作状态,并对控制器工作模式进行控制;所述中断模块向外部处理器发送需要其知悉或处理的中断事件;所述ID映射电路用于管理故障冗余模块ID和局部重加载命令ID之间的映射关系,该映射关系由外部处理器通过寄存器模块进行设置和更改;所述SRAM工艺FPGA局部重加载控制电路与主状态机连接。
2.FPGA三模冗余架构的故障管理与恢复控制方法,其特征在于:所述方法包括以下步骤:
1)处理器通过局部总线对寄存器模块中的各模块监控使能寄存器进行读写,把需要进行故障状态监控的模块设置为监控使能;
2)控制器自动对TMR架构FPGA中的各冗余模块的工作状态进行监控,直至监测到某个监控使能的模块发生了故障,此时主状态机从【空闲】状态转入【监测到故障】状态;
3)控制器对故障的类型进行判断,如果TMR架构FPGA中的同一功能逻辑中的三个冗余模块中,仅一个模块为故障状态,则该功能逻辑由于仍可进行正确的TMR多数表决,功能逻辑仍可正常工作,并且可以进行不打断正常工作的单模块故障恢复,此时主状态机进入【同一TMR中单模块故障】状态来进行后续处理,并进行步骤4);如果TMR架构FPGA中的同一功能逻辑中的三个冗余模块均为故障状态,则该功能逻辑已无法进行正确的TMR多数表决,也无法进行不打断正常工作的模块故障恢复,需要将此功能级错误汇报给处理器并进行故障隔离,此时“主状态机”进入【同一TMR中多模块故障】状态,并进行步骤12);
4)在【同一TMR中单模块故障】状态,主状态机记录发生故障的单模块ID,并向中断模块通知发生了同一TMR中单模块故障的中断事件,再由中断模块进一步向外部处理器发出中断信号,然后主状态机转入【启动单模块故障恢复】状态,开始后续的故障恢复过程;
5)在【启动单模块故障恢复】状态,主状态机向ID映射电路发送故障模块的ID,然后转入【获取局部重加载ID】状态;
6)在【获取局部重加载ID】状态,主状态机从ID映射电路获得故障模块进行电路恢复所对应的重加载ID,然后转入【发起局部重加载】状态;
7)在【发起局部重加载】状态,主状态机向局部重加载控制电路发送重加载命令及其ID,以使其开始对TMR架构FPGA中的故障模块进行配置数据的重新加载,之后,主状态机监控从局部重加载控制电路返回的重加载完成信号,如果收到重加载完成信号,则主状态机进入【局部重加载完成】状态来进行后续处理,并进行步骤8);如果超过了规定的最大时间仍未收到重加载完成信号,则主状态机进入【局部重加载失败】状态,并进行步骤12);
8)在【局部重加载完成】状态,主状态机记录前次局部重加载过程的状态信息,然后转入【发送模块复位信号】状态;
9)在【发送模块复位信号】状态,主状态机向进行过局部重加载的故障模块发送足够宽度的复位脉冲信号,以使该模块在局部重加载完成后进入稳定的初始状态,然后主状态机转入【等待模块故障恢复】状态;
10)在【等待模块故障恢复】状态,TMR架构FPGA中进行过局部重加载的故障模块需要从复位后的初始状态恢复至与三模冗余另外两个模块同步的工作状态中去,并重新参与表决,若该恢复过程成功,则模块状态会恢复正常;主状态机对该模块的状态保持监控,若该模块状态恢复正常,则主状态机进入【模块恢复成功】状态,并进行步骤11);若监控超过最大时间后该模块状态仍为故障,则判断该模块无法恢复正常,主状态机进入【模块恢复失败】状态,并进行步骤12);
11)在【模块恢复成功】状态,主状态机向中断模块通知发生了故障模块恢复正常的中断事件,再由中断模块进一步向外部处理器发出中断信号,完成了单模块故障的全部处理与恢复过程,然后主状态机回到【空闲】状态;
12)在【同一TMR中多模块故障】状态、【局部重加载失败】状态、或者【模块恢复失败】状态,均表示发生了无法恢复的模块故障;在这些状态下,主状态机记录发生故障的模块ID,并向中断模块通知相应的故障中断事件,再由中断模块进一步向外部处理器发出中断信号;然后主状态机进入【不可恢复故障】状态,等待处理器对于这些故障中断事件的后续处理;
13)在【不可恢复故障】状态,外部处理器收到中断后,获知TMR架构FPGA中发生了无法恢复的模块故障,处理器需要禁止相应的故障模块的工作状态监控使能,并根据情况决定是否进行进一步的功能级故障处理,在无法恢复的故障模块的状态监控使能被禁止后,主状态机回到【空闲】状态。
3.根据权利要求2所述的FPGA三模冗余架构的故障管理与恢复控制方法,其特征在于:所述方法还包括故障注入与自测试:
1)处理器通过局部总线对寄存器模块中的各模块监控使能寄存器进行读写,禁止所有模块的监控使能;
2)处理器通过局部总线对寄存器模块中的故障注入寄存器写入故障注入命令及本次故障注入所对应的局部重加载ID;
3)寄存器模块向主状态机发出故障注入命令和本次故障注入所对应的局部重加载ID;
4)主状态机在对于所有模块的监控使能都被禁止时,收到故障注入命令,则从【空闲】状态转入【启动故障注入】状态;
5)在【启动故障注入】状态,主状态机记录本次故障注入所对应的局部重加载ID,然后转入【发起故障注入局部重加载】状态;
6)在【发起故障注入局部重加载】状态,主状态机向局部重加载控制电路发送局部重加载命令及局部重加载ID,以使其开始更改TMR架构FPGA中某个模块的配置数据,之后,主状态机监控从局部重加载控制电路返回的重加载完成信号,如果收到重加载完成信号,则主状态机进入【故障注入局部重加载完成】状态来进行后续处理,并进行步骤7);如果超过了规定的最大时间仍未收到重加载完成信号,则主状态机进入【故障注入局部重加载失败】状态,并进行步骤10);
7)在【故障注入局部重加载完成】状态,主状态机通知寄存器模块本次故障注入已完成,然后转入【空闲】状态;寄存器模块的主状态机工作状态寄存器会对故障注入完成的事件进行记录;
8)处理器通过局部总线对寄存器模块中的主状态机工作状态寄存器进行循环读取,直至发现本次故障注入已完成;
9)处理器通过局部总线对寄存器模块中的各模块监控使能寄存器进行读写,将被故障注入的模块及其对应的在同一TMR架构中的另两个冗余模块的工作状态监控设置为使能;然后控制器将监控到被故障注入的模块的故障状态,并且开始故障监控、管理与恢复过程,从而完成整个系统的故障注入与自测试过程;
10)在【故障注入局部重加载失败】状态,主状态机通知寄存器模块本次故障注入局部重加载失败,然后转入【空闲】状态;寄存器模块的主状态机工作状态寄存器会对故障注入局部重加载失败的事件进行记录;
11)处理器通过局部总线对寄存器模块中的主状态机工作状态寄存器进行循环读取,直至发现本次故障注入局部重加载失败,系统中局部重加载的功能出现问题,需对其进行排查。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410740815.3A CN104731668B (zh) | 2014-12-05 | 2014-12-05 | Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410740815.3A CN104731668B (zh) | 2014-12-05 | 2014-12-05 | Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731668A CN104731668A (zh) | 2015-06-24 |
CN104731668B true CN104731668B (zh) | 2017-08-25 |
Family
ID=53455580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410740815.3A Active CN104731668B (zh) | 2014-12-05 | 2014-12-05 | Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104731668B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107060903A (zh) * | 2016-12-27 | 2017-08-18 | 国核自仪系统工程有限公司 | 基于fpga的汽轮机危急遮断系统 |
CN107844392A (zh) * | 2017-10-24 | 2018-03-27 | 北京全路通信信号研究设计院集团有限公司 | 一种x86架构cpu寄存器在线故障检测方法及装置 |
CN107807902B (zh) * | 2017-10-25 | 2021-05-14 | 电子科技大学 | 一种抗单粒子效应的fpga动态重构控制器 |
CN108614146A (zh) * | 2018-04-25 | 2018-10-02 | 北京计算机技术及应用研究所 | 一种共享式隔离电压阈值检测模块 |
CN111459545B (zh) * | 2020-03-27 | 2022-07-22 | 广东速美达自动化股份有限公司 | 一种fpga的寄存器资源的优化方法及装置 |
KR20210149445A (ko) | 2020-06-02 | 2021-12-09 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
CN112506172B (zh) * | 2020-12-07 | 2022-09-30 | 天津津航计算技术研究所 | 一种多cpld实时监测装置 |
CN112698638B (zh) * | 2021-03-23 | 2021-07-06 | 中国航空油料集团有限公司 | 一种工业控制器的调度方法及装置 |
CN113433850B (zh) * | 2021-06-04 | 2022-06-03 | 电子科技大学 | 一种fpga异态逻辑修复方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251816A (zh) * | 2008-03-13 | 2008-08-27 | 中国科学院计算技术研究所 | 一种用于可编程器件的冗余系统及其冗余实现方法 |
US7620883B1 (en) * | 2001-02-14 | 2009-11-17 | Xilinx, Inc. | Techniques for mitigating, detecting, and correcting single event upset effects |
CN103530196A (zh) * | 2013-09-24 | 2014-01-22 | 北京控制工程研究所 | 一种fpga单粒子翻转防护方法 |
CN103971732A (zh) * | 2014-04-30 | 2014-08-06 | 浙江大学 | 监控fpga的单粒子翻转效应并纠正重加载的方法及系统 |
-
2014
- 2014-12-05 CN CN201410740815.3A patent/CN104731668B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620883B1 (en) * | 2001-02-14 | 2009-11-17 | Xilinx, Inc. | Techniques for mitigating, detecting, and correcting single event upset effects |
CN101251816A (zh) * | 2008-03-13 | 2008-08-27 | 中国科学院计算技术研究所 | 一种用于可编程器件的冗余系统及其冗余实现方法 |
CN103530196A (zh) * | 2013-09-24 | 2014-01-22 | 北京控制工程研究所 | 一种fpga单粒子翻转防护方法 |
CN103971732A (zh) * | 2014-04-30 | 2014-08-06 | 浙江大学 | 监控fpga的单粒子翻转效应并纠正重加载的方法及系统 |
Non-Patent Citations (1)
Title |
---|
Virtex-Ⅱ系列FPGA的回读与部分重配置;周秀娟,叶荣润;《现代电子技术》;20120701;第35卷(第13期);第159-161页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104731668A (zh) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731668B (zh) | Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 | |
Mathur et al. | Reliability analysis and architecture of a hybrid-redundant digital system: Generalized triple modular redundancy with self-repair | |
CN107347018B (zh) | 一种三冗余1553b总线动态切换方法 | |
JP5699057B2 (ja) | プログラマブルデバイス、プログラマブルデバイスのリコンフィグ方法および電子デバイス | |
US8493120B2 (en) | Storage circuitry and method with increased resilience to single event upsets | |
US3768074A (en) | Multiprocessing system having means for permissive coupling of different subsystems | |
US4351023A (en) | Process control system with improved system security features | |
CN104731670B (zh) | 一种面向卫星的轮换式星载计算机容错系统 | |
US10078565B1 (en) | Error recovery for redundant processing circuits | |
CN108153622B (zh) | 一种故障处理的方法、装置和设备 | |
US9952579B2 (en) | Control device | |
CN103971732A (zh) | 监控fpga的单粒子翻转效应并纠正重加载的方法及系统 | |
CN103744743A (zh) | 一种基于数据库rac模式心跳信号的冗余配置的方法 | |
US7966519B1 (en) | Reconfiguration in a multi-core processor system with configurable isolation | |
JPWO2015111176A1 (ja) | プログラマブルデバイス、エラー保持システム、及び電子システム装置 | |
CN110413225B (zh) | 高可靠集群存储双活配置方法、系统、终端及存储介质 | |
CN108958987A (zh) | 一种低轨小卫星容错系统及方法 | |
CN101788940A (zh) | 基于可编程逻辑器件2x2冗余容错计算机上电复位的电路 | |
CN103475514A (zh) | 无bmc的节点、集群系统及bios修复和升级方法 | |
CN107807902A (zh) | 一种抗单粒子效应的fpga动态重构控制器 | |
CN101699389B (zh) | 磁盘热拔除的处理方法及装置 | |
CN110806989A (zh) | 一种存储服务器 | |
CN105589768B (zh) | 一种可自愈的容错计算机系统 | |
CN108009047B (zh) | 一种双机热备模型及实现方法 | |
CN104834535A (zh) | Soc芯片系统及其开机方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |