3. 星载DMA控制器架构

星载DMA控制器与地面通用DMA在功能上同源,但设计约束截然不同。地面DMA追求吞吐与低延迟,星载DMA必须在辐射环境中长期可靠工作,因此其架构是"功能通路"与"加固通路"的双层叠加。理解这一点的关键,是把控制器拆成四个可独立加固又相互耦合的部分:寄存器模型、通道管理、中断机制和描述符结构。

寄存器模型:控制面与状态面的分离

寄存器模型是软件与DMA硬件之间的唯一契约。典型星载DMA控制器采用三组寄存器:全局控制寄存器(GCTRL)、通道寄存器组(CHx_CTRL/CHx_STAT/CHx_ADDR/CHx_LEN)和中断寄存器组(INT_EN/INT_STAT/INT_CLR)。全局寄存器负责使能、软复位、仲裁模式选择;通道寄存器承载源地址、目的地址、传输长度、突发类型和通道使能;中断寄存器管理屏蔽、挂起与清除。

抗辐射加固对寄存器模型的首要影响是三模冗余(TMR)与回写刷新。每个关键寄存器在物理上实例化为三份,写入时三份同时更新,读取时通过多数表决输出。单粒子翻转(SEU)可能翻转其中一份,表决器仍输出正确值,同时错误位被记录到纠错状态寄存器,供遥测下传。对于配置类寄存器(如通道使能、中断屏蔽),还需周期性回写刷新,防止累积翻转导致表决器失效。这意味着软件看到的寄存器地址空间不变,但读写时序可能增加1~2个时钟周期,驱动代码必须按加固后的时序参数编写,不能沿用地面器件的零等待假设。

通道管理:仲裁、隔离与降级

星载DMA通常管理4~16个通道,对应载荷数据、星务遥测、大容量存储写入等不同数据流。通道管理的核心是仲裁器与通道隔离。仲裁器在多个通道同时请求时决定服务顺序,常见策略是固定优先级加轮询混合:高优先级通道(如姿态控制遥测)可抢占,同级通道轮询以避免饥饿。

加固设计在此处的关键决策是通道级隔离与可降级。若某通道因SEU进入异常状态(如地址寄存器翻转导致越界访问),隔离逻辑应能将该通道挂起而不影响其他通道。实现方式是为每个通道设置独立的使能锁存和错误计数器,当某通道连续出现校验错误时,硬件自动将其置为"安全挂起"状态,并在中断状态寄存器中置位,由软件决定复位或永久禁用。这种设计把单点故障限制在单通道内,避免整个DMA控制器被一个翻转拖垮。

中断机制:从"事件通知"到"可诊断事件"

地面DMA的中断通常只报告"传输完成"或"错误"。星载DMA的中断机制必须承担诊断职责。典型中断源包括:通道传输完成、描述符链耗尽、地址越界、ECC不可纠正错误、通道安全挂起、看门狗超时。中断状态寄存器采用"写1清除"或"读后自动清除"需明确约定,避免清除操作本身被SEU干扰。

加固影响体现在两点:一是中断状态位同样需要TMR或至少奇偶保护,防止误报或漏报;二是中断聚合逻辑要防止"中断风暴"——当多个通道同时出错时,若每个错误都触发独立中断,CPU可能陷入中断嵌套。合理做法是设置中断聚合寄存器,将同一类错误合并为一个中断,并在状态寄存器中保留各通道的详细标志位,软件在中断服务程序中一次性读取并分发处理。

描述符结构:链式传输的加固难点

描述符是DMA实现散射-聚集传输的核心数据结构,通常包含源地址、目的地址、传输长度、下一描述符指针和控制字段。星载DMA的描述符多存放在外部SRAM或MRAM中,而存储器是SEU高发区。因此描述符结构必须自带校验:常见做法是在每个描述符末尾附加CRC或ECC校验字,DMA在读取描述符时先校验再执行;若校验失败,则停止该通道并触发描述符错误中断,而不是继续使用被污染的数据。

另一个加固要点是描述符链的边界保护。下一描述符指针若被翻转,可能指向非法地址。控制器应维护描述符基址和链长度上限,任何超出范围的指针都被拒绝。对于关键传输,还可采用"双描述符冗余":同一传输链存两份,DMA交替读取并比对,不一致时报警。

星载DMA控制器加固架构:功能通路与加固通路叠加 寄存器模型(控制面) GCTRL:使能 / 软复位 / 仲裁模式 CHx_CTRL / STAT / ADDR / LEN INT_EN / INT_STAT / INT_CLR 加固:TMR + 多数表决 + 周期回写 通道管理(仲裁与隔离) 4~16 通道:载荷 / 遥测 / 存储 固定优先级 + 同级轮询仲裁 通道级使能锁存 / 错误计数器 加固:单通道安全挂起,故障隔离 中断机制(可诊断事件) 完成 / 链耗尽 / 越界 / ECC错误 安全挂起 / 看门狗超时 中断聚合 + 详细标志位 加固:状态位TMR,防误报漏报 描述符结构(链式传输) 源地址 / 目的地址 / 长度 下一描述符指针 / 控制字段 CRC / ECC 校验字 加固:链边界保护 + 双份冗余比对 数据搬运通路 源端:载荷 / 存储器 / 总线 DMA 引擎:突发读 / 写 目的端:MRAM / SRAM / 下行 加固:总线奇偶 + 超时保护 遥测与诊断输出 纠错状态寄存器 通道错误计数 / 挂起标志 描述符校验失败记录 供软件决策:复位 / 降级 / 禁用 加固设计要点: ① 寄存器与中断状态位采用 TMR + 多数表决,配置寄存器周期回写刷新; ② 通道级隔离与安全挂起,单通道故障不扩散;描述符带 CRC/ECC 校验与链边界保护。

加固对控制器设计的整体影响

把上述四部分放在一起看,抗辐射加固对星载DMA控制器的影响可以归纳为三条设计原则。

第一,冗余要分层,不能只做整体TMR。寄存器、中断状态位适合TMR;描述符适合CRC/ECC加双份比对;数据通路适合总线奇偶加超时。不同对象翻转概率和后果不同,统一TMR会带来面积和功耗的浪费,而完全不加固又无法满足在轨寿命要求。

第二,错误必须可观测、可定位。加固不只是"防错",还要"报错"。每个通道的错误计数器、纠错状态寄存器和描述符校验失败记录,都是软件进行在轨健康管理的数据来源。没有这些遥测,地面只能看到"传输失败",无法判断是SEU、总线故障还是软件配置错误。

第三,降级策略要预先定义。当某通道连续出错时,控制器应能自动挂起该通道并通知软件,而不是反复重试导致总线拥塞。软件在收到安全挂起中断后,可根据任务阶段决定复位通道、切换到备份通道或永久禁用。这一策略必须在寄存器模型中预留控制位,在中断机制中预留事件源,在描述符结构中预留备份链入口,三者缺一不可。

在轨实践提示:星载DMA的寄存器读写时序通常比地面器件慢,驱动初始化时应先读取器件ID和版本寄存器确认通信正常,再配置通道;每次配置后回读校验,确认写入值未被表决器修正或总线干扰改变。

综上,星载DMA控制器的架构设计,本质是在通用DMA功能之上叠加一层"可诊断、可隔离、可降级"的加固框架。寄存器模型提供控制与观测入口,通道管理实现故障隔离,中断机制承担诊断通知,描述符结构保障链式传输的数据完整性。四者协同,才能让DMA在辐射环境中长期稳定地完成高速数据搬运任务。