011 AXI总线协议(一)

 一、AXI总线协议

1、AXI简介

AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。没有用复杂的桥接,该协议就可以实现高频率的操作。它的地址/控制和数据阶段是分离的;支持地址不对齐的数据传输;同时在基于突发(burst_basded transcation)的传输中,只需要首地址;同时分离的读写数据通道,总共有5个独立的通道;并支持显著传输(outstanding transcation)访问和乱序访问非常容易添加流水线级数以获得高频的时序。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。

2、AXI特点

AXI 协议是一种高性能、高带宽、低延迟的片内总线,具有如下特点:
1、 总线的地址/控制和数据通道是分离的;
2、 支持不对齐的数据传输;
3、支持突发传输, 突发传输过程中只需要首地址;
4、 具有分离的读/写数据通道;
5、 支持显著传输访问和乱序访问;
6、 更加容易进行时序收敛。
在数字电路中只能传输二进制数 0 1,因此可能需要一组信号才能高效地传输信息, 这一组信号就组成了接口。

 AXI4 协议支持以下三种类型的接口:
1AXI4: 高性能存储映射接口。

                   主要用于处理器访问存储器等需要指定地址的高速数据传输场景。
2AXI4-Lite:简化版的 AXI4 接口, 用于较少数据量的存储映射通信。

                  主要用于访问一些低速外设中的寄存器。
3AXI4-Stream: 用于高速数据流传输,非存储映射接口。 如果一个协议是存储映射的,那么主机所发出的会话( 无论读或写) 就会标明一个地址。 这个地址对应于系统存储空间中的一个地址, 表明是针对该存储空间的读写操作。

                 AXI-Stream 接口像 FIFO 一样,数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速 AD、 PCIe、 DMA 接口等需要高速数据传输的场合。

二、AXI4 接口

AXI4 接口由五个独立的通道构成:
1读地址 read address channel (ARxxx)
2读数据 write address channel(AWxxx)
3写地址 read data channel(Rxxx)
4写数据 write data channel(Wxxx)
5写响应 write response channel(Bxxx)
每一个transaction都有地址和控制信息在地址通道(address channel)中,用来描述被传输数据的性质

使用读地址和读数据通道实现读传输的示意图如下:

在一个读传输过程中, 主机首先在读地址通道给出读地址和控制信号, 然后从机由读数据通道返回读出的数据。 
另外我们需要注意的是,这是一次突发读操作,主机只给出一个地址,从该地址连续突发读出四个数据。

写传输过程如图 16.1.2 所示, 它用到了写地址、写数据和写响应三个通道。 主机在写地址通道给出写地址和控制信号,然后在写数据通道连续突发写四个数据。从机在接收数据之后,在写响应通道给出响应信号。

AXI 总线中的5条独立的通道都包含了一组信息信号,还有一个 VALID 和一个 READY 信号握手机制。 VALID 信号由源端( source) 产生,表示当前地址或者数据线上的信息是有效的;而 READY 信号由目的端( destination)产生,表示已经准备好接收地址、数据以及控制信息。 读数据和写数据通道都包括一个LAST信号,用来指明一个事物传输的最后一个数据。VALID 和 READY 信号提供了 AXI 总线中的握手机制,如下图所示: 

 在图 16.1.3 中, ACLK 为时钟信号, 在 AXI 协议中,所有的输入信号都在是 ACLK 的上升沿采样,所有的输出信号必须在 ACLK 的上升沿之后才能改变。在 T1 之后, 源端将 VALID 拉高,表明 INFORMATION信号线上传输的是有效的地址、数据或者控制信息。目的端在 T2 之后将 READY 拉高, 表明它已经准备好接收数据,此时源端必须保持 INFORMATION 数据稳定不变, 直到 T3 时刻进行数据传输。需要注意的是,源端不允许等目的端的 READY 信号拉高之后, 才将 VALID 信号置为有效状态。 而且,一旦 VALID 拉高,源端必须保持其处于有效状态, 直至成功握手(在时钟上升沿检测到 VALID 和 READY 同时为有效状态)。

