2. SDM硬件架构:SDM内部模块划分、主处理器子系统、安全子系统、配置子系统、外设接口
Agilex 器件的 SDM(安全设备管理器)是一个高度集成的专用硬件单元,负责整个芯片的生命周期管理,包括上电初始化、配置加载、安全认证、电源管理以及系统监控。理解 SDM 的内部架构是掌握 HPS 与 FPGA 协同配置的基础。SDM 并非一个简单的状态机,而是一个包含多个独立子系统的微型计算平台。
2.1 SDM 内部模块划分总览
SDM 硬件架构由四大核心子系统构成,它们通过内部高速总线互联,协同完成从裸片上电到系统稳定运行的全过程。下表总结了各子系统的核心功能与定位:
| 子系统 | 核心组件 | 主要职责 | 关键特性 |
|---|---|---|---|
| 主处理器子系统 | ARM Cortex-M3 / M4 MCU | 运行 SDM 固件,调度配置流程,管理命令 | 低功耗、实时响应、固件可升级 |
| 安全子系统 | 安全处理器、加密引擎、PUF | 密钥管理、安全启动、位流解密与认证 | 硬件隔离、防篡改、符合 FIPS 标准 |
| 配置子系统 | 配置控制器、DMA、位流解析器 | FPGA 配置数据加载、重配置、错误恢复 | 多通道、高速、支持部分重配置 |
| 外设接口 | SPI、I2C、UART、JTAG、SD/MMC | 与外部存储、调试主机、板级器件通信 | 多协议支持、可配置引脚复用 |
架构视角: SDM 本质上是一个独立的 SoC(片上系统),拥有自己的 CPU、内存、总线和外设。它与 HPS 和 FPGA 阵列通过专用的内部配置总线(CVP 和 SDM 主接口)通信,而非通过传统的 AXI 互联。
2.2 主处理器子系统
主处理器子系统是 SDM 的“大脑”,通常基于一个 ARM Cortex-M3 或 Cortex-M4 处理器内核。它运行 Intel 提供的 SDM 固件,该固件实现了配置协议栈、命令解析、电源状态转换和错误处理逻辑。
- 处理器核心: 32位 ARM Cortex-M 系列,主频通常在 100-200 MHz 范围,具备单周期乘法器和嵌套向量中断控制器(NVIC),确保对配置事件的快速响应。
- 内部存储器: 包含片上 SRAM 用于固件运行和数据缓存,以及一次性可编程(OTP)存储区用于存储芯片唯一标识和熔丝配置。
- 固件角色: 固件是 SDM 的灵魂。它负责解析来自 HPS、JTAG 或外部存储器的配置命令,并将这些命令转化为对配置子系统的具体操作。固件可通过安全更新机制进行升级。
关键设计点: 主处理器在配置过程中处于“主控”地位。HPS 侧的软件(如 U-Boot 或 Linux 内核)通过发送邮箱消息(Mailbox)与 SDM 固件通信,而不是直接操作 FPGA 配置寄存器。这种设计实现了 HPS 与 FPGA 配置域的隔离,增强了系统安全性。
2.3 安全子系统
安全子系统是 Agilex 器件的信任根(Root of Trust)。它独立于主处理器运行,确保即使主处理器固件被攻破,密钥和加密操作也不会泄露。
- 安全处理器: 一个独立的、仅用于安全操作的微控制器,运行经过严格验证的安全固件。
- 加密引擎: 硬件加速的 AES、SHA、RSA 和 ECC 引擎,用于位流解密、签名验证和哈希计算。这些引擎直接与配置子系统交互,实现“零延迟”解密。
- 物理不可克隆函数(PUF): 利用芯片制造过程中的工艺差异生成唯一的、不可预测的密钥。PUF 密钥无需存储在非易失性存储器中,极大地提高了防物理攻击能力。
- 密钥存储: 提供安全的密钥存储区,支持多种密钥层级(如设备密钥、用户密钥、配置密钥)。
下图展示了安全子系统在配置流程中的核心位置:
2.4 配置子系统
配置子系统是 SDM 中负责实际数据传输和 FPGA 配置的硬件引擎。它设计用于高速、可靠地将配置数据从源(外部存储器、HPS 或 JTAG)搬运到 FPGA 配置端口。
- 配置控制器: 核心状态机,管理配置的各个阶段:复位、检测、加载、初始化、用户模式。它处理配置错误并触发重试或回退机制。
- DMA 引擎: 直接内存访问控制器,负责从外部存储器(如 QSPI Flash)或内部缓冲区高速读取数据,无需主处理器干预。DMA 通道支持链式描述符,可实现复杂的配置序列。
- 位流解析器: 实时解析 FPGA 位流格式,提取配置包、同步字、CRC 校验值和配置寄存器设置。它确保数据按 FPGA 阵列要求的时序和协议发送。
- 配置通道: 支持多种配置源(AS、PS、FPP、CVP),并通过专用的配置总线(如 Avalon-ST 配置接口)连接到 FPGA 逻辑阵列。
性能考量: 配置子系统的 DMA 引擎和位流解析器是影响配置速度的关键。在高速配置模式下(如 FPP x16),数据吞吐量可达数百 MB/s。设计者应确保外部存储器的读取速度能够匹配配置子系统的需求,避免成为瓶颈。
2.5 外设接口
SDM 的外设接口提供了与外部世界通信的物理层。这些接口在配置阶段用于加载初始位流,在运行阶段可用于系统管理、调试和固件更新。
| 接口 | 典型用途 | 配置模式 | 备注 |
|---|---|---|---|
| SPI / QSPI | 连接配置 Flash 存储器 | AS (Active Serial) | 最常用的配置接口,支持多片选和双/四线模式 |
| SD/MMC | 连接 SD 卡或 eMMC 设备 | AS (Memory Map) | 适用于大容量配置存储,支持 FAT 文件系统 |
| JTAG | 调试、边界扫描、初始编程 | PS (Passive Serial) | 通过 Intel Quartus Prime Programmer 控制 |
| I2C | 板级管理、读取温度/电压传感器 | N/A (系统管理) | 通常用于 SDM 固件读取板级状态 |
| UART | 控制台调试、固件日志输出 | N/A (调试) | 用于开发阶段的固件调试 |
下图展示了 SDM 外设接口与外部器件的连接关系:
2.6 子系统间协同工作流
以一个典型的“从 QSPI Flash 加载加密位流”为例,展示四个子系统如何协同工作:
- 上电复位: 主处理器子系统启动,执行 SDM 固件。固件初始化内部时钟和电源。
- 配置源检测: 主处理器通过外设接口子系统读取配置引脚(MSEL)状态,确定配置源为 QSPI Flash。
- 安全启动: 主处理器通知安全子系统验证 QSPI Flash 中的引导加载程序(Bootloader)签名。安全子系统使用 PUF 生成的密钥进行验证。
- 加载位流: 主处理器指示配置子系统的 DMA 引擎从 QSPI Flash 读取加密的 FPGA 位流。
- 解密与验证: 数据流经安全子系统,硬件解密引擎实时解密位流,并计算哈希值与存储的签名比对。
- 配置 FPGA: 验证通过后,明文位流被送入配置子系统的位流解析器,通过配置总线加载到 FPGA 阵列。
- 进入用户模式: 配置完成后,SDM 释放 FPGA 的复位信号,FPGA 进入用户模式开始运行。
架构总结: SDM 的模块化设计实现了关注点分离。主处理器负责“管理”,安全子系统负责“信任”,配置子系统负责“搬运”,外设接口负责“连接”。这种架构使得 Agilex 器件能够在保证最高安全等级的同时,提供灵活且高速的配置能力。