AXI总线协议

AXI特定名词

AXI Transaction:the complete set of required operations on the AXI bus form the AXI Transaction.表示传输一段数据(AXI burst)所需的一整套操作;

AXI Burst:any required payload data is transferred as an AXI Burst.表示AXI待传数据;

AXI Beats:a burst can comprise multiple data transfers, or AXI Beats.表示AXI burst的组成,一个Beat就是一个transfer。
关系:一个Burst指对一个地址上的数据进行拆分后多次传输,传输Burst的过程称为transaction,每次传输内容称为一个‘Beat’,传输Beat的过程称为transfer。

AXI组成

AXI4协议中包含五种信道,通道之间相互独立且存在差别,通过通道进行通信之前需要使用VALID/READY 进行握手,Read和Write根据Master定义:

  • 读地址信道(Read Address Channel)
  • 写地址信道(Write Address Channel)
  • 读数据信道(Read Data Channel)
  • 写数据信道(Write Data Channel)
  • 写响应信道(Write Response Channel)

还有两种Component

  • Master component
  • Slave component

通信由Master发起,Master可以对Slave进行读数据(read)或写(write)数据。每次读写操作都需要一个地址,读地址信道(Read Address Channel)和写地址信道(Write Address Channel)用于传输地址。在写完数据后,Master需要确认Slave有没有收完数据,Slave收到完整数据后,会通过写响应信道(Write Response Channel)给Master一个反馈(completion),表示写操作已经完成。

 

VALID/READY 握手机制

在五个信道通信之前,需要使用VALID/READY进行握手,信道通信仅发生在VALID和READY同时有效的阶段[1]:

  由数据发送端发送VALID,表示已经将数据、地址或控制信息置于写总线上;

  由数据接收端发送READY,表示已经准备好接收发送端的信息;

当VALID和READY同时置高时,在时钟上升沿到达后,表示开始数据传输;完成数据传输后,两个信号置低。

信道中的VALID/READY

五个信道的VALID/READY信号表示如下:

 A表示Address,W表示Write,B表示Back(Response),R表示Read;

在握手过程中,还会用到LAST信号。LAST信号存在Write Data Channel和Read Data Channel中,分别表示为WLAST和RLAST,用于标记burst的最后一次数据传输,当slave接收到LAST信号后,说明本次数据传输完成。

双向流控机制

VALID/READY 机制使用双向流控机制,指发送端通过 VALID 置起控制发送速度的同时,接收端也可以通过将置高READY 与否控制接收速度,反压发送方的发送速度。

握手规则

信道的握手规则

VALID信号置高后,在完成本次传输之前不能拉低,直到有相应的READY被声明;

READY信号置高后可以在VALID信号置高之前取消;

VALID信号置高与READY信号无关,VALID信号不能由READY信号控制;

在一个burst的最后一次transfer时,必须由LAST信号置高。

握手信号在不同操作下的依赖关系:

PS:单箭头表示双方无先后要求,双箭头表示箭头所指对象应迟于箭头出发信号发送。

读操作握手信号依赖关系:

  读数据通道的握手信号要在读地址通道后传输

 

 读操作数据传输图:

写操作握手信号依赖关系:

写操作时,写数据通道和写地址通道没有先后关系;

写反馈通道信号必须在写数据通道和写地址通道握手后进行;

WVALID信号与WLAST信号相关;

 写操作数据传输图:

 

信号

全局信号

ACLK,全局时钟信号,所有传输操作都发生在上升沿;

ARESETn,全局复位信号,低电平有效,可以异步复位,但是必须和ACLK同步释放。复位过程中VALID信号都要拉低,其他所有信号可以驱动为任意值。

复位过程中,Master必须把ARVILID、AWRVLID和WVALID拉低;Slave必须把RVIALID和BVALID拉低。

 写地址通道信号:

Signal Source Description
AWID Master 写地址ID,写地址
AWADDR Master 写地址,在一次burst transaction中第一个transfer的地址。
AWLEN Master burst的长度,一次burst中的transfer的数量。
AWSIZE Master burst中一次transfer的字节数。
AWBURST Master burst类型和size信息,决定本次burst中trasnfer地址的计算方式
AWLOCK Master lock类型,
AWCACHE Master 内存类型
AWPORT Master 保护类型,
AWQOS Master QoS
AWREGION Master 区域标志,能实现单一物理接口对应多个逻辑接口
AWUSER Master user信号,在写地址信号中可选的用户定义信号,仅在AXI4使用
AWVALID Master 写地址的valid信号,表示写地址和控制信号可以发送。
AWREADY Slave 写地址的ready信号,表示slave可以接受一个地址或相关的控制信号。

读地址通道信号

Signal Source Description
ARID Master 读地址ID
ARADDR Master 读地址,首地址?
ARLEN Master burst的长度,一次burst中的transfer的数量。
ARSISE Master burst中一次transfer的字节数。
ARBURST Master burst类型和size信息,决定本次burst中trasnfer地址的计算方式
ARLOCK Master lock类型
ARCACHE Master 内存类型,表明一次传输如何通过系统
ARPROT Master 保护烈性,一次传输的安全及被
ARQOS Master QoS
ARREGION Master 区域标志
ARVALID Master 读地址VALID信号
ARREADY Slave 读地址READY信号

写数据通道信号