AXI 协议的五个通道都有各自的 VALID/READY 握手信号对,每个通道握手信号对的名称如下图所示:

  • 读和写事务都有他们自己的地址通道,这地址通道携带着传输事务所必须的地址和控制信息。
  • 读数据通道传送着从设备到主机的读数据和读响应信息,读数据总线宽度可以是8,16,32,64,128,256,512,1024位。读响应信息指明读事务的完成状态。
  • 写数据通路传送着主机向设备的写数据,读数据总线宽度可以是8,16,32,64,128,256,512,1024位。每八位数据都会有一个byte lane strobe ,用来指明数据总线上面的哪些byte有效。写响应通道提供了设备响应写事务的一种方式。完成信号每一次事务只会产生一个。
  • 主机和设备的接口和互联图如下:

clip_image002

  • 传输地址信息和数据都是在VALID和READY同时为高时有效。
    • 突发式读的时序图如下:

clip_image002[6]

当地址出现在地址总线后,传输的数据将出现在读数据通道上。设备保持VALID为低直到读数据有效。为了表明一次突发式读写的完成,设备用RLAST信号来表示最后一个被传输的数据。

 

    • 重叠突发式读时序图如下:

clip_image002[8]

设备会在第一次突发式读完成后处理第二次突发式读数据。也就意味着,主机一开始传送了两个地址给设备。设备在完全处理完第一个地址的数据之后才开始处理第二个地址的数据

  • 突发式写时序图如下:

clip_image002

    这一过程的开始时,主机发送地址和控制信息到写地址通道中,然后主机发送每一个写数据到写数据通道中。当主机发送最后一个数据时,WLAST信号就变为高。当设备接收完所有数据之后他将一个写响应发送回主机来表明写事务完成

  • AXI协议支持乱序传输。它给每一个通过接口的事务一个IDtag。协议要求相同ID tag的事务必须有序完成,而不同ID tag可以乱序完成。

三、AXI信号描述

     本章主要介绍一些信号描述,其中包括全局信号、写地址通道信号、写数据通道信号、写响应通道信号、读地址通道信号、读数据通道信号、低功耗接口信号。本章的所有表都是以32位的数据总线、4位的写数据闸门、4位的ID段。

1、全局信号

信号

描述

ACLK

Clock source

全局时钟信号

ARESETn

Reset source

全局复位信号,低电平有效

2、写地址通道信号

信号

描述

AWID[3:0]

主机

写地址ID,这个信号是写地址信号组的ID tag。

AWADDR[31:0]

主机

写地址。

AWLEN[3:0]

主机

突发式写的长度。此长度决定突发式写所传输的数据的个数。

AWSIZE[2:0]

主机

突发式写的大小。

AWBURST[1:0]

主机

 

AWLOCK[1:0]

主机

锁类型。

AWCACHE[3:0]

主机

Cache类型。这信号指明事务的bufferable、cacheable、write-through、write-back、allocate attributes信息。

AWPROT[2:0]

主机

保护类型。

AWVALID

主机

写地址有效。

1 = 地址和控制信息有效

0 = 地址和控制信息无效

这个信号会一直保持,直到AWREADY变为高。

AWREADY

设备

写地址准备好。这个信号用来指明设备已经准备好接受地址和控制信息了。

1 = 设备准备好

0 = 设备没准备好

3、写数据通道信号

信号

描述

WID[3:0]

主机

写ID tag,WID的值必须与AWID的值匹配

WDATA[31:0]

主机

写的数据。

WSTRB[3:0]

主机

写阀门。WSTRB[n]标示的区间为WDATA[(8*n)+7:(8*n)]

clip_image002[10]

WLAST

主机

写的最后一个数据。

WVALID

主机

写有效

1 = 写数据和阀门有效

0 = 写数据和阀门无效

WREADY

设备

写就绪。指明设备已经准备好接受数据了

1 = 设备就绪

0 = 设备未就绪

4、写响应通道信号

信号

描述

BID[3:0]

设备

响应ID , 这个数值必须与AWID的数值匹配。

BRESP[1:0]

设备

写响应。这个信号指明写事务的状态。可能有的响应:OKAY、EXOKAY、SLVERR、DECERR。

