2. Versal ACAP架构与工业控制映射
Versal ACAP(Adaptive Compute Acceleration Platform,自适应计算加速平台)是 AMD 面向异构计算推出的 SoC 级平台。它并不是把 FPGA 简单升级,而是把四类计算资源放进同一颗芯片,通过片上网络(NoC)与内存控制器连接起来。理解这四类引擎各自“擅长什么、不擅长什么”,是后续把工业控制算法、通信协议和硬件加速合理分配到不同引擎上的前提。
四类引擎的定位
Versal ACAP 的核心计算资源可归纳为四类:
- 标量引擎(Scalar Engine,PS):即处理系统,通常包含多核 Arm Cortex-A72 应用处理器与 Cortex-R5F 实时处理器。它擅长运行操作系统、协议栈、状态机、参数管理与任务调度,是控制系统的“大脑”。
- 自适应引擎(Adaptive Engine,PL):即可编程逻辑,由可配置逻辑块、DSP58 切片、Block RAM/UltraRAM 等构成。它擅长硬实时、确定性延迟、并行位操作与自定义接口时序,是工业通信与高速采样的“手脚”。
- 智能引擎(AI Engine,AIE):由向量处理器阵列与专用互连组成,擅长高吞吐的定/浮点向量运算、滤波、矩阵运算与推理,是信号处理与轻量 AI 的“算力池”。
- 可编程逻辑中的硬核与接口资源:包括 GTY/GTYP 高速收发器、以太网 MAC、PCIe、DDR 控制器等,它们把上述引擎与外部工业网络、传感器、执行器连接起来。
这四类资源并非彼此独立,而是通过 NoC、AXI 总线、共享内存和中断协同工作。工业控制系统的设计,本质上就是决定“哪一段任务放在哪一类引擎上”。
工业控制任务的映射原则
把任务映射到引擎上,核心判断依据是实时性等级、计算密度和接口归属。工业控制中常见的任务大致可分为三类:
第一类是硬实时通信与接口时序。例如 EtherCAT 从站控制器需要在每个周期内精确收发帧,抖动通常要求小于 1 微秒;PWM 生成、编码器解码、ADC 采样触发也属于这一类。这些任务必须放在 PL 中,用逻辑和 DSP 切片实现,因为只有 PL 能提供确定性的纳秒级响应。PS 上的 Linux 或 RTOS 无法保证这种级别的抖动。
第二类是控制算法与信号处理。电流环、速度环、位置环的带宽从几千赫兹到几十千赫兹不等。如果控制周期在 10 微秒以内,且算法以乘加、滤波、坐标变换为主,适合放在 AIE 或 PL 的 DSP 切片中。AIE 的优势在于向量化处理和级联流水线,适合多通道 FIR、FFT、Park/Clarke 变换等;PL 则更适合与接口紧密耦合、需要逐拍处理的逻辑。
第三类是协议栈、状态管理与系统调度。例如 EtherCAT 主站协议栈、OPC UA 服务器、设备状态机、参数配置、日志记录、HMI 通信等。这些任务对实时性要求相对宽松(毫秒级),但逻辑复杂、需要操作系统支持,放在 PS 的 Cortex-A72 上运行 Linux 或 RTOS 最为合适。Cortex-R5F 则可用于安全关键或更高确定性的辅助控制。
一个典型的映射示例
假设要设计一台多轴伺服驱动器,控制周期 62.5 微秒(16 kHz),通过 EtherCAT 与上位 PLC 通信,同时需要采集三路电流和一路编码器。一个合理的映射方案如下:
| 任务 | 目标引擎 | 理由 |
|---|---|---|
| EtherCAT 从站帧收发 | PL | 需要纳秒级确定性,硬核 MAC + 逻辑实现 |
| 电流采样与 Clarke/Park 变换 | AIE | 多通道向量运算,适合流水线并行 |
| 电流环 PI 控制 | AIE 或 PL DSP | 16 kHz 周期,乘加密集,延迟要求高 |
| PWM 生成与死区控制 | PL | 与功率级直接耦合,需要精确时序 |
| 速度环 / 位置环 | PS Cortex-R5F | 周期较慢,逻辑复杂,需要浮点与状态管理 |
| EtherCAT 协议栈与参数管理 | PS Cortex-A72 | 运行 Linux,处理非实时任务与网络配置 |
在这个方案中,PL 负责“快而确定”的接口与执行,AIE 负责“密而并行”的运算,PS 负责“杂而灵活”的管理。三者通过 NoC 和共享内存交换数据:PL 把采样值写入 BRAM 或流接口,AIE 读取后完成变换与控制计算,结果再送回 PL 生成 PWM,同时通过中断通知 PS 更新状态。
映射时需要注意的约束
实际工程中,映射不是一次就能定好的,需要关注几个约束。第一是数据搬运开销:把数据从 PL 搬到 AIE 再搬到 PS,每一跳都有延迟和带宽成本,如果控制周期很短,搬运时间可能超过计算时间。第二是资源占用:AIE 的向量寄存器、PL 的 DSP 和 BRAM 都是有限资源,多轴系统需要仔细核算。第三是同步与中断:PL、AIE、PS 之间的同步如果依赖轮询,会浪费算力;合理使用中断和事件信号才能保证周期稳定。第四是开发工具链:PL 用 Vivado/Vitis,AIE 用 AI Engine 编译器,PS 用 Vitis 或 PetaLinux,不同引擎的代码需要统一到同一个平台工程中。
总结来说,Versal ACAP 的工业控制映射,本质上是把“实时性、计算密度、接口归属”三个维度与“PS、PL、AIE、硬核接口”四类资源做匹配。PS 管调度与协议,PL 管时序与接口,AIE 管向量运算,硬核接口管物理连接。理解这条主线,后续在具体协议实现和算法部署时,就能快速判断一段代码应该放在哪里。