2. Versal芯片内部架构总览

Versal 与以往 FPGA、Zynq MPSoC 最大的不同,在于它不再把“可编程逻辑 + 处理器”当作全部,而是把多种异构计算引擎放进同一颗芯片,并用一套片上网络(NoC)把它们连成一个整体。理解 Versal,关键不是记住每个模块的名字,而是看清“谁负责计算、谁负责搬运、谁负责管理、谁负责对外接口”这四类角色如何分工与协同。

一、六大资源的分工定位

从功能角色看,Versal 内部资源可以分成三层:管理控制层、计算加速层和互连与接口层。

  • PMC(Platform Management Controller,平台管理控制器):芯片的“上电管家”。它负责上电时序、启动流程(BootROM、PLM)、器件配置、安全启动、电源与温度监控。PMC 内部包含一颗独立的 MicroBlaze 处理器,运行平台加载器(PLM),在 PS 和 PL 尚未就绪时先行接管芯片。
  • PS(Processing System,处理系统):以 Arm Cortex-A72/Cortex-R5F 为核心的应用处理域,负责运行 Linux、裸机或实时操作系统,承担控制面、协议栈、任务调度和与外部主机的交互。
  • PL(Programmable Logic,可编程逻辑):由可配置逻辑块、Block RAM、UltraRAM 和 DSP58 切片组成,用于实现自定义数据通路、接口逻辑和硬核 IP(如 PCIe、以太网、DDR 控制器)。
  • AI Engine(AI 引擎):由 AI Engine 阵列(AIE Array)和 AI Engine-ML 组成,是面向向量、矩阵和 DSP 运算的 VLIW/SIMD 处理器阵列,适合 5G 基带、雷达、图像和推理类负载。
  • DSP Engine(DSP58 切片):位于 PL 内部的硬核乘法累加单元,支持 27×18 乘法、浮点运算和级联,是传统 DSP 算法(FIR、FFT、波束成形)的主力。
  • NoC(Network on Chip,片上网络):横向贯穿芯片的互连骨干,提供从 PL、PS、AI Engine、DDR、PCIe 等端点之间的高带宽、低延迟数据搬运通道。

二、NoC 是协同的“中枢神经”

NoC 由多条水平 NoC 列(NoC Column)和垂直的 NoC 主/从接口组成,端点通过 NMU(NoC Master Unit)发起读写,通过 NSU(NoC Slave Unit)接收访问。它把 DDR 控制器、PL 的 AXI 接口、PS 的 AXI 端口、AI Engine 的共享内存接口以及 PCIe、以太网等硬核都挂接在同一张网络上。

NoC 的价值在于“卸载搬运”。传统设计中,数据从 DDR 到 PL 再到 DDR 往往要经过 PS 的 AXI 总线,占用处理器带宽;而在 Versal 中,PL 或 AI Engine 可以直接通过 NoC 访问 DDR,PS 只负责发起和配置。这样,PS 从“数据搬运工”变成“调度者”,AI Engine 和 PL 则专注计算。

三、典型协同数据流

以“雷达信号处理”为例:ADC 数据经 PL 的 JESD204B 接口进入,先由 PL 做数字下变频和通道化,再通过 NoC 写入 DDR;AI Engine 从 DDR 读取数据,完成脉冲压缩和 Doppler 处理;结果再经 NoC 送回 PL 或 PS,由 PS 做目标跟踪和上位机通信。整个链路中,PMC 负责上电和配置,PS 负责控制,NoC 负责搬运,AI Engine 和 DSP58 负责计算。

