ZYNQ架构
ZYNQ-7000 是 Xilinx 首款 SoC 级 FPGA:
- PS(Processing System)是硬核双核 ARM Cortex-A9 处理子系统(顺序执行软件)
- PL(Programmable Logic)是可编程逻辑阵列(并行执行硬件电路)
两者通过 9 条 AXI 接口互联。PS 管 "控制、协议栈、操作系统",PL 管 "高速并行数据通路、算法加速"。
ZYNQ 整体架构图

1、PS 处理系统(Processing System)详解
PS 是硬核固定逻辑(ASIC 实现,不可修改),出厂即定型,相当于一颗 "双核 A9 应用处理器"。
1.1 应用处理单元 APU
| 组件 | 规格 |
|---|---|
| 处理器 | 双核 ARM Cortex-A9 MPCore |
| 主频 | 667MHz(-1)/ 800MHz(-2)/ 1GHz(-3)速度等级 |
| L1 Cache | 每核 32KB 指令 + 32KB 数据(哈佛结构) |
| L2 Cache | 512KB 共享,8 路组相联 |
| 一致性 | SCU(Snoop Control Unit)监听控制单元,保证双核 L1 与 L2 一致性 |
| 协处理器 | 每核 NEON SIMD 引擎 + VFPv3 双精度浮点 |
1.2 存储子系统
- OCM:256KB 片上 SRAM(低延迟),其中 128KB 可通过 AXI_HP 被 PL 访问
- DDR 控制器:支持 DDR2/DDR3/DDR3L/LPDDR2,16/32bit 位宽,最高 DDR3-1066,支持 ECC
- 静态存储器控制器:Quad-SPI Flash、8bit NAND、8bit NOR
1.3 外设(通过 54 个 MIO 引脚引出)
2×UART、2×SPI、2×I2C、2×CAN、2×USB 2.0 OTG、2× 千兆以太网(RGMII/SGMII)、2×SD/SDIO、3×TTC 三路定时器、1×SWDT 看门狗、GPIO(54 MIO + 64 EMIO)。
1.4 基础设施
- PL330 DMAC:8 通道 DMA,可被 PL 触发使用
- GIC:全局中断控制器(SGI/PPI/SPI 三类中断源)
- 时钟:3 个 PLL(ARM PLL、DDR PLL、IO PLL),由 PS_CLK(典型 33.33MHz)倍频产生;输出 FCLK0~3 四路时钟给 PL
- 启动:BootROM 支持 QSPI / NAND / SD / JTAG 等多级启动(MIO [2:8] 选择启动模式)
2、PL 可编程逻辑(Programmable Logic)详解
PL 是7 系列 FPGA 架构(SRAM 配置,可无限重配置),资源随型号伸缩。
2.1 CLB 逻辑资源
- 1 个 CLB = 2 个 slice;1 个 slice = 4 个 6 输入查找表(LUT6) + 8 个触发器(FF)
- LUT 可配置为 6 输入逻辑、双 5 输入逻辑、64×1 分布式 RAM 或 32 位移位寄存器(SRL32)
- 逻辑单元数 = LUT + FF 的总计(Z-7020 约 85K)
2.2 BRAM 块
- 每个块 36Kb 双端口,可拆成 2 个独立的 18Kb
- 支持真双口 / 简单双口、可选输出寄存器、ECC(部分位宽)
- 用于帧缓存、行缓冲、FIFO—— 是 YOLOv8 图像行缓存 / 权重缓存的载体
2.3 DSP48E1 片
- 25×18 位有符号乘法器 + 48 位累加器 / ALU + 预加器
- 支持乘加链式级联,无额外逻辑开销做 FIR / 卷积 —— 目标检测的卷积运算主力
2.4 时钟资源
- CMT(Clock Management Tile):每 tile 含 1 个 MMCM + 1 个 PLL,可倍频 / 分频 / 相移 / 去抖
- BUFG:32 个全局时钟缓冲,扇出至全芯片;另有 BUFR(区域时钟)、BUFIO(IO 时钟)
2.5 SelectIO 与电平
- HP bank(高性能):1.2~1.8V,配 DDR 接口;HR bank(宽范围):1.2~3.3V
- 支持 LVCMOS、LVDS、HSTL、SSTL 等,支持 DCI 阻抗匹配、数控延迟 IODELAY
2.6 高速与模拟资源
- XADC:12bit、1MSPS 模数转换器(片上电压 / 温度监控或用户模拟采样)
- GTX 收发器 + PCIe 硬核:仅 Z-7030 及以上才有(7030:4× GTX 6.6Gbps;7045/7100:16× GTX),PCIe Gen2 ×4 硬核 1 个
3、PS-PL 互联接口
| 接口 | 数量 | 位宽 | 方向 | 作用 | 峰值带宽 |
|---|---|---|---|---|---|
| AXI_GP0/1 | 2 | 32bit | PS→PL(主) | 寄存器配置、低速控制 | ~600MB/s @150MHz |
| AXI_GP2/3 | 2 | 32bit | PL→PS(从) | PL 读 PS 侧资源 | ~600MB/s |
| AXI_HP0~3 | 4 | 64bit | PL→PS(从) | 带 FIFO,直达 DDR/OCM,图像数据搬运主通道 | ~1.2GB/s 每个 |
| AXI_ACP | 1 | 64bit | PL→PS(从) | 经 SCU 与 L2 缓存一致性访问 | ~1.2GB/s |
| EMIO | 64 | 1bit | 双向 | GPIO 从 PL 引脚引出 | — |
| FCLK0~3 | 4 | — | PS→PL | 参考时钟输出 | — |
| 中断 | 多路 | — | 双向 | PL 中断(SPI)上报 GIC | — |
- PS 侧 AXI 端口协议为 AXI3(非 AXI4)
- PL 中 AXI4/AXI4-Lite/AXI4-Stream 通过 SmartConnect/AXI Interconnect 桥接
- 图像数据流推荐走 AXI_HP + AXI DMA/VDMA
- 寄存器配置走 AXI_GP
4、PS 与 PL 本质对比
| 维度 | PS | PL |
|---|---|---|
| 实现方式 | 硬核 ASIC,不可改 | SRAM 配置逻辑,可重配置 |
| 计算模型 | 顺序指令执行(软件) | 并行硬件电路(硬件) |
| 典型主频 | 667MHz~1GHz | 100~250MHz(设计相关) |
| 存储 | L1/L2 Cache + 256KB OCM + DDR | 分布式 RAM + BRAM 36Kb 块 |
| 运算 | 通用整数 / 浮点(NEON) | 定点并行,位宽 / 流水线任意定制 |
| 外设 | 硬外设齐全(串口 / 网口 / USB/CAN…) | 需用 IP 核在逻辑内实现 |
| 操作系统 | Linux / FreeRTOS / 裸机 | 无 OS |
| 适用场景 | 控制、协议栈、调度、界面 | 高速数据通路、卷积加速、自定义接口 |
5、主流型号 PL 资源对照(数据来源:Xilinx DS187)
| 型号 | 逻辑单元 | LUT | FF | BRAM(36Kb) | DSP48E1 | GTX / PCIe |
|---|---|---|---|---|---|---|
| Z-7010 | 28K | 17,600 | 35,200 | 120 | 80 | 无 |
| Z-7020 | 85K | 53,200 | 106,400 | 140 | 220 | 无 |
| Z-7030 | 125K | 78,200 | 156,400 | 265 | 400 | 4 / 1 |
| Z-7045 | 350K | 218,600 | 437,200 | 545 | 900 | 16 / 1 |
| Z-7100 | 444K | 277,400 | 554,800 | 755 | 2,020 | 16 / 1 |
PS 是 "大脑"(跑 Linux、做调度和协议),PL 是 "高速并行引擎"(卷积、图像管线、自定义接口),AXI_GP 做配置、AXI_HP 搬数据、AXI_ACP 保一致
6、AXI详解
AXI(Advanced eXtensible Interface)是 AMBA 3.0 总线协议,ZYNQ PS-PL 全部接口采用 AXI3 标准。它有 5 个相互独立、单向传输的通道,每通道用 VALID/READY 握手 完成一拍传输:写地址 (AW)、写数据 (W)、写响应 (B)、读地址 (AR)、读数据 (R)。主从之间无全局 "总线占用" 概念,可同时发出多个未完成事务。
AXI 五通道结构图