BVALID

设备

写响应有效。

1 = 写响应有效

0 = 写响应无效

BREADY

主机

接受响应就绪。该信号表示主机已经能够接受响应信息。

1 = 主机就绪

0 = 主机未就绪

5、读地址通道信号

信号

描述

ARID[3:0]

主机

读地址ID。

ARADDR[31:0]

主机

读地址。

ARLEN[3:0]

主机

突发式读长度。

ARSIZE[2:0]

主机

突发式读大小。

ARBURST[1:0]

主机

突发式读类型。

ARLOCK[1:0]

主机

锁类型。

ARCACHE[3:0]

主机

Cache类型。

ARPROT[2:0]

主机

保护类型。

ARVALID

主机

读地址有效。信号一直保持,直到ARREADY为高。

1 = 地址和控制信息有效

0 = 地址和控制信息无效

ARREADY

设备

读地址就绪。指明设备已经准备好接受数据了。

1 = 设备就绪

0 = 设备未就绪

6、读数据通道信号

信号

描述

RID[3:0]

设备

读ID tag。RID的数值必须与ARID的数值匹配。

RDATA[31:0]

设备

读数据。

RRESP[1:0]

设备

读响应。这个信号指明读传输的状态:OKAY、EXOKAY、SLVERR、DECERR。

RLAST

设备

读事务传送的最后一个数据。

RVALID

设备

读数据有效。

1 = 读数据有效。

0 = 读数据无效。

RREADY

主机

读数据就绪。

1 = 主机就绪

0 = 主机未就绪

7、低功耗接口信号

信号

描述

CSYSREQ

CLOCK controller

系统低功耗请求。此信号来自系统时钟控制器,使外围设备进入低功耗状态。

CSYSACK

外围设备

低功耗请求应答。

CACTIVE

外围设备

Clock active

1 = 外围设备时钟请求

0 = 外围设备时钟无请求

四、主机和设备之间的握手过程

本章介绍主机/设备之间的握手过程以及READY和VALD握手信号的关系以及默认值。

1、全部5个通道使用相同的VALID/READY握手机制传输数据及控制信息。传输源产生VLAID信号来指明何时数据或控制信息有效。而目地源产生READY信号来指明已经准备好接受数据或控制信息。传输发生在VALID和READY信号同时为高的时候。VALID和READY信号的出现有三种关系。

(1) VALID先变高READY后变高。时序图如下:

clip_image002[12]

在箭头处信息传输发生。

(2) READY先变高VALID后变高。时序图如下:

clip_image004

同样在箭头处信息传输发生。

(3) VALID和READY信号同时变高。时序图如下:

clip_image006

在这种情况下,信息传输立马发生,如图箭头处指明信息传输发生。

2、通道之间的关系

地址、读、写和写响应通道之间的关系是灵活的。

例如,写数据可以出现在接口上早于与其相关联的写地址。也有可能写数据与写地址在一个周期中出现

两种关系必须被保持:

(1)读数据必须总是跟在与其数据相关联的地址之后。

(2)写响应必须总是跟在与其相关联的写事务的最后出现。

3、通道握手信号之间的依赖性

读事务握手依赖关系如图:

clip_image008

(1)设备可以在ARVALID出现的时候在给出ARREADY信号,也可以先给出ARREADY信号,再等待ARVALID信号。

(2)但是设备必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。

写事务握手依赖关系如图:

clip_image010

(1)主机必须不能够等待设备先给出AWREADY或WREADY信号信号后再给出信号AWVALID或WVLAID。

(2)设备可以等待信号AWVALID或WVALID信号有效或者两个都有效之后再给出AWREADY信号。

(3)设备可以等待AWVALID或WVALID信号有效或者两个信号都有效之后再给出WREADY信号。

clip_image012

五、参考资料

1、https://www.cnblogs.com/mikewolf2002/p/10322532.html

2、https://zhuanlan.zhihu.com/p/96804919

3、2_领航者ZYNQ之嵌入式(SDK)开发指南_V1.3

原文地址:https://www.cnblogs.com/linford/p/15304979.html