Versal 主要计算与互连资源协同关系 PMC 平台管理控制器 BootROM / PLM / 安全启动 PS Cortex-A72 / R5F Linux / 控制面 / 协议栈 PL 可编程逻辑 + DSP58 自定义数据通路 / 接口 NoC 片上网络 NMU 主接口 / NSU 从接口 水平 NoC 列 + 垂直互连 DDR 控制器 PCIe / 以太网 AI Engine 接口 PL AXI 接口 AI Engine AIE / AIE-ML 阵列 向量 / 矩阵 / 推理 DSP Engine DSP58 切片 FIR / FFT / 波束成形 DDR / 外部存储 数据缓冲 / 共享内存 配置/管理 AXI 控制 AXI 数据 共享内存 数据流 读写 协同要点: PMC 负责上电与配置 → PS 负责控制与调度 → NoC 负责高带宽搬运 → AI Engine / DSP58 / PL 负责计算 → DDR 作为共享数据缓冲。 数据路径与配置路径分离:配置走 PMC/PS,数据走 NoC,避免处理器成为带宽瓶颈。

四、配置路径与数据路径的分离

Versal 的一个核心设计思想是“配置路径”和“数据路径”分离。上电时,PMC 从 QSPI、SD 或 eMMC 读取启动镜像,加载 PLM,再由 PLM 配置 PS、PL 和 AI Engine。这个过程走的是配置网络,不占用 NoC 的数据带宽。系统运行后,PS 通过 AXI 或 NoC 配置各计算单元的寄存器,而真正的数据流则走 NoC 和 DDR。

这种分离带来的直接好处是:PS 不必为每个数据包做搬运,AI Engine 和 PL 可以独立访问 DDR,NoC 提供确定性的带宽和 QoS 保障。对于需要多通道、高吞吐的应用,NoC 的 QoS 配置可以给不同数据流分配不同的优先级和带宽上限。

五、一个可参考的资源配置示例

假设一个 5G 基带处理任务,需要处理 4 个 100 MHz 带宽的通道。可以这样分配资源:

资源 承担任务 关键参数示例
PL JESD204B 接口、数字下变频、通道化 4 通道 × 100 MHz,AXI4-Stream 位宽 128 bit
NoC PL 到 DDR、DDR 到 AI Engine 的数据搬运 读带宽约 8 GB/s,写带宽约 6 GB/s,QoS 优先级 3
AI Engine 信道估计、均衡、解调 占用 32 个 AIE 核,每核 1 GHz,向量宽度 256 bit
DSP58 辅助滤波和 FFT 占用 48 个 DSP58,工作频率 500 MHz
PS 协议栈、任务调度、上位机通信 Cortex-A72 双核 1.5 GHz,运行 Linux
PMC 上电配置、安全启动、温度监控 PLM 运行频率 200 MHz,启动时间约 200 ms

上表中的参数属于教学示例,用于说明资源分配思路,并非实测结果。实际工程中需要根据带宽、延迟、功耗和面积约束反复迭代。

六、协同关系中的常见误区

第一个误区是把 PS 当作数据搬运中心。在 Versal 中,如果所有数据都经过 PS 的 AXI 端口,PS 很快会成为瓶颈。正确做法是让 PL 和 AI Engine 通过 NoC 直接访问 DDR,PS 只做控制。

第二个误区是忽视 PMC 的独立性。PMC 在 PS 启动之前就已经工作,如果启动镜像配置错误,PS 和 PL 都无法正常加载。因此,启动流程的调试往往要从 PMC 的 PLM 日志入手。

第三个误区是把 AI Engine 和 DSP58 看作互斥资源。实际上,AI Engine 适合高密度向量运算,DSP58 适合确定性强的定点/浮点乘加,两者可以通过 NoC 和共享内存协同,形成“AI Engine 做主体计算、DSP58 做辅助滤波”的分工。

理解要点:Versal 的架构可以概括为“PMC 管启动、PS 管控制、NoC 管搬运、AI Engine 和 DSP58 管计算、PL 管接口和自定义逻辑、DDR 管缓冲”。记住这条主线,再看具体器件的资源分布,就不会迷失在模块名称里。

总体来看,Versal 不是简单地把多个模块堆在一起,而是通过 NoC 和共享存储把它们组织成一个异构计算平台。设计者的核心任务,是根据算法特征把计算任务映射到最合适的引擎上,并规划好数据在 NoC 和 DDR 之间的流动路径。只有理解了这种分布与协同关系,后续的 PL 设计、AI Engine 编程和 PS 软件开发才能有的放矢。