三模冗余-TMR

        三模冗余系统简称TMR(Triple Modular Redundancy),是最常用的一种容错设计技术.三个模块同时执行相同的操作,以多数相同的输出作为表决系统的正确输出,通常称为三取二.三个模块中只要不同时出现两个相同的错误,就能掩蔽掉故障模块的错误,保证系统正确的输出.由于三个模块是互相独立的,两个模块同时出现错误是极小概率事件,故可以大大提高系统的可信性。

        但是代价高昂,一般用于可靠性要求极高的产品,如航空航天。

### FPGA三模冗余(TMR)技术原理 #### 什么是三模冗余(TMR) 为了提升系统的可靠性和容错能力,在面对单粒子效应等瞬态故障时,FPGA设计中引入了三模冗余(Triple Modular Redundancy, TMR)[^1]。该方法通过复制个相同的模块来执行同一任务,并利用多数表决器比较这个模块的结果,从而确保即使其中一个或两个模块发生错误,最终输出仍然是正确的。 #### 实现方式 ##### 模块级TMR结构 在实际应用中,对于关键路径上的逻辑单元实施重化处理,即创建个完全一致的功能实体。这些实体接收相同输入数据并行工作,之后由一个特殊的组合电路——多数表决器汇总各个分支产生的中间结果,选取占优的那个作为最终有效输出[^3]。 ##### Scrubbing机制配合使用 除了基本的硬件层面保护措施外,还经常结合周期性的内存扫描清除(Scrubbing),主动查找可能存在的潜在软错误并及时纠正它们。这种方式能够进一步增强整个系统的鲁棒性,尤其是在太空辐射环境中工作的设备尤为适用[^2]。 ##### 错误恢复策略 一旦发现任何异常情况(比如状态机跳变失败),会触发相应的纠错流程,这通常涉及到重新加载原始配置文件到受影响区域的过程。此操作可以通过外部辅助控制器监督完成,例如文中提到的反熔丝FPGA协助管理SRAM型FPGA的状态同步与自动重启等功能。 ```verilog // Verilog代码片段展示了一个简单的TMR架构实例 module tmr_voter #(parameter WIDTH=8)( input wire [WIDTH-1:0] data_in_1, input wire [WIDTH-1:0] data_in_2, input wire [WIDTH-1:0] data_in_3, output reg [WIDTH-1:0] voted_data); always @(*) begin : voter_process case (1'b1) ((data_in_1 == data_in_2) || (data_in_1 == data_in_3)): voted_data = data_in_1; ((data_in_2 == data_in_1) || (data_in_2 == data_in_3)): voted_data = data_in_2; default: voted_data = data_in_3; // Assume third is correct when all differ endcase end endmodule ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值