1. 三模冗余系统概述
三模冗余(Triple Modular Redundancy, TMR)是一种经典的容错设计方法,通过在关键路径上部署三个相同的功能模块,并通过表决机制输出最终结果。这种设计可以容忍单个模块的故障,广泛应用于航天、医疗、工业控制等高可靠性要求的领域。
在实际工程中,单纯的TMR设计存在一个明显缺陷:当某个模块发生永久性故障时,系统会持续处于"两好一坏"的状态,此时表决器虽然能输出正确结果,但系统实际上已经失去了冗余能力。更糟糕的是,如果第二个模块也发生故障,系统将直接输出错误结果。
为了解决这个问题,我们需要在基础TMR设计上增加故障检测与隔离功能。这套扩展系统能够:
- 实时监测各模块的健康状态
- 准确识别并标记故障模块
- 动态调整表决策略
- 提供故障报警和状态指示
提示:在FPGA实现时,故障检测逻辑通常会消耗约5-15%的额外逻辑资源,具体取决于检测算法的复杂度。这个开销相对于系统可靠性提升来说是值得的。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 整体架构
完整的带故障隔离功能的TMR系统包含以下核心组件:
- 冗余执行模块:三个功能相同的硬件模块(Module A/B/C)
- 故障检测单元:持续比对三个模块的输出
- 自适应表决器:根据故障状态动态调整表决策略
- 状态管理单元:维护故障计数器、提供系统接口
code复制┌─────────┐ ┌─────────┐ ┌─────────┐
│ Module A │ │ Module B │ │ Module C │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────┐
│ 故障检测单元 │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ 自适应表决器 │
└──────────────┬──────────────┘
│
▼
系统输出
2.2 故障检测策略
故障检测的核心是对三个模块的输出进行实时比对。我们采用"多数表决+错误计数"的复合策略:
-
瞬时检测:每个时钟周期比较三个输出
- 如果三个输出一致:所有模块正常
- 如果两个输出一致:标记不一致的模块为可疑
- 如果三个输出各不相同:系统进入异常状态
-
累积判断:为每个模块维护错误计数器
- 每次被标记为可疑时计数器+1
- 达到阈值(如连续3次)则判定为故障
- 定期清零计数器(如每1000周期)
这种设计既能快速响应持续故障,又能避免瞬时干扰导致的误判。
3. Verilog实现详解
3.1 故障检测模块
verilog复制module fault_detector (
input wire clk,
input wire rst_n,
input wire [2:0] results, // 三个模块的输出 [A, B, C]
output reg [2:0] fault_flags // 故障标志位 [A_fault, B_fault, C_fault]
);
reg [2:0] error_count [0:2]