AXI 五通道结构:Master 与 Slave 之间独立单向通道 + 逐通道握手
6.1 全局信号
| 信号 | 方向 | 说明 |
|---|---|---|
| ACLK | 全局 | 总线时钟,所有信号在上升沿采样 |
| ARESETn | 全局 | 复位,低电平有效 |
6.2 5 个通道的信号详解
6.2.1 写地址通道 AW(Master→Slave)
| 信号 | 位宽 | 说明 |
|---|---|---|
| AWID | 4 | 写事务 ID,用于区分乱序 / 交织的多个事务 |
| AWADDR | 32/64 | 突发首地址 |
| AWLEN | AXI3:4 / AXI4:8 | 突发长度,实际拍数 = AWLEN + 1 |
| AWSIZE | 3 | 每拍传输字节数的编码 |
| AWBURST | 2 | 突发类型:00=FIXED、01=INCR、10=WRAP |
| AWLOCK | AXI3:2 / AXI4:1 | 锁定 / 独占访问控制 |
| AWCACHE | 4 | 缓存属性(是否可缓存、可缓冲等) |
| AWPROT | 3 | 保护属性:特权 / 非特权、安全 / 非安全、数据 / 指令 |
| AWVALID | 1 | 主机 "地址有效" 标志 |
| AWREADY | 1 | 从机 "可接收" 标志 |
6.2.2 写数据通道 W(Master→Slave)
| 信号 | 位宽 | 说明 |
|---|---|---|
| WID | AXI3:4(AXI4 已删除) | 写数据 ID |
| WDATA | 8~1024 | 写数据总线 |
| WSTRB | 数据位宽 / 8 | 字节写使能:对应位为 1 才写入该字节 |
| WLAST | 1 | 本突发最后一拍指示 |
| WVALID / WREADY | 1/1 | 握手 |
6.2.3 写响应通道 B(Slave→Master)
| 信号 | 位宽 | 说明 |
|---|---|---|
| BID | 4 | 响应 ID,必须与对应 AWID 一致 |
| BRESP | 2 | 响应码:00=OKAY、01=EXOKAY、10=SLVERR、11=DECERR |
| BVALID / BREADY | 1/1 | 握手 |
6.2.4 读地址通道 AR(Master→Slave)
信号与 AW 完全同构:ARID、ARADDR、ARLEN、ARSIZE、ARBURST、ARLOCK、ARCACHE、ARPROT、ARVALID、ARREADY,语义相同。
6.2.5 读数据通道 R(Slave→Master)
| 信号 | 位宽 | 说明 |
|---|---|---|
| RID | 4 | 读数据 ID |
| RDATA | 数据位宽 | 读数据总线 |
| RRESP | 2 | 响应码(编码同 BRESP) |
| RLAST | 1 | 本突发最后一拍 |
| RVALID / RREADY | 1/1 | 握手(从机可先给数据,读数据支持交织) |
AXI4 额外信号:AWQOS/ARQOS(QoS 优先级)、AWREGION/ARREGION(地址区域)、AWUSER/ARUSER/WUSER/RUSER/BUSER(用户自定义扩展)。
6.3 VALID/READY 握手协议
CLK __|‾‾|__|‾‾|__|‾‾|__|‾‾|__
VALID ___|‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|________
READY __________|‾‾‾‾‾‾‾|__________
↑ 此处(两者都为高)
上升沿完成一拍传输
三条铁律:
- VALID 置起后必须保持,直到握手完成,中途不得撤销;
- READY 可以先于 VALID 置起(从机提前表示可接收);
- VALID 不能组合逻辑依赖 READY(否则会形成循环等待死锁),READY 可以依赖 VALID。
允许的三种时序:VALID 先行、READY 先行、同时置起 —— 传输点都是 "两者同为高的那个上升沿"。
6.4 关键编码速查
| 编码 | 含义 |
|---|---|
| AxBURST=00 FIXED | 每拍地址不变(FIFO / 寄存器访问) |
| AxBURST=01 INCR | 每拍地址递增 AxSIZE 字节(最常用) |
| AxBURST=10 WRAP | 对齐边界内环绕(cache line 访问) |
| AxSIZE=000~111 | 每拍 1/2/4/8/16/32/64/128 字节 |
| AxLEN | 拍数 = LEN+1;AXI3 上限 16 拍,AXI4 上限 256 拍 |
| RESP=00/01/10/11 | 正常成功 / 独占成功 / 从机错误 / 译码错误 |
6.5 ZYNQ PS-PL 各 AXI 端口信号
| 端口 | 数据位宽 | ID 位宽 | 方向 | 关键特性 |
|---|---|---|---|---|
| M_AXI_GP0/1 | 32 | 12(AWID[11:0]) | PS→PL 主 | 未完成事务:8 读 + 8 写 |
| S_AXI_GP0/1 | 32 | 6 | PL→PS 从 | 接受能力:8 读 + 8 写 |
| S_AXI_HP0~3 | 64(可配 32) | 6(WID[5:0]) | PL→PS 从 | 深度 FIFO 缓冲、QoS、直通 DDR/OCM |
| S_AXI_ACP | 64 | 3(WID[2:0]) | PL→PS 从 | 经 SCU 与 L2 Cache 一致性 |
HP 口特有附加信号:
| 信号 | 方向 | 作用 |
|---|---|---|
| SAXIHP{n}RCOUNT[7:0] / WCOUNT[7:0] | PL 读 | 读 / 写数据 FIFO 水位 |
| SAXIHP{n}RACOUNT[2:0] / WACOUNT[5:0] | PL 读 | 读 / 写地址 FIFO 水位 |
| SAXIHP{n}AWQOS[3:0] / ARQOS[3:0] | PL 写 | QoS 优先级输入(随 VALID 有效) |
| SAXIHP{n}RDISSUECAP1EN / WRISSUECAP1EN | PL 写 | 动态切换未完成事务上限 |
Vivado 中的实际信号名:以端口前缀 + 通道字母组合,例如 M_AXI_GP0_AWADDR[31:0]、S_AXI_HP0_ARREADY、S_AXI_ACP_RDATA[63:0]、SAXIHP0_WCOUNT[7:0]。
6.6 AXI3(ZYNQ PS)与 AXI4 差异
| 特性 | AXI3(PS 端口) | AXI4(PL 推荐) |
|---|---|---|
| 最大突发 | 16 拍 | 256 拍 |
| WID | 有(支持写交织) | 已移除(不支持写交织) |
| LOCK | 2 bit | 1 bit |
| QoS/REGION/USER | 无 | 有 |
| 读数据交织 | 支持 | 支持 |
- PS 端口是 AXI3,PL 侧 IP 多为 AXI4——Vivado 中用 AXI SmartConnect / AXI Interconnect 自动桥接,地址映射在 Address Editor 里分配
- 寄存器配置走 M_AXI_GP0 + AXI4-Lite(每事务固定 1 拍突发、无 WLAST),大数据搬运走 AXI DMA/VDMA + S_AXI_HP(64bit、FIFO 缓冲、QoS 可调)
- 握手最易犯的错:在 VALID 产生逻辑里引用 READY,形成组合环路导致死锁;FIFO 空满标志 + 两级打拍是标准解法
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)