今天给大侠带来FPGA Xilinx Zynq 系列第四篇,本篇内容目录简介如下:
2. Zynq 芯片(“ 是什么?”)
2.3 处理器系统与可编程逻辑的接口
2.3.1 AXI 标准
2.3.2 AXI 互联和接口
2.3.3 EMIO 接口
2.3.4 其他 PL-PS 信号
本系列分享来源于《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 芯片(“ 是什么?”)
2.3. 处理器系统与可编程逻辑的接口
如前所述,Zynq 的表现不仅仅依赖于它的两个组成部分 PS 和 PL 的特性,还在 于能把两者协同起来形成完整、集成的系统的能力。这其中起关键作用的,是一组高度定制的 AXI 互联和接口用来在两个部分之间形成桥梁。另外,在 PS 和 PL 之间还有一些其他类型的连接,特别是 EMIO。本节讨论 PS 和 PL 之间的连接,并探讨如何使用这些连接。我们从介绍 AXI 标 准开始,这是大多数连接的基础。
2.3.1. AXI 标准
AXI 表示的是高级可扩展接口(Advanced eXtensible Interface),当前的版 本是 AXI4,它是 ARM AMBA®3.0 开放标准的一部分。第三方厂家生产的许多芯片和 IP 包都是基于这个标准的。
AMBA 标准原本是 ARM 开发用于单片机的,第一版是 1996 年发布的。自那之后, 标准被修订和扩展过,现在 ARM 描述它是 “ 片上通讯的事实标准 ”[3]。现在它主要用于片上系统,包括基于 FPGA 的 SoC,或是 Zynq 这样的包含了 FPGA 部分的芯 片。实际上,Xilinx 做了很大的贡献来把 AXI4 定义为 FPGA 架构内使用的优化的互联技术 [16][29]。在 ISE® Design Suite 的 12.3 版中,Xilinx 工具链第一次引入了对 AXI 的支 持 [25],现在在 Vivado Design Suite 中有了进一步的支持。AXI 总线可以灵活使 用,而且一般情况下是用来在一个嵌入式系统中连接处理器和其他 IP 包的。实际上有三类 AXI4,每一类代表了一种不同的总线协议,下面会有总结。对于一个特定的连接选择哪个 AXI 总线协议是基于那个连接所需的特性的。
前面的描述中用到了 “ 存储映射 ” 这个术语,有必要在此简要定义一下它的 含义。如果一个协议是存储映射的,那么在主机所发出的会话 (无论读或写)中就会标明一个地址,这个地址是对应于系统存储空间中的一个地址的。对于仅支持每次会话单个数据传输的 AXI4-Lite 而言,数据就是写入那个指定的地址,或从那个地址读出;而在 AXI4 批量的情况下,地址表明的是要传输的第一个数据字的地址,而从机端必须计算随后的数据字的地址。
2.3.2. AXI 互联和接口
在 PS 和 PL 之间的主要连接是通过一组 9 个 AXI 接口,每个接口有多个通道组 成。这些形成了 PS 内部的互联以及与 PL 的连接,如图 2.9 所示。这里,有必要定义两个重要的术语:
从图上可以注意到所有的接口都明确地连接到 PS 内的 AXI 互联,唯一例外的是 ACP 接口,它直接连到 APU 里面的一致性控制单元 (SCU)。在处理器系统内部,AXI 接口用在 ARM APU 内部 (用来连接处理器核和 SCU、 cache 存储器和 OCM),及连接 PS 内的各种互联。这些连接是对 PS-PL 边界上的连接的补充。特别的,图 2.9 所示的三个互联 (存储器、主机和从机互联)是内部连接到中央互联 (Central Interconnect)的,图中没有画出这个互联,但是在图 2.2 上可以看到。PS 内部连接的全部细节,包括表达所有 AXI 互联和接口的框图,在 [33]。
图 2.9: 连接 PS 和 PL 的 AXI 互联和接口的构架
表 2.2 给出了图 2.9 中的箭头所表示的接口的总结。它给出了每个接口的简 述,标出了主机和从机 (按照惯例,主机是控制总线并发起会话的,而从机是做响应的)。注意接口命名的规范(在表 2.2 的第一列)是表示了 PS 的角色的,也就是说,第一个字母 “M” 表示 PS 是主机,而第一个字母 “S” 表示 PS 是从机。
表 2.2 PS 和 PL 之间的接口 [33]
进一步解释这些不同类型的 PS-PL AXI 接口的作用:
每条总线都是由一组信号组成的,这些总线上的会话是根据所定义的总线标 准,也就是 AXI4 来发生的,下面会介绍这个标准。关于 AXI 总线和会话的深入解释超出了目前讨论的内容,不过在之后的第十九章我们会回来讨论这个话题。
2.3.3. EMIO 接口
如 2.1 节所提,从 PS 出来,有几种连接可以经由 PL 到外部接口上,这被称作 扩展的 MIO (Extended MIO),即 EMIO。EMIO 涉及到两个域之间的信号传输,是由一组简单的导线连接实现的,因此, EMIO 并不支持所有的 MIO 接口,而支持的那些中,也有些的能力受到了限制 [33]。这些连接被安排成两个 32 位的组。
很多情况下,经由 EMIO 的接口是直接连接到所需的 PL 的外部引脚上的,这个 连接是由一个约束(描述)文件中的条目所指定的。在这个模式下,EMIO 可以实现额外的 64 个输入线和 64 个带有输出使能的输出线。另一个选择是用 EMIO 来连接PS 和 PL 里的外设模块。图 2.10 描绘了这两种使用模式。
图 2.10: 在 PS 和 PL 之间用 EMIO 接口
2.3.4. 其他 PL-PS 信号
跨越 PS-PL 边界的其他信号包括看门狗定时器、重启信号、中断和 DMA 接口信 号。这里就不讨论这些信号了,不过后面在关于用 Zynq 做嵌入式系统设计 (第十章)那里,还会解释它们的各种功能。
第四篇到此结束,明日将会带来第五篇,介绍硬件支持安全引导以及Zynq-7000 系列成员相关内容。欢迎各位大侠一起交流学习,共同进步。
END
后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!