南京观海微电子---AXI总线技术简介——ZYNQ PS和PL的互联技术

1.AXI****总线介绍
AXI全称Advanced Extensible Interface(AE),是由Xilinx自6系列FPGA起引入的一种接口协议,在ZYNQ系列芯片中沿用至今,并采用AXI4版本。该协议主要用于主设备与从设备之间的数据传输关系描述。
Zynq是Xilinx公司推出的第一款集成了高性能ARM Cortex-A9处理器以及高功耗FPGA逻辑资源的单芯片产品。借助AXI总线技术的应用,在Zynq系列芯片中实现了ARM处理器与FPGA之间的高效数据传输和通信功能,并充分发挥了两者的性能优势。
在ZYNQ系统中提供AXI-Lite、AXI4以及AXI-Stream三种总线接口,在参考下表部分详细列出这些AXI接口的主要特性。
| 接口协议 | 特性 | 应用场合 |
|---|---|---|
| AXI4-Lite | 地址/单数据传输 | 低速外设或控制 |
| AXI4 | 地址/突发数据传输 | 带地址数据的批量传输 |
| AXI4-Stream | 仅传输数据、突发传输 | 数据流和媒体流传输 |
AXI4-Lite:
该方法具有轻量级特性和结构简单的特点,并且适用于处理小批量数据以及进行简单控制的场景。它无法实现批量传输功能,并且每次读写操作仅处理单个字符(32位)的数据。该方法主要针对一些低速外设进行控制以及实现数据传输功能。
AXI4:
该接口与AXI-Lite类似,并新增了批量传输功能。其核心优势在于能够实现对一片地址的一次性数据读写。该特点使其具备了突发式的高效处理能力
采用内存映射控制方案的AXI4-Lite和AXI4协议具有类似的特性:FPAG通过将用户自定义模块编入特定地址进行访问,并在执行读写操作时仿佛在操作自己的内部RAM。这种架构使得其编程相对便捷且开发难度适中。然而,其主要 drawback 是系统资源消耗较高,需要额外配置包括读地址线、写地址线以及相应的数据传输与反馈信号线等配套电路。
AXI4-Stream:
这种类型的连续数据流接口具有特点:不依赖地址总线,在运行时只需持续进行读取或写入操作(类似于FIFO的功能)。对于此类数据流接口,在基于FPGA的硬件设计中无法直接应用传统的内存映射方式进行功能管理;相反地需要引入一个专门的接口转换器(例如采用AXI-DMA机制),以实现将AXI4-Lite或AXI4标准下的内存映射功能转化为支持数据流传输的处理流程。
AXI-Stream广泛应用于多个领域:视频流处理、通信协议转换、数字信号处理以及无线通信等。其本质是建立基于数值流的数据传输通道,并从信源(如ARM内存、DMA或无线接收前端)到信宿(如HDMI显示器、高速ADC或音频输出设备)之间建立起连续的数据传输通道。这种接口设计特别适合用于实时信号处理任务。
2.AXI****协议通道介绍
AXI4和AXI4-Lite接口包含5个不同的通道,分别是:
(1)读地址通道(Read Address Channel);
(2)写地址通道(Write Address Channel);
(3)读数据通道(Read Data Channel);
(4)写数据通道(Write Data Channel);
(5)写响应通道(Write Response Channel);
其中每个通道都是一个独立配置的AXI AXI总线接口。下面两幅图分别呈现了数据读取与写入过程的模型。

AXI读数据通道

AXI写数据通道
3.ZYNQ芯片内部的AXI****总线
ZYNQ芯片通过硬件实现了AXI总线协议的具体功能,并包含9个物理接口。这些接口具体包括AXI-GP0至AXIGP3、AXI-HP0至AXI-HP3以及AXI-ACP接口。
AXI_ACP接口被定义为一种特定于ARM多核架构的技术规范,在官方术语中也被称为加速器一致性端口(API),其主要功能是用来管理不具备缓存功能的AXI外围设备(如DMA控制器等)。该接口在主控端子口配置中通常设置为主控端子口配置为主控侧子口(Master Port),而其主控端子口配置为从属性 Slave 接口。
AXI_HP接口即是基于高带宽性能的AXI3.0标准设计而成的标准接口,并包含四组通道配置;其中每个PL模块均会作为主设备与之进行连接;该接口的主要功能在于实现PL与PS之间的存储器访问(包括DDR型动态随机存取存储器及内置On-ChipRAM资源)
AXI 系列通用主控接口(AXI_GP),是一种标准通用 AXI 接口规范。该规范包含四个不同的配置类型:其中有两个类型为主设备型态(32 位),另有两个类型为从设备型态(32 位)。

