基于ZYNQ移动机器人控制器设计(3)控制器硬件方案选型(续)
引言
在移动机器人控制器的设计中,PS(Processing System) 与 PL(Programmable Logic) 之间的高效通信是实现实时感知、运动控制和算法加速的关键。本文聚焦于 ZYNQ 系列器件的接口技术,帮助读者了解 ZYNQ 如何通过内部总线体系突破传统 SoPC(System on a Programmable Chip)方案的瓶颈,掌握 AXI 总线族的选型原则,并简要介绍除 AXI 之外的其他常用接口。通过本篇内容,您将能够:
- 对比软核、硬核以及传统 FPGA+CPU 的组合方式的优缺点;
- 理解 Zynq‑7000 将 ARM Cortex‑A 系列处理器与高性能 FPGA 融合的设计意义;
- 熟悉 PS 与 PL 之间的三类通信方式:基于总线级别的接口、基于 EMIO 的接口以及其他方式;
- 掌握 AXI‑GP、AXI‑Lite 等协议在低速外设与高速数据通道中的实际应用场景。
下面我们从技术背景出发,逐层展开 ZYNQ 的接口技术细节。
1. 传统 SoPC 设计的局限
在 Zynq 出现之前,业界主要采用两种方式实现 FPGA 与处理器的协同:
- 在 FPGA 上实现软核(如 Xilinx 的 MicroBlaze、Altera 的 NIOS II)。
- 将 FPGA 与通用嵌入式处理器(如 ARM)配合,通过外部总线进行数据交换。
这两种方案各有明显瓶颈:
- 软核性能不足:软核的运行速度往往远低于硬核处理器,同时占用大量 FPGA 资源,导致可用于业务逻辑的资源被压缩。
- FPGA 与处理器通信瓶颈:当需要高带宽、低延时的大量数据传输时,外部总线的带宽和时延成为系统性能的主要限制因素。
2. Zynq‑7000 的优势
Zynq‑7000 是首款将 高性能 ARM Cortex‑A 系列处理器 与 高性能 FPGA 紧密耦合在单芯片上的产品。相较于传统的独立 Cortex‑A9 与 Xilinx 方案,Zynq‑7000 能够带来以下好处:
- 处理性能显著高于软核,克服了软核的性能瓶颈;
- 消除 FPGA 与 ARM 之间的通信瓶颈,实现高速、低时延的数据通路;
- 降低设计成本与风险:统一芯片降低了 PCB 布局复杂度,缩小了整体体积;
- 提升设计灵活性:通过可编程逻辑与处理系统的深度融合,能够快速实现功能迭代。
为了实现这些优势,Xilinx 在 Zynq 设计时不仅要解决不同工艺的处理器与 FPGA 融合问题,还必须在 片内器件与 FPGA 之间的互联通路 上进行精细规划。
3. ZYNQ 平台的框架
ZYNQ 平台的框架如图 3‑9 所示,事实上只要是位于 PS 和 PL 边缘的接口(红色框图标注),都可以纳入 PL 与 PS 间通信的范畴,只是它们在带宽、时延、灵活性等方面略有差异。纵观所有的接口,本论文把 PS 和 PL 的通信归结为三种:基于总线级别的接口;基于 EMIO;其他方式。下文我们将各自分述。

4. AXI 接口和协议
ZYNQ 内部的总线称为 AXI 总线。 作为一种可以支持构建异构系统的全新平台,其内部的总线体系必然比起常见的 SoC 有了新的变化。我们在做设计的时候,总是要结合通信的需求,并考虑备选方案的不同特性,选用不同的 AXI 接口类型。举个例子,在做一些低速外设的时候,使用 AXI_GP 总线设计 AXI_Lite 接口即可完成外设的控制,例如本论文中超声波模块 Ultrasonic IP 与 PS 的互联正是使用了 AXI_GP 中支持 lite 协议的接口。充分的了解是运用的前提,因此在此有必要对 AXI 总线进行一定程度的分析介绍。
首先是 AXI(Advanced eXtensible Interface) 协议。这是一种描述主从设备之间数据传输方式的片内总线协议。优势在于 高带宽、高性能、低延迟。
4.1 AXI 总线族的主要类型
| 类型 | 典型用途 | 关键特性 |
|---|---|---|
| AXI‑GP(General Purpose) | PS 与 PL 之间的通用数据通路 | 支持完整的 AXI 协议,可配置为 Full 或 Lite |
| AXI‑Lite | 低速寄存器访问 | 只支持单一读写通道,简化握手,适合外设控制 |
| AXI‑HP(High Performance) | 高速数据流(如视频、图像) | 多个读写通道,提供更高带宽 |
| AXI‑ACP(Accelerator Coherency Port) | 处理器缓存一致性 | 允许 PL 直接访问 PS 的缓存,实现零拷贝 |
在实际项目中,Ultrasonic IP 采用 AXI_GP 中的 Lite 协议进行 PS‑PL 互联,正是因为该外设对带宽需求不高,仅需寄存器级别的读写即可完成控制。
4.2 AXI‑Lite 的实现要点
- 地址映射:在 Vivado 中通过 “Address Editor” 为 AXI‑Lite IP 分配固定的地址空间;
- 时序约束:确保 AXI‑Lite 时钟频率与 PS 主时钟保持同步,以避免跨时钟域的亚稳态;
- 软件驱动:在 Linux 或裸机环境下,使用
xil_io.h提供的Xil_Out32/Xil_In32接口进行寄存器读写。
5. 其他接口
这里把剩下的放在一起做一下很简单的介绍。主要原因是前面的两种方式主要在 PS 和 PL 的通信中起数据传输作用,而且一般量会比较大。而其他的就主要就是一些信号,功能为主,数据传输只是实现功能的一个方式,一般量也比较小,比如像时钟呀。
常见的 EMIO(Extended Multiplexed I/O) 接口可以将 PL 侧的 GPIO、UART、SPI 等外设映射到 PS 的可编程引脚,实现灵活的 I/O 复用。除此之外,Zynq 还提供了 GT(Gigabit Transceiver)、MIO(Multiplexed I/O)、PL‑to‑PS 中断 等机制,用于满足特定的高速串行或低速控制需求。
6. 小结
Zynq‑7000 通过将 ARM Cortex‑A 系列处理器与高性能 FPGA 融合,为移动机器人控制器提供了 高性能计算 + 可编程硬件 的统一平台。其内部的 AXI 总线体系是实现 PS‑PL 高效通信的核心,设计者需要根据外设的带宽、时延和功能需求,合理选型 AXI‑GP、AXI‑Lite、AXI‑HP 或 AXI‑ACP。与此同时,EMIO、GT、MIO 等辅助接口为低速控制信号和高速串行链路提供了灵活的实现路径。掌握这些接口技术后,您即可在实际项目中构建出既满足实时性又具备可扩展性的移动机器人控制系统。