AXI4协议

参考资料:

1、arm axi官方文档:https://developer.arm.com/documentation/ihi0022/latest?_ga=2.145967412.1021591712.1586156324-1048184626.1580228297

<IHI0022C_amba_axi_v2_0_protocol_spec.pdf>、<IHI0022H_c_amba_axi_protocol_spec.pdf>
<IHI0051A_amba4_axi4_stream_v1_0_protocol_spec.pdf>

2、xilinx axi文档:UG1037<Vivado AXI Reference>、UG934<AXI4-Stream Video IP and System Design Guide>

一、AXI4总线简介

  AXI是高性能、高带宽、低延迟的片内总线。AXI总线是在AMBA3.0的协议中增加的,AMBA是由ARM公司研发推出的一种高级微控制器总线架构(Advanced Microcontroller Bus Architecture)。其中AMBA包含了四种不同的总线标准,分别是:AHB、ASB、APB、AXI。AHB是高级高性能总线,通常用于CPU和高性能设备之间的交互ASB常用于高性能系统模块间的交互,APB是高级外设总线,通常和AHB相连接,来访问一些低速的外设。如STM32中就AHB、ASB、APB总线。有下图展示了一个典型的基于AMBA的微控制器架构。

  

Axios 添加协议 axi4协议中文版_Axios 添加协议

 AXI4总线分为三种:

• AXI4: 高性能内存映射总线,最大支持突发256个事务。

• AXI4-Lite:AXI4-Lite接口是AXI4接口的简化版本,最大支持突发1个数据。常常用于cpu和外设直接的通讯。如cpu读写如UART、GPIO外设的寄存器。

• AXI4-Stream: 用来传输大量数据流且无需做地址映射的的需求,如视频

AXI接口具有5个独立通道:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。

图2.1和图2.2展示了axi总线的读写事务:

  

Axios 添加协议 axi4协议中文版_数据通道_02

                      图1.1 axi总线读事务

 

Axios 添加协议 axi4协议中文版_Axios 添加协议_03

                  图1.2 axi总线写事务

二、AXI4总线接口信号及时序

2.1 AXI总线接口定义

  AXI总线的写地址信号以AW开头,写数据通道以W开头,写响应通道以B开头,读地址通道以AR开头,读数据通道以R开头。

  

Axios 添加协议 axi4协议中文版_Axios 添加协议_04

                        表2.1  写地址通道信号

 

  

Axios 添加协议 axi4协议中文版_数据通道_05

 

                        表2.2 写数据通道信号

  

Axios 添加协议 axi4协议中文版_数据通道_06

 

                      表2.2 写响应通道信号

  

Axios 添加协议 axi4协议中文版_数据通道_07

                        表2.4 读地址通道信号

  

Axios 添加协议 axi4协议中文版_数据通道_08

                      表2.5  读数据通道信号

 2.2 握手协议

   axi主从机之间在正式传输数据之前需要进行握手,axi的握手是通过VALID和READY信号完成的,每个通道都有这两个信号。VALID信号由传输发起方产生,表示传输发起方已经准备好数据,可以开始传输。READY信号有传输的接受放产生,表示接受方已经准备好接受数据,只有VALID和READY信号都为高电平时,才能进行数据传输。握手情况分为三种,分别是VALID先高然后READY变高、READY先高然后VALID变高、READYVALID同时变高。如下图所示:

  

Axios 添加协议 axi4协议中文版_数据通道_09

 

              图2.1 VALID先高然后READY变高

  

Axios 添加协议 axi4协议中文版_数据通道_10

            图2.2 READY先高然后VALID变高

  

Axios 添加协议 axi4协议中文版_Axios 添加协议_11

          图2.3 READYVALID同时变高

2.3 读/写地址信号

  1、突发长度

  ARLEN 和 AWLEN分别是读地址通道和写地址通道的突发长度,表示读事务和写事务传输总共有多少个传输事务。axi4这两个信号有8位,可见一次最大读写事务的数据大小是256事务。

  ARLEN[7:0]: 读事务的事务个数

  AWLEN[7:0]: 写事务的事务个数

  2、突发大小

  ARSIZE 和AWSIZE分别是读地址通道和写地址通道的突发大小,表示读事务和写事务一次传输数据的大小,单位是字节,见表2.6所示

  ARSIZE[2:0]:读事务单位传输数据大小

  AWSIZE[2:0]:写事务单位传输数据大小

  

Axios 添加协议 axi4协议中文版_自增_12

      表2.4突发大小

如图2.4一次传输4byte,总共有5个事务,则突发大小为4,突发长度为5.

  

Axios 添加协议 axi4协议中文版_数据通道_13

 

        图 2.4 突发长度和大小

 

  3、突发类型

  ARBURST和AWBURST分别是读地址通道和写地址通道的突发类型,表示读事务和写事务的类型。axi协议有3中突发类型,如表2.7所示

   

Axios 添加协议 axi4协议中文版_数据通道_14

         表2.5 突发类型

  FIXED:固定突发类型,表示主机对从机的读写地址是固定的。

  NNCR:自增突发类型,主机给从机一个读写的首地址,从机根据首地址和突发大小自动增加。

  WRAP:回环突发类型,这种类型与自增突发类型相似,不一样的是回环突发类型在地址自增到一个上线地址后,会回到低地地址重新开始。

  4、读/写响应

  AXI的写响应是个单独的通道,读响应包含在读数据通道中。RRESP 和 BRESP信号是读写响应的主要信号,表示读写响应的状态。如表2.6所示:

  

Axios 添加协议 axi4协议中文版_数据通道_15

  OKAY:正常访问成功

  EXOKAY:独占访问成功

  SLAVERR:从设备给主设备返回的错误信号  

  DECERR: 解码错误,在axi互联系统中,通常是主机反问了一个不存在的从设备地址

2.4、AXI4读写时序

  axi总线主机和从机基本的读写时序如下图所示:

  

Axios 添加协议 axi4协议中文版_数据通道_16

                              图2.5 读数据时序

Axios 添加协议 axi4协议中文版_写数据_17

                            图2.6 写数据时序

 

 三、AXI4-Stream接口信号及时序

3.1 AXI4-Stream接口信号定义

  

Axios 添加协议 axi4协议中文版_Axios 添加协议_18

                        图3.1 AXI4-Stream接口信号定义

3.2 AXI4-Stream握手协议

  AXI4-Stream握手协议与AXI4的握手协议一致

3.3 AXI4-Stream信号时序

  下面以xilinx的AXI4-Stream接口传输视频流为例说明AXI4-Stream接口时序。xilinx的AXI4-Stream主从机接口如图3.2和图3.3所示,图中并没有给出全部接口说明。

  

Axios 添加协议 axi4协议中文版_自增_19

                              图 2.3 从机接口

  

Axios 添加协议 axi4协议中文版_写数据_20

                              图2.4 主机接口

 

   从图中可以看出,AXI4-Stream的TUSER和TLAST接口在xilinx中定义为视频帧的开始信号和视频行的结束信号。如图2.5所示:

  

Axios 添加协议 axi4协议中文版_写数据_21

                            图2.5 EOL信号与SOF信号

     传输YUV420,每个时钟传输两个像素实现如图2.6所示:

    

Axios 添加协议 axi4协议中文版_写数据_22

                          图2.6 YUV420,每个时钟两个像素