目录
1. 简介
本博文整理 Versal SoC 的系统架构,包括处理系统 (PS)、可编程逻辑 (PL)、平台管理控制器 (PMC) 以及它们之间的互联方式。本博文还将介绍关键的调试模块、互联架构以及一些有用的概念和设置,以便后续更好地理解和使用 Versal SoC。
2. Versal SoC 系统
2.1 系统结构框图
主要电源域:
| Power Domain | Description |
|----------------------------|---------------------------------------------------------------------------------------------|
| PMC power domain | Includes the RCU, PPU, PMC flash controllers, PMC I2C controller, and PMC GPIO controller. |
| | This is the power domain for device start-up. |
| Low-power domain (LPD) | Includes the RPU, PSM, two SPI controllers, two LPD I2C controllers, LPD GPIO controller, |
| | UART controller, USB controller, PS gigabit Ethernet MAC, CAN FD controller, LPD SWDT, |
| | and CPM5 (device option) with its CPipe and GTYPs. |
| Full-power domain (FPD) | Includes the APU, SMMU, CCI, and FPD SWDT. |
| Battery power domain (BPD) | Includes the real-time clock (RTC) and the battery-backed RAM (BBRAM). |
| System power domain (SPD) | Includes the NoC, NPI, DDR controller. |
| PL power domain | Includes the programmable logic, PL GTs, integrated hardware and hardware options, and |
| | the PCIe coherency module (CPM, when present). |
PLM 和 PSM:
特性 |
PLM |
PSM |
主要功能 |
整个Versal器件的启动和运行时管理,是Versal器件的核心管理组件。 |
负责Versal器件中PS子系统的运行时管理。 |
管理范围 |
涵盖整个器件,包括PS、PL以及互联资源。 |
仅限于PS子系统内部,例如处理器、存储器控制器、外设等。 |
启动过程 |
负责器件的初始化启动,包括加载比特流、配置器件部分。 |
在PLM启动后,由PLM加载并运行,负责PS部分的初始化和管理。 |
运行时管理 |
提供平台管理、错误恢复、部分重配置、子系统重置等功能。 |
提供PS子系统运行时的管理,例如电源管理、时钟管理、中断管理等。 |
通信 |
是系统中的主控,与其他模块(包括PSM)进行通信和协调。 |
与PLM通信,接收PLM的指令和向PLM报告状态。 |
代码类型 |
通常包含底层的硬件初始化代码、配置代码、错误处理代码等。 |
通常包含操作系统的驱动程序、应用程序,以及针对PS子系统的管理代码。 |
2.2 PMC 框图
Versal 中的 PMC(平台管理控制器)有两个平台处理单元 (PPU),分别运行 Boot ROM 和 PLM。 PLM 在 PMC 中的 PPU Microblaze 上运行。 PPU 具有 384 KB 的 PPU RAM 和 128 KB 的 PMC RAM。 PLM 作为 Loader 的一部分负责系统初始化、启动和各种设备的配置。它还负责安全启动,即身份验证和/或解密。初始启动完成后,PLM 负责错误管理、部分重新配置、子系统关闭/重新启动、运行状况监控和软错误缓解,并在系统的整个生命周期中保持活动状态。
在初始引导期间,Boot ROM 解码可编程设备映像(PDI)并将 PLM 加载到 PPU RAM 中。一旦 PLM 开始运行,它将解码并处理 PDI 的其余部分,并通过加载 PDI 中存在的分区来启动系统。 PLM 还支持在运行时加载部分 PDI。
2.3 系统互联架构
2.4 PS 互联架构
XMPU,Xilinx Memory Protection Unit
XMPU,内存保护单元,用于验证传输事务是否被明确允许访问某个内存地址。XMPU 是一个基于区域的内存保护单元。
XPPU,Xilinx Peripheral Protection Unit
XPPU,外设保护单元,保护系统可寻址编程寄存器,使其免受错误应用程序软件和行为异常的硬件接口的影响。
XPPU 检查多个事务属性,以确定是否应允许事务正常进行。这些属性包括 44 位物理地址、AxPROT[1] 安全位以及在 AxUSER 命令信号中编码的系统管理 ID (SMID) 位。这些属性用于限制对内存映射外围接口的访问。
XRAM,Accelerator RAM
XRAM,位于 PS LPD 中(如果存在),大小为 4 MB。
XRAM 包括来自 LPD 中 OCM 开关的一个端口,来自 PL 的三个端口。每个端口都包含一个内存保护单元 (XMPU)。
2.5 APU 系统架构
TBU,Translation Buffer Units
系统内存管理单元(SMMU)支持内存虚拟化以及对外设和内存的访问保护。SMMU 的主要功能包括:
- 地址转换单元限制内存空间
- 事务安全状态控制
- 内存和外设访问保护
这些功能通过结合使用 TBU(TBU 0 到 n)来执行。这些单元位于从 FPD 外部到 CCI 的传入 AXI 接口路径中。缓存在 TBU 中的转换和保护表由 SMMU 转换控制单元 (TCU) 更新。