今天给大侠带来FPGA Xilinx Zynq 系列第二十一篇,Zynq 片上系统概述之接口等相关内容,本篇内容目录简介如下:
10. Zynq 片上系统概述
10.1 接口与信号
10.1.1 PS-PL AXI 接口
10.1.2 PL 协处理器接口
10.1.3 中断接口
10.2 互联
10.2.1 互联特性
10.2.2 互联、主机和从机
10.2.3 连接性
10.2.4 AXI_HP 接口
10.2.5 AXI_ACP 接口
10.2.6 AXI_GP 接口
本系列分享来源于《The Zynq Book》,Louise H. Crockett, Ross A. Elliot,Martin A. Enderwitz, Robert W. Stewart. L. H. Crockett, R. A. Elliot, M. A. Enderwitz and R. W. Stewart, The Zynq Book: Embedded Processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 All Programmable SoC, First Edition, Strathclyde Academic Media, 2016。
Zynq 片上系统概述
本章我们要检验 Zynq SoC 设计的所有问题。我们要近距离观察 ARM 处理器核心 及其操作模式的某些问题,要奠定本书后续某些章节的基础。本章着重要介绍 Zynq片上的各种可用的互联、接口信号、中断和存储器功能,然后本书会进一步展开深入的细节。
本章的一个主要目标,是详细描述存在于 PS 和 PL 之间的连接和共享的资源。这包括互联系统、存储器和各种不同的接口。进一步的,本书还要描述 Zynq SoC 的 各种操作模式以及 PS 和 PL 在用作各种不同的任务和用途时的配置。
由于所有的 Zynq-7000 AP 芯片都配备有相同的基于双核 ARM Cortex-A9 的 PS, 若非特别指出,本章所涉及的内容可以用于整个 Zynq 系列。在某些型号上有些小的差异,主要集中在 PS 的最大工作频率,这些会在相关的章节中明确指出。
10.1 接口与信号
在这一节要详细讨论 Zynq-7000 AP SoC 芯片上用户可见的接口和信号,特别关注的是 PS 和 PL 之间的接口。图 10.1 高亮出了主要的信号组和接口。
图 10.1: Zynq-7000 AP SoC 的接口、信号和引脚
10.1.1 PS-PL AXI 接口
Zynq 的 PS 和 PL 部分之间的主要连接形式是 AXI 接口,它在芯片的这两个部分之间实现了高带宽、低延迟的连接。在 PS 侧的每个 AXI 接口包括多个 AXI 通道,九个 PL 接口是用了上千个信号来实现的。这些详细列举在表 10.1 中。
表 10.1: PS-PL AXI 接口
10.1.2 PL 协处理器接口
这一节概述能用于 PL 和 PS 之间通信的接口。
加速器一致端口 (ACP)接口
ACP 是 SCU 上的一个 64 位从机接口,实现从 PL 到 PS 的异步 cache 一致性接入 点。ACP 是可以被很多 PL 主机所访问的,用以实现和 APU 处理器相同的方式访问存储子系统。这能达到提升整体性能、改善功耗和简化软件的效果。ACP 接口的表现和标准的 AXI 从机接口是一样的,支持大多数标准读和写的操作而不需要在 PL 部件中加入额外的一致性操作。因此,当 PL 上的任一本地存储器都不是与 CPU 保持一致的时候,ACP 实现了从 PL 到 CPU 的 cache 的 cache 一致性访问 [2]。
通过 ACP 到存储器的一个一致性部分的任何读取的操作都要经过 SCU 来检查所需的数据当前是否在 CPU 的 L1 cache 中。如果数据在 L1 cache 中,所需的数据就会直接返回给请求的部件。如果数据不在 L1 cache 中,就会先检查 L2 cache 然后 才能向主存储器发出数据请求 [2]。
写入到一致性存储区域的过程,在写入到主存储器之前,由 SCU 实现了一致性强化。可选的是,写入的过程也可以在 L2 cache 上进行,这样就消除了写入到片外存储器时的性能和功耗的影响 [2]。
ACP 的使用
ACP 提供了 PL 中所实现的加速器和 PS 之间的低延迟的链路。在 PS 和 PL 加速器之间的通信所需的步骤总结如下 [2]:
1. 给加速器的输入数据是在 CPU 的本地 cache 空间内准备的。
2. 一条从 CPU 发送给加速器的信息,通过一个到 PL 的 AXI 通用主机接口(AXI_GP)实现。
3. PL 加速器通过 ACP 获取数据。数据被处理后,结果通过 ACP 返回。
4. 加速器通过在一个已知的地方写入来设置一个标志,表明数据处理已经完成了。这个标志的状态可以被 PS 轮询,或产生一个中断。
与紧密耦合的协处理器相比较的话,ACP 具有相对较高的访问延迟。因此,ACP 不被建议用做细粒度的指令级别的加速。由于和会话时间相比,ACP 的额外开销相对较小,所以 ACP 与传统的用于粗粒度 (比如视频帧级别的处理)的存储映射 PL加速方式相比也不具有明显的优势。因此 ACP 用于中等粒度的加速是最好的,比如块级别的加密算法的加速 [2]。
表 10.2 详细列出了基于当前 cache 状态的 ACP 读写表现。表中可以清楚看出, 当 cache 的命中发生的时候,访问延迟是低的 [2]。
表 10.2: 基于当前 cache 状态的 ACP 读写表现 [2]
ACP 的局限性
ACP 存在着一些局限性 [2]:
- 一致性存储器不允许做访问加锁。
- 一致性存储器不允许做独占访问。
- 从其他 AXI 主机来的访问会由于通过 ACP 来的对 OCM 的持续访问(用完了 ACP带宽)而无法进行。ACP 的带宽应该降低到小于 OCM 峰值带宽的程度,以允许其他主机的访问。这可以通过调整数据包大小为小于八个 64 位的字而实现。
- AWLEN=3、AWSIZE=3 和 WSTRB 不等于 11111111 的写入操作会导致 CPU 中的cache 线崩溃。
- 让写入请求比读取请求优先的模块,比如 PCI Express(PCIe),不应该被接入到 ACP 上,因为它们会产生死锁。它们应该被接到 AXI GP 或 HP 端口来避免死锁。
10.1.3 中断接口
PS 和 PL 之间的中断是由通用中断控制器 (Generic Interrupt Controller, GIC)所控制的,它支持 64 条中断线。六个中断是从 APU 内产生的,包括 L1 校验失败、L2 中断和性能监视单元 (Performance Monitor Unit,PMU)中断。
从 GIC 输出的中断,驱动 IRQ 或快速中断请求 (Fast Interrupt ReQuest, FIQ)作为 CPU 输入信号。对于中断的处理器目标的选择是由 APU 里的 SCU 寄存器实现的。表 10.3 详细列出了中断指标 [2]。
表 10.3: APU 特有的中断 [2]
10.2 互联
在 PS 里的互联提供了主机和从机之间读、写和响应事务的通信,它由多个开关用 AXI 点对点通道来连接系统资源。作为 ARM AMBA 总线系列的一部分,这个互联实现了大阵列的互联通信容量,以及在之上的服务质量 (Quality-of-Service,QoS)、调试和测试监视。多种重要的事务由这个互联所 . 管理,而它就是被设计用来为 ARM CPU 提供低延迟链路的。从 PL 主机控制的角度来说,这个互联能实现高吞吐率和 cache 一致性数据通路 [4]。
10.2.1 互联特性
AXI 互联系统是 Zynq 芯片上主要的数据通信机制。
下面总结了这个互联的特性 [4]:
AXI 高性能数据通路开关:
• 窥探控制单元
• L2 cache 控制器
• 基于 ARM NIC-301 的互联开关:
- 中央互联
- 主机互联
- 从机互联
- 存储器互联
- OCM 互联
- AMBA 高级高性能总线 (Advanced High-Performance Bus,AHB)和高级外 设总线 (Advanced Peripheral Bus,APB)桥
PS-PL 接口:
• AXI_ACP,用于 PL 的一个 cache 一致性主机端口
• AXI_HP,用于 PL 的四个高性能 / 大带宽主机端口
• AXI_GP,四个通用端口,两个主机端口和两个从机端口。
10.2.2 互联、主机和从机
整个互联结构实现了很多不同的独立的互联开关,以及两类连接:主机和从机。这一节描述这些。
互联开关
下面总结了互联中可用的各种互联开关 [4]:
• 中央互联 — 中央互联是基于 ARM NIC-301 的互联开关的核心。
• 主机互联—主机互联控制从AXI_GP端口、设备配置(Device Configuration, DevC)和设备访问端口 (Device Access Port,DAP)到中央互联的低速到中 速通信的开关。
• 从机互联 — 从机互联控制从中央互联到 I/O 外设、AXI_GP 和其他块的低速 到中速的通信的开关。
• 存储器互联 — 存储器互联控制从 AXI_HP 端口到 DDR DRAM 和 OCM(通过 OCM 互联)的高速通信的开关。
• OCM 互联 — OCM 互联控制 OCM 和中央及存储器互联之间的高速通信。
• SCU — 由于具有寻址过滤功能,SCU 类似为一个从它的 AXI 从机端口向它的 AXI 主机端口通信的开关。
• L2 Cache 控制器 — 由于具有寻址过滤功能,L2 cache 控制器的功能类似为 一个从它的 AXI 从机端口向它的 AXI 主机端口通信的开关。
下面给出了这两种互联连接类型的例子。
互联主机
互联主机包括 [4]:
• CPU
• ACP
• 高性能 PL 接口 AXI_HP{3:0}
• 通用 PL 接口 AXI_GP{1:0}
• DMA 控制器
• AHB 主机 — 带有本地 DMA 单元的 I/O 外设 (IOP)
• 设备配置 (DevC)和调试访问端口 (DAP)
互联从机
互联从机包括 [4]:
• 通用 PL 接口 M_AXI_GP{1:0}
• OCM
• DDR DRAM
• 全局编程器视图 (GPV) — 互联的可编程寄存器
• AHB 从机 — 带有本地 DMA 单元的 IOP
• APB 从机 — 各种单元里的可编程寄存器
10.2.3 连接性
互联并没有实现能够让所有的主机连接到所有的从机的完全的交叉横杆结构。表 10.4 详细列出了哪些主机可以连接到哪些从机。
表 10.4: 互联的主机 - 从机连接性 [4] (“X” 表示能访问)
10.2.4 AXI_HP 接口
有四个 AXI_HP 接口来实现从 PL 总线主机到 OCM 和 DDR 存储器的高带宽数据通 路。每个接口里有两个做读写通信的 FIFO 缓冲器。连接 PL 到存储器的互联把高速AXI_HP 端口连接到两个 DDR 存储器端口或 OCM 上。在某些 Xilinx 文档中,AXI_HP接口也被叫做 AXI FIFO 接口 (AFI),来表明它们的缓冲能力。
AXI_HP 接口的特性包括 [4]:
• 32 或 64 位数据主机接口,每个端口可以独立编程。
• 对于未对齐的 32 位传输,可以自动扩展传输尺寸从 32 位到 64 位。
• 写命令的可编程的阈值。
• 对于所有的 PL-PS 接口的异步时钟频率跨域。
• 读写 FIFO。
• 命令和通信数据 FIFO 填充程度计数是 PL 可见的。
PL 端口支持 QoS 信令。
图 10.2 是 AXI_HP 接口的框图。
图 10.2: AXI_HP 接口
AXI_HP 接口的进一步数据在 《Zynq-7000 All Programmable SoC Technical Reference Manual》[4] 的第 5 章。
10.2.5 AXI_ACP 接口
ACP 实现了 PS 和 PL 之间的低延迟连接,而且对于 L1 和 L2 cache 带有可选的 一致性操作能力 [4]。这是一个 64 位的接口,使得 PL 可以实现一个能访问 OCM 和L2 cache 的 AXI 主机。
从系统的角度看,ACP 接口具有可与 APU 中的 CPU 相比较的连接性。由于这个原因,ACP 是和 APU 的 CPU 直接竞争 APU 之外的资源 [4]。这意味着当 ACP 接口在使用的时候,cache 空间的段将会被协处理器任务所占据。因此,依赖 CPU cache 来实现高性能或甚至是实时性能的 CPU 进程,也许不能满足所需的时间期限。如果这样的话,最好还是使用 AXI_HP 接口来在 OCM 中存储任务的数据。
10.2.6 AXI_GP 接口
AXI_GP 接口是直接连接主机互联和从机互联的端口的。AXI_HP 接口具有一个 1kB 的数据 FIFO 来做缓冲 [4],但是 AXI_GP 接口与它不同,没有额外的缓冲。因此性能就受到主机端口和从机互联的制约。这些接口仅用于通用的目的,而且不应该被用于高性能的任务。
AXI_GP 接口的特性包括 [4]:
• 32 位数据总线宽度。
• 12 位总线端口 ID 宽度。
• 6 位从机端口 ID 宽度。
• 主机和从机端口接受一次 8 个读取和 8 个写入。
AXI_GP 接口的每个端口能支持多个外设。
第二十一篇到此结束,下一篇将带来第二十二篇,Zynq 片上系统概述之存储器等相关内容。欢迎各位大侠一起交流学习,共同进步。
END
后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!