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 密钥无需存储在非易失性存储器中,极大地提高了防物理攻击能力。
  • 密钥存储: 提供安全的密钥存储区,支持多种密钥层级(如设备密钥、用户密钥、配置密钥)。

下图展示了安全子系统在配置流程中的核心位置:

SDM 安全子系统与配置流程 安全子系统在配置流程中的核心位置 外部存储 (QSPI / SD / NAND) 加密位流 安全子系统 解密引擎 签名验证 密钥管理 解密后位流 配置子系统 位流解析 DMA加载 错误检测 配置FPGA FPGA 主处理器子系统 调度与命令解析 控制/状态 说明: 安全子系统独立于主处理器运行。加密位流从外部存储进入 SDM 后,首先由安全子系统进行解密和验证, 只有通过验证的明文位流才会被传递给配置子系统。主处理器负责协调整个流程,但无法直接访问密钥。

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 外设接口与外部器件的连接关系:

SDM 外设接口连接图 SDM 外设接口与外部器件连接 SDM 主处理器子系统 安全子系统 配置子系统 QSPI Flash SPI SD / eMMC SDIO JTAG 调试器 JTAG 传感器/EEPROM I2C 控制台 UART 说明: SPI/SD 接口主要用于配置数据加载;JTAG 用于调试和初始编程;I2C/UART 用于系统管理和调试日志输出。

2.6 子系统间协同工作流

以一个典型的“从 QSPI Flash 加载加密位流”为例,展示四个子系统如何协同工作:

  1. 上电复位: 主处理器子系统启动,执行 SDM 固件。固件初始化内部时钟和电源。
  2. 配置源检测: 主处理器通过外设接口子系统读取配置引脚(MSEL)状态,确定配置源为 QSPI Flash。
  3. 安全启动: 主处理器通知安全子系统验证 QSPI Flash 中的引导加载程序(Bootloader)签名。安全子系统使用 PUF 生成的密钥进行验证。
  4. 加载位流: 主处理器指示配置子系统的 DMA 引擎从 QSPI Flash 读取加密的 FPGA 位流。
  5. 解密与验证: 数据流经安全子系统,硬件解密引擎实时解密位流,并计算哈希值与存储的签名比对。
  6. 配置 FPGA: 验证通过后,明文位流被送入配置子系统的位流解析器,通过配置总线加载到 FPGA 阵列。
  7. 进入用户模式: 配置完成后,SDM 释放 FPGA 的复位信号,FPGA 进入用户模式开始运行。
架构总结: SDM 的模块化设计实现了关注点分离。主处理器负责“管理”,安全子系统负责“信任”,配置子系统负责“搬运”,外设接口负责“连接”。这种架构使得 Agilex 器件能够在保证最高安全等级的同时,提供灵活且高速的配置能力。