1. Zynq平台与实时控制加速概览

Zynq-7000 系列属于 Xilinx(现 AMD)推出的全可编程片上系统(All Programmable SoC,APSoC)。它并不是把一颗 ARM 处理器和一颗 FPGA 简单封装在一起,而是在同一硅片上集成了处理系统(Processing System,PS)与可编程逻辑(Programmable Logic,PL)两大部分,并通过片内高带宽互连紧密耦合。理解这种"PS+PL"的异构结构,是后续做实时控制与 FPGA 加速设计的基础。

PS 部分本质上是一个完整的 ARM 处理子系统:双核 Cortex-A9、L1/L2 缓存、DDR 控制器、中断控制器(GIC)、DMA 控制器、以及 UART、SPI、I2C、以太网、USB、SD 等常用外设。PL 部分则是可编程逻辑阵列,包含查找表、触发器、DSP48E1 乘法累加单元、Block RAM,以及可配置的 I/O。两者之间不是"外挂"关系,而是通过 AXI 总线体系连接:PS 作为 AXI 主设备可以访问 PL 中的寄存器与存储器,PL 也可以作为 AXI 主设备反向访问 DDR 或 PS 外设,从而形成双向数据通路。

PS 与 PL 的协同通常通过几类接口完成。第一类是 AXI4-Lite,用于低速寄存器读写,适合配置加速器参数、读取状态标志;第二类是 AXI4(Full),用于突发式高吞吐数据传输,适合把采样数据块送入 PL 或把计算结果写回 DDR;第三类是 AXI4-Stream,用于无地址的连续流数据,适合 ADC 采样流、滤波输出流这类顺序处理;第四类是中断与事件信号,PL 完成一次计算后可通过中断通知 PS 取结果。实际设计中,往往同时使用多种接口:用 AXI4-Lite 配置、用 AXI4-Stream 传数据、用中断做同步。

为什么实时控制场景特别需要这种结构?以电机控制为例,典型的电流环控制周期在 10 kHz 到 100 kHz 之间,对应 10 μs 到 100 μs 的时间预算。在这段时间内要完成 ADC 采样、坐标变换(Clarke/Park)、PI 调节、SVPWM 生成等步骤。如果全部放在 Cortex-A9 上用软件执行,中断响应、缓存抖动、操作系统调度都会带来不确定的延迟,难以保证每个周期都在截止时间内完成。而把坐标变换、PWM 生成、过流保护等对时序敏感的部分放进 PL,用硬件并行执行,延迟可以做到确定且极短;PS 则负责上层控制策略、通信、人机界面等对实时性要求相对宽松的任务。这就是"PS 管策略、PL 管时序"的分工思路。

FPGA 加速的典型场景还包括:多通道数据采集与预处理、高速数字滤波(FIR/IIR)、FFT 频谱分析、图像预处理、编码器解码、以及自定义协议的硬实时收发。这些任务的共同特点是数据吞吐高、计算规则固定、对延迟敏感,正好适合用 PL 中的并行结构与 DSP 资源实现流水线加速。

不过,这种异构设计也带来若干挑战。其一是软硬件划分:哪些功能放 PS、哪些放 PL,需要权衡实时性、资源占用与开发复杂度。其二是数据搬运:PL 算得快,但如果数据在 PS 与 PL 之间搬运效率低,整体性能仍会被拖累,因此需要合理使用 DMA 与 AXI-Stream,减少 CPU 干预。其三是时序收敛:PL 逻辑要在目标时钟频率下满足建立/保持时间,控制环路中任何一级流水线延迟都会影响闭环带宽。其四是软硬件同步与一致性:PS 与 PL 共享 DDR 时,缓存一致性、数据可见性、中断响应都需要仔细处理。其五是调试难度:软硬件交界处的错误往往难以定位,需要借助 ILA 逻辑分析仪、SDK 调试器与性能计数器联合排查。

Zynq APSoC 的 PS–PL 协同与实时控制数据通路 PS 处理系统(ARM Cortex-A9) 双核 Cortex-A9 + L1/L2 缓存 运行控制策略、通信、人机界面 DDR 控制器 + 片内存储器 共享数据缓冲区、采样块、结果区 GIC 中断控制器 + DMA 响应 PL 中断、搬运数据块 外设:UART / SPI / I2C / ETH 上位机通信、传感器接口 实时控制任务(示例) 速度环 1 kHz · 位置规划 · 状态机 参数整定 · 故障处理 · 通信协议栈 PL 可编程逻辑(FPGA 阵列) 查找表 / 触发器 / DSP48E1 并行运算、乘法累加、流水线 Block RAM / URAM 采样缓存、系数表、FIFO 自定义 IP:坐标变换 / PI / PWM Clarke/Park、SVPWM、过流保护 AXI 接口与中断逻辑 寄存器映射、流接口、事件输出 硬实时任务(示例) 电流环 20 kHz · ADC 采样触发 PWM 生成 · 硬件保护 · 编码器解码 AXI 互连 Lite Full Stream 中断 配置 数据 状态 结果 分工原则:PS 负责策略与通信(毫秒级),PL 负责时序敏感运算(微秒级),AXI 互连承担数据与事件传递

从工程落地角度看,一个典型的实时控制加速系统可以这样组织:ADC 采样由 PL 中的触发逻辑在固定时刻启动,采样数据经 AXI4-Stream 进入 PL 内的滤波与坐标变换流水线;变换结果写入 Block RAM 或经 AXI4 突发写入 DDR;PL 在数据就绪后拉高中断信号,PS 收到中断后从 DDR 读取结果,执行速度环或状态机决策,再把新的电流指令通过 AXI4-Lite 写入 PL 中的 PI 调节器寄存器;PL 根据该指令在每个 PWM 周期内完成调节与 SVPWM 输出。整个过程中,PS 不参与微秒级的电流环计算,只处理毫秒级的上层逻辑,从而把实时性压力交给硬件。

需要强调的是,软硬件划分没有唯一答案。若控制算法复杂且迭代频繁,可以先把算法放在 PS 上验证,再逐步把热点迁移到 PL;若对延迟要求极高,则应从一开始就把关键路径设计为 PL 流水线。划分时可以用一个简单判据:任务周期是否小于 100 μs、是否对抖动敏感、是否规则可并行——满足越多,越适合放进 PL。