Signal Source Description
WID Master 写数据ID,仅AXI3支持
WDATA Master 写数据
WSTRB Master 标记写数据中有效的字节,一位对应一个字节
WLAST Master 写LAST信号,在本次burst的最后一次transfer中置高。
WUSER Master user信号,在写数据信号中可选的用户定义信号,仅在AXI4使用
WVALID Master 写数据的valid信号,表示写地址和控制信号可以发送。
WREADY Slave 写数据的ready信号,表示slave可以接受一个地址或相关的控制信号

 特点:存在一个读数据通道没有的STROBE信号,用于标识写数据中有效的传输字节,或者用于读写宽度不对称

读数据通道

Signal Source Description
RID Slave 读数据ID
WDATA Slave 读数据
RRESP Slave 读回复信号,表示读transfer的状态
RLAST Slave 读LAST信号,在本次burst的最后一次transfer中置高。
RUSER Slave user信号,在读数据信号中可选的用户定义信号,仅在AXI4使用
RVALID Slave 写数据的valid信号,表示写地址和控制信号可以发送。
RREADY Master 写数据的ready信号,表示slave可以接受一个地址或相关的控制信号

特点:读Response信号在读数据通道中由slave发送,且无strobe信号。

写回复通道信号

Signal Source Description
BID Slave 写ID
BRESP Slave 写回复信号,表示写transaction的状态
BUSER Slave user信号,仅AXI4支持
BVALID Slave 回复VALID,表示写回复信号可以发送
BREADY Master 回复READY,表示master可以接受回复

低功耗接口信号

Signal Source Description
CSYSREQ 时钟控制器 系统退出低功耗请求,此信号由时钟控制器向外设发送
CSYSACK 外设 退出低功耗状态确认
CACTIVE 外设 外设请求时钟有效

Burst传输

In the AHB protocol every transfer comes with an address value on HADDR. As you already know how the address will change because of what is signalled on HBURST, HTRANS and HSIZE, the HADDR information for all transfers after the start of the burst could be considered unnecessary as the target slave could calculate the addresses for transfers after the start of the burst.

In AXI the aim was to reduce unnecessary bus traffic, so here the master just issues the address for the start of a burst, and that is all that is required on the address channel. The target slave then calculates the address changes for each subsequent transfer in the burst based on what it sampled on AxADDR, AxSIZE, AxBURST and AxLEN.

So for example, if the AXI master signals an INCR burst of 4 transfers, with AxSIZE signalling 32-bit transfers, and AxADDR is 0x4, the slave can then see that the transfers for this burst will be to 0x4, 0x8, 0xC and 0x10.[2]

理解:由于每次传输的数据地址变化存在一定规律,因此AXI传输与规律相关的参数,而非直接传输每次的数据地址

AXI协议是基于burst的,Master只给出transaction的第一个字节的地址,Slave必须计算后续transfer的地址。

通道信号描述

在地址通道中有三个信号控制进行控制,包括:

BURST类型有三种,分别为:

AxBURST[1:0] Burst Type Description
0b00 FIXED 每个transger都使用相同地址,后续数据不断写入起始地址,刷新其实地址上的数据
0b01 INCR 后续地址在前一个地址的基础上递增
0b10 WRAP 从起始地址递增至到达最高地址,再返回起始地址,重复上述操作,用于cache的访问
0b11 Reserved  

BURST len:指在一次Burst传输中transfer的次数,从0开始,实际长度为AxLEN+1.

要求:

  • INCR类型最大支持长度为256,其他类型最大长度为16,所有BURST类型最少为1;
  • 对于长度超过16的INCR BURST,可以转换为较小的BURST,即使transaction attributes指明该transaction时Non-modifiable;
  • 对于WRAP模式,BURST len仅能为2、4、8、16;
  • 一次传输中,地址不能跨越一个4KB分区,防止跨越两个Slave的边界
  • 一次transaction不能再未达到BURST len的时候提前结束。

BURST size指在一次transfer中的最大数据宽度,burst size不能超过数据线本身宽度;当数据线本身宽度大于BURST size时,将根据协议相关规定制定数据在部分数据线中传输。

AxSIZE由三个字节表示,数据大小为2^AxSIZE[2:0]。

BURST address:

  • Start_Address:由Master决定,每个burst的第一个transfer的地址
  • Number_Bytes = burst size
  • Data_Bus_Bytes:总线宽度/8
  • Aligned_Address:Start_Address @ Number_Bytes

RRESP[1:0]和BRESP[1:0]

OKAY:Normal access success + Exclusive access failed

EXOKAY: Exclusive access okay

SLVERR: Slave error

  • FIFO满或空;
  • transfer size不支持;
  • 向只读设备写入;
  • Slave timeout;
  • access to a disabled or powered-down function

DECERR:Decode error

  • interconnnect不能成功向Slave access译码;
  • access一个缺省Slave,由缺省Slave回应DECERR

在write transaction中,对于整个burst,slave只会回应一个BRESP;

在read transavtion中,Slave可以对不同的transfer回应不同的RRESP;

AxCACHE

参考文献

[1]https://www.cnblogs.com/lkiller/p/4773235.html

[2]https://community.arm.com/developer/ip-products/system/f/embedded-forum/10057/burst-based-transactions-on-axi?ReplySortBy=Votes&ReplySortOrder=Descending

[3]https://wenku.baidu.com/view/45491979bf1e650e52ea551810a6f524ccbfcbd5.html?rec_flag=default&sxts=1582552068762

原文地址:https://www.cnblogs.com/lizhiqing/p/12359222.html