2. Zynq SoC架构总览

Zynq-7000系列的本质,是把一颗完整的ARM处理器系统(Processing System,PS)和一片FPGA可编程逻辑(Programmable Logic,PL)集成在同一硅片上,并用高带宽片内互连把两者紧密耦合。理解Zynq,第一步不是记住某个模块的名字,而是建立"PS是主控、PL是加速与扩展、接口是桥梁"的整体图景。本节围绕PS与PL的划分、PS内部主要模块、PL资源构成,以及PS-PL接口类型与带宽特征展开。

PS与PL的职责划分

PS是"硬核",其电路在芯片制造时已经固化,包含应用处理单元(APU)、实时处理单元(RPU)、图形处理单元(GPU)、DDR控制器、片上存储器、外设控制器以及中央互连。PS上电后可独立运行操作系统(如Linux、FreeRTOS),不依赖PL即可工作。PL是"软核"区域,由可配置逻辑块、块存储器、DSP切片等构成,功能由用户通过比特流定义,适合实现并行算法、自定义外设、高速接口协议等。

划分的实践含义是:顺序控制、协议栈、文件系统、网络服务等放在PS;需要确定性时序、大规模并行、低延迟响应的任务放在PL。两者通过AXI接口交换数据与控制信号,形成"PS管流程、PL管吞吐"的典型分工。

PS内部模块构成

APU是PS的计算核心,Zynq-7000通常集成双核ARM Cortex-A9,每核带NEON媒体处理引擎和浮点单元,共享512KB二级缓存,各自拥有32KB指令与数据一级缓存。APU负责运行主操作系统和应用软件。

RPU是双核ARM Cortex-R5,主打实时性与功能安全,常用于电机控制、工业实时环路等对抖动敏感的场景。GPU为ARM Mali-400 MP2,支持2D/3D图形加速,适合人机界面渲染。DDR控制器支持DDR2/DDR3/DDR3L,提供PS与PL共享的外部大容量存储访问通道。

外设方面,PS集成了千兆以太网、USB、SD/SDIO、UART、SPI、I2C、CAN、GPIO等控制器,以及片上存储器(OCM,约256KB)。这些外设通过中央互连与APU、DDR、PL连接。中央互连是PS内部的"交通枢纽",负责在多个主设备(APU、RPU、DMA、PL主口)与从设备(DDR、OCM、外设)之间仲裁和路由。

PL资源构成

PL的基本资源包括:查找表(LUT),用于实现组合逻辑;触发器(FF),用于时序存储;块存储器(BRAM,36Kb一块),用于片上数据缓存与FIFO;DSP切片,用于乘法累加等算术运算;以及部分器件提供的超大规模存储器URAM(288Kb一块,Zynq UltraScale+中常见)。

资源估算决定实现可行性。例如一个32位加法器约消耗32个LUT;一个18×18乘法器可用1个DSP切片实现;一个深度1024、位宽32的FIFO约需1块BRAM。设计前应先用综合工具的资源报告核对LUT、FF、BRAM、DSP占用是否在器件容量内,避免布局布线阶段才发现资源不足。

Zynq-7000 PS-PL 架构与接口带宽示意 PS 处理系统(硬核) APU 双核 Cortex-A9 + NEON RPU 双核 Cortex-R5 实时 GPU Mali-400 MP2 DDR 控制器 DDR2/3/3L 外设控制器 GbE / USB / SD / UART / SPI / I2C / CAN / GPIO 中央互连 + OCM 256KB 主/从设备仲裁与路由 PS-PL 接口 GP(通用)· HP(高性能)· ACP(加速器一致) M_AXI_GP · S_AXI_HP · S_AXI_ACP PL 可编程逻辑(软核) LUT 组合逻辑 约 32 LUT / 32位加法器 FF 时序存储 寄存器/流水 BRAM 36Kb / 块 FIFO / 缓存 DSP 乘法累加 18×18 乘法器 URAM(部分器件) 288Kb / 块,大容量片上存储 自定义外设 / 加速器 / 高速接口 AXI 主/从端口接入 PS-PL 接口 并行算法 · 协议实现 · 时序控制 AXI 数据/控制 接口带宽量级:GP 约 600MB/s 级 · HP 每口约 1.2GB/s 级 · ACP 与 APU 缓存一致,适合低延迟共享

PS-PL接口类型与带宽特征

PS与PL之间通过AXI接口连接,主要分为三类。第一类是通用接口GP(General Purpose),包括M_AXI_GP和S_AXI_GP,位宽32位,主要用于寄存器配置、低速控制与状态读取,单口带宽约600MB/s量级,适合传输命令而非大块数据。

第二类是高性能接口HP(High Performance),即S_AXI_HP,PL作为主设备直接访问DDR与OCM。Zynq-7000通常提供4个HP口,每个口位宽64位,独立读写通道,单口理论带宽约1.2GB/s量级,是PL搬运大块数据(如图像帧、采样缓冲)的主力通道。

第三类是加速器一致接口ACP(Accelerator Coherency Port),PL通过它访问APU的缓存,保持与CPU缓存的一致性,延迟低,适合PL与CPU频繁共享小数据结构的场景,但带宽通常低于HP口。

带宽估算示例:假设PL通过一个HP口以100MHz时钟、64位位宽连续传输,理论带宽为100M×8B=800MB/s;若实际有效传输占空比为70%,则有效带宽约560MB/s。若一帧图像为1920×1080×2B≈4.15MB,则单帧传输时间约4.15MB÷560MB/s≈7.4ms,对应约135帧/秒的上限。这个估算帮助判断接口是否满足实时性要求。

选择接口的原则:控制与配置走GP,大块数据搬运走HP,需要与CPU缓存一致的低延迟共享走ACP。多个HP口可并行使用以叠加带宽,但需注意DDR控制器本身的总带宽是共享上限。

资源与接口的协同设计

实际设计中,PS与PL的划分不是一次确定的,而是随资源占用和带宽需求迭代调整。例如一个视频处理系统,PS运行Linux负责网络与文件系统,PL实现缩放与滤波。缩放模块消耗若干DSP与BRAM,通过HP口读取DDR中的帧缓冲,处理后再经HP口写回。若发现HP口带宽不足,可增加第二个HP口分担读写,或降低分辨率与帧率。若LUT或BRAM超限,则需简化算法或复用存储。

因此,掌握PS内部模块、PL资源类型与PS-PL接口带宽,是后续进行软硬件划分、资源估算和性能调优的基础。只有把"谁负责什么、数据走哪条路、带宽够不够"这三件事同时想清楚,Zynq的设计才不会在集成阶段反复返工。