2. SDM 硬件架构:内部模块划分、时钟域与 FPGA Fabric 接口
Secure Device Manager (SDM) 是 Agilex 系列 SoC FPGA 的配置与安全核心。它并非一个简单的状态机,而是一个包含专用处理器、硬件加速器、多种通信外设和严格安全隔离的独立子系统。理解 SDM 的内部模块划分、时钟域结构以及它与 FPGA Fabric 的接口,是掌握双镜像安全启动流程的基础。
2.1 SDM 内部模块划分
SDM 硬件架构可划分为三大功能域:配置与控制域、安全域和通信域。各域之间通过内部总线与硬件 mailbox 进行隔离通信。
| 功能域 | 核心模块 | 主要职责 |
|---|---|---|
| 配置与控制域 | 配置控制器 (Configuration Controller)、SPI/OSC 时钟管理、复位控制器 | 管理 FPGA 配置数据流、控制配置序列、处理配置错误、管理全局复位 |
| 安全域 | 安全处理器 (Secure Processor)、硬件加密引擎 (AES/SHA/ECDSA)、密钥存储单元 (eFuse/OTP)、安全状态机 | 执行安全启动验证、密钥管理、加密/解密配置比特流、防回滚保护 |
| 通信域 | Mailbox 接口、JTAG 控制器、SPI/I2C 主控制器、SDM-Fabric 桥接器 | 提供与 FPGA Fabric、外部配置器件 (EPCQ/EPCS)、调试工具 (JTAG) 的数据交换通道 |
关键设计理念:安全域与配置控制域在物理上隔离。安全处理器拥有独立的内部存储和总线,配置控制器无法直接访问密钥材料。这种“安全隔离”架构确保即使配置流程被破坏,密钥也无法被窃取。
2.2 SPI/OSC 时钟域分析
SDM 内部存在两个独立的时钟域,分别服务于不同的功能阶段:
- OSC 时钟域 (Oscillator Clock Domain): 由外部晶振或差分时钟源提供,频率通常为 25 MHz 或 50 MHz。该时钟域为 SDM 内部的安全处理器、加密引擎和配置控制器提供基础运行时钟。在 FPGA 未配置前,OSC 时钟是 SDM 唯一可用的时钟源。
- SPI 时钟域 (SPI Clock Domain): 由 SDM 内部 SPI 控制器产生,用于与外部 SPI 闪存 (EPCQ-Lite/EPCS) 进行数据交换。SPI 时钟频率可通过软件配置,典型值为 40 MHz ~ 108 MHz。该时钟域与 OSC 时钟域是异步的,通过内部异步 FIFO 进行跨时钟域同步。
时钟域隔离的意义:在安全启动的早期阶段(如读取 BootROM、验证配置头),SPI 闪存尚未初始化,SDM 完全依赖 OSC 时钟域运行。只有当 SPI 控制器初始化完成后,SPI 时钟域才被激活。这种设计避免了在安全验证完成前引入不可控的外部时钟源。
2.3 SDM 与 FPGA Fabric 的接口
SDM 与 FPGA Fabric 之间的通信通过一组专用的硬件接口实现,这些接口在配置完成后仍可被用户逻辑使用。主要接口包括:
- Mailbox 接口: 这是 SDM 与 Fabric 之间最主要的控制/状态通道。Fabric 中的用户逻辑通过 Avalon-MM 从端口向 SDM 发送 mailbox 命令(如读取温度、触发重配置、查询安全状态)。SDM 通过中断或轮询方式响应。
- SDM 命令总线 (SDM Command Bus): 一组专用的并行总线,用于传输配置数据、安全命令和调试信息。该总线在配置阶段由 SDM 主动驱动,在用户模式可由 Fabric 逻辑发起请求。
- 配置数据流接口: 包括比特流加载通道 (Configuration Data Path) 和配置状态监测信号 (nSTATUS, CONF_DONE, INIT_DONE)。这些信号在配置过程中由 SDM 直接控制,配置完成后可释放为通用 I/O。
接口使用注意事项:Mailbox 接口的访问需要遵循特定的协议序列。在安全启动流程中,Fabric 逻辑必须在 SDM 完成所有安全验证并释放 Fabric 复位后,才能通过 Mailbox 发送命令。过早的访问可能导致 SDM 状态机锁定。
2.4 关键硬件特性总结
下表总结了 SDM 硬件架构中与双镜像安全启动直接相关的关键特性:
| 特性 | 描述 | 对安全启动的影响 |
|---|---|---|
| 独立安全处理器 | SDM 内部集成一个独立的 ARM Cortex-M 级处理器,运行专用固件 | 在 FPGA 配置前即可执行安全验证代码,不受 Fabric 状态影响 |
| 硬件加密加速器 | 支持 AES-256/GCM、SHA-256/384、ECDSA P-384 等硬件加速 | 实现比特流实时解密与签名验证,不影响配置吞吐量 |
| 双镜像支持 | SDM 可管理两个独立的配置镜像区域,并支持回滚机制 | 当主镜像验证失败时,自动加载备份镜像,实现安全启动容错 |
| eFuse 密钥存储 | 一次性可编程存储,用于存储根密钥和芯片身份 | 防止密钥被篡改或读取,建立硬件信任根 |
| Mailbox 中断机制 | Fabric 可通过中断方式向 SDM 发送请求 | 支持运行时安全状态查询和动态重配置 |
架构设计启示:SDM 的硬件架构体现了“安全启动优先”的设计哲学——在 FPGA Fabric 尚未配置、用户逻辑尚未运行之前,SDM 已经作为一个独立的可信执行环境开始工作。这种架构确保了安全启动流程的完整性和不可绕过性。