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