可以看出,在PS端(ARM端)中仅限于两个AXI-GP属于Master Port类型作为主机接口;剩下的7个AXI-GP属于Slave Port类型,并作为从机接口使用。
主机接口可执行读写操作。ARM通过两个AXI-GP主机接口进行主动访问以完成PL逻辑(FPGA)交互。实际上,在PS端将PL逻辑映射至特定地址位置,并使其中的数据传输如同在PS本地存储器中进行操作。其他PS端的从机接口仅负责被动响应,并且仅接收来自PL的读写请求。
此外,在AXI总共有9个不同的接口中也存在显著差异性。其中基于32位架构的GP接口属于低效设计类型,并具有约600MB/s的理论传输速度;相比之下,在采用64位架构设计的HP以及ACP两种高性能接口上则能够达到理论最高传输速度1200MB/s
人们可能会好奇为何高性能接口没有采用主机接口的设计。如果按照这个思路走下去的话,那么操作就可以通过ARM发起的高带宽数据传输实现。其实,高性能接口完全不需要ARMCPU参与数据搬运,真正的主要承担者是在PL层面上的DMA控制器。
4.常用AXI接口IP****介绍
位于处理器侧的ARM架构直接获得了AXI接口的硬件支持,在系统架构设计中这一特点使得其在性能上具有显著优势;相应地,在PL层中,则必须借助逻辑电路来完成AXI协议的具体实现
Xilinx在Vivado开发环境中支持现成的AIX接口IP,并包括AXI-DMA、AXI-GPIO、AXI-Dataover以及AXI-Stream等接口类型。方便地从Vivado的接口列表中添加即可实现所需功能。下图为Vivado环境下各种DMA IP配置示例图:

下面为几个常用的AXI接口IP的功能介绍:
AXI-DMA:实现从PS内存到PL高速传输高速通道的转换。(AXI-HP<---->AXI-Stream)
AXI-Datamover:负责将PS内存数据高效传输至PL端,并建立高速通道连接。(AXI-HP<---->AXI-Stream)
AXI-VDMA:实现了从PS内存到PL高速传输通道的转换这一技术,并专为二维数据如视频和图像设计,在确保高效传输的同时提升了整体性能。(AXI-HP<---->AXI-Stream)
AXI-CDMA:该方法通过PL实现了数据在内存中的一个位置移动到另一个位置,并不需要CPU介入。
有时, 用户会通过创建自定义IP与PS接口来进行通信. 这时可以通过向导工具自动生成对应的IP. 用户自定义的IP核将支持AXI4-Lite, AXI4和AXI-Stream接口.
在上面生成的一系列官方IP资源以及辅助工具支持下产生的自定义IP中……对于AXI总线协议的具体理解程度要求相对较低(除非确实遇到实际应用中的问题)。通过这种架构设计模式,在完成自身功能逻辑实现后……系统-level IP开发效率得到显著提升
5.多个AXI****接口互联交互
AXI协议严格地说是一个point-to-point master-slave interface protocol。当多个外围设备需要进行数据交互时,通常会配置为引入一个 AXI Interconnect module(类似于网络交换机中的交换矩阵)。这种设计能够有效地将单个或多个 AXI master设备与单个或多个 AXi slave设备进行连接,并实现一种高效的通信机制。
该AXI Interconnect IP核的最大支持能力是可同时连接至最多16个主设备及16个从设备。当所需接口数量超过当前支持时,则可以通过级联多个AXI Interconnect IP核来实现更高的扩展性。
AXI Interconnect基本连接模式有以下几种:
(1)多对一连接(N-to-1 Interconnect);

(2)1对多连接(1-to-N Interconnect);

(3) 多对多连接(N-to-M Interconnect Shared-Address Multiple-Data );

shared write and read address arbitrations

sparse crossbar write and read address pathways
ZYNQ内部集成的AXI接口设备采用互联矩阵架构实现互联,并能确保传输数据的高效性和连接灵活性。
