高级可拓展接口(Advanced eXtensible Interface, AXI)

《IHI0022H_amba_axi_protocol_spec》
AXI总线 详细整理
AMBA3.0协议——AXI(Advanced eXtensible Interface)总线介绍
AXI_01 《AXI总线系列文章》由来
AXI3与AXI4区别及互联


1. 功能介绍

AMBA中最重要的片内总线,适用于高性能、高带宽、高工作频率、低延迟系统,也是基于多主多从的架构与事务传输。

AXI的特性包括:

● 单通道体系,即控制通道与数据通道相互分离,可分别独立控制和优化。并且各通道传输方向单一,减少延迟。

● 支持字节选通、非对齐数据访问

● 只给出第一地址,亦可完成burst传输

● 基于传输ID实现乱序传输

● 允许电平同步

2. 架构

2.1. 单主单从

先讲一个master、一个slave之间是如何通信的。

AXI将master与slave之间的控制信息和数据信息划分为五个通道进行传输,这五个通道之间是时序独立,这五个通道分别表示:读控制通道AR、读数据通道R、写控制通道AW、写数据通道W、写反馈通道B

每个通道由好几个信号组成
AXI的通道分解架构与APB、AHB不同,APB要求控制信息与数据信息时序对齐,AHB要求控制信息与数据信息差1拍构成流水。

如下图

在这里插入图片描述

这五个通道都是基于valid & ready握手信号实现控制信息or数据信息的交互

其实就是标准握手协议中的写时序,只有当valid与ready同时为高时才判定写成功。
此处AXI则是每个通道在valid与ready同时为高时才判定传输成功。

通道 握手 备注
写控制通道AWMaster 向 Slave 传输,valid & ready握手
写数据通道WMaster 向 Slave 传输,valid & ready握手具备写数据选通功能。且写数据可通过FIFO缓存,无需等到写反馈到来才发起新一轮写
读控制通道ARMaster 向 Slave 传输,valid & ready握手
读数据通道RSlave 向 Master 传输,valid & ready握手含有读数据,也含有读响应表明读传输的完成情况
写反馈通道BSlave 向 Master 传输,valid & ready握手需对每个写事务作响应

2.2. 多主多从

AXI也可实现多主多从的结构,类似于Bus Matrix

如下图,Interconnect同时具备AXI master接口与AXI slave接口

在这里插入图片描述

实际上大多数系统的控制通道带宽显著小于数据通道带宽,因而对于多主多从系统,通过共享控制通道、独立数据通道实现系统性能和interconnect复杂性的平衡。

3. 信号描述

全局信号

Signal Source Width(bits) Description
ACLK外部1
ARESTn外部1低电平复位

3.1. AW

Signal Source Width(bits) Description
AWIDMasterAWID_WIDTH写事务ID
AWADDRMasterAWADDR_WIDTHburst写事务第一个WDATA的地址
AWLENMaster8该数值+1就表示此次写事务的WDATA个数
AWSIZEMaster3WDATA中有效byte大小
AWBURSTMaster2burst传输类型
AWLOCKMaster2写事务的原子特性
AWCACHEMaster4写事务在系统中运行的要求
AWPROTMaster3写事务的保护属性:特权、安全级别、访问类型
AWQOSMaster4写事务的服务质量标识符
AWREGIONMaster4写事务的区域指示符
AWUSERMasterUSER_REQ_WIDTH自定义
AWVALIDMaster1AW所有控制信息有效
AWREADYSlave1AW所有控制信息准备接收
Parameter Units Description
AWID_WIDTHbitAXI AW通道的AWID位宽
AWADDR_WIDTHbitAXI AW通道的AWADDR位宽
USER_REQ_WIDTHbitAXI AW通道的AWUSER和AR通道的ARUSER位宽

3.2. W

Signal Source Width(bits) Description
WIDMasterAWID_WIDTH写事务ID,注意该信号AXI3具备,AXI4不具备
WDATAMasterWDATA_WIDTH写数据
WSTRBMasterWDATA_WIDTH/8写选通
WLASTMaster1写事务中的最后一个写数据
WUSERMasterUSER_REQ_WIDTH自定义
WVALIDMaster1W通道所有数据信息有效
WREADYSlave1W通道所有数据信息准备接收
Parameter Units Description
WID_WIDTHbitAXI W通道的WID位宽
WDATA_WIDTHbitAXI W通道的WDATA位宽
USER_REQ_WIDTHbitAXI W通道的WUSER位宽

3.3. AR

Signal Source Width(bits) Description
ARIDMasterARID_WIDTH读事务ID
ARADDRMasterARADDR_WIDTHburst读事务第一个读传输地址
ARLENMaster8该数值+1就表示此次读事务的RDATA个数
ARSIZEMaster3RDATA中有效byte大小
ARBURSTMaster2burst传输类型
ARLOCKMaster2读事务的原子特性
ARCACHEMaster4读事务在系统中运行的要求
ARPROTMaster3读事务的保护属性:特权、安全级别、访问类型
ARQOSMaster4读事务的服务质量标识符
ARREGIONMaster4读事务的区域指示符
ARUSERMasterUSER_REQ_WIDTH自定义
ARVALIDMaster1AR通道所有控制信息有效
ARREADYSlave1AR通道所有控制信息准备接收
Parameter Units Description
ARID_WIDTHbitAXI AR通道的ARID位宽
ARADDR_WIDTHbitAXI AR通道的ARADDR位宽
USER_REQ_WIDTHbitAXI AR通道的ARUSER位宽

3.4. R

Signal Source Width(bits) Description
RIDSlaveRID_WIDTH读事务ID
RDATASlaveRDATA_WIDTH读数据
RRESPSlave2读反馈,表明读传输的状态
RLASTSlave1读事务中的最后一个读数据
RUSERSlaveUSER_REQ_WIDTH自定义
RVALIDSlave1R通道所有数据信息有效
RREADYMaster1R通道所有数据信息准备接收
Parameter Units Description
RID_WIDTHbitAXI R通道的RID位宽
RDATA_WIDTHbitAXI R通道的RDATA位宽
USER_REQ_WIDTHbitAXI R通道的RUSER位宽

3.5. B

Signal Source Width(bits) Description
BIDSlaveBID_WIDTH写事务ID
BRESPSlave2写响应
BUSERSlaveUSER_REQ_WIDTH自定义
BVALIDSlave1B通道所有写反馈信息有效
BREADYMaster1B通道所有写反馈信息准备接收
Parameter Units Description
WID_WIDTHbitAXI B通道的BID位宽
USER_REQ_WIDTHbitAXI B通道的BUSER位宽

4. 逻辑设计

4.1. 单通道传输

前面提到过对于每个通道而言,都是基于valid & ready实现握手,即valid拉高表示传输有效,必须等到ready也为高时才能拉低,表示完成传输

在这里插入图片描述
那么各通道之间是如何协同实现读写握手呢?见下

4.2. 多通道outstanding传输

outstanding意思是未完成的、未解决的。此处意思是读写握手中,上一次握手还未完成就可以发送下一次握手的信息,这样依旧能保证正确的读写。这是AXI的一大特点,能够提高工作效率。

例如先发写数据再发写地址、先发很多个写数据再发其对应的写地址。

以写为例,APB中pwdata和paddr是时序对齐的,而且必须完成一次握手才能进行下一次。AHB的读写握手也是必须完成之后再来下一次,所以他俩都不是outstanding。而AXI的AW通道和W通道的控制信号可以一次性发送多个。

outstanding传输的实现机制是基于burst传输中的ID号。核心思想如下

多个控制信息burst通过ID相互区分,多个数据信息burst通过ID相互区分

每个控制信息burst在时间上的先后顺序,必须与相应的数据信息burst在时间上的先后顺序一致

相同的控制信息ID与数据信息ID相匹配,以实现一次访问

以写为例,先在AW通道发送3包写控制信息,AWID分别为0、1、2,然后在W通道发送3包写数据信息。即使写控制和写数据时序上不是对齐的,AXI slave依然可以根据AWID正确地将数据写入地址中。同理,AXI slave在B通道作写反馈时BID为0、1、2且BRESP都是OKAY,AXI master也能够根据BID认为这3次写成功了。

当写访问次数过多时,可能AXI master在AW通道发送了3包awaddr不同的写控制信息,且AWID都是10,然后在W通道也发送了3包wdata不同的写数据信息,WID也都是10。那么axi master必须保证这3包ID相同的写控制和写数据在时间上先后顺序必须是相互对应的。

● 乱序传输(AXI3特有):不同ID的多个控制信息burst在时间上的先后顺序可任意。不同ID的多个数据信息burst在时间上的先后顺序可任意,如下图
在这里插入图片描述
如果要实现乱序传输,显然必须根据ID号缓存不同的控制信息,这样一个FIFO就无法解决问题了,必须是带有特定地址信息的RAM存储控制信息,这样的话就占用角度的资源,所以AXI4就砍掉了这个功能。

其实outstanding传输的本质就是如此,下面针对不同情景分别详细阐述。

AR 与 R 通道协同

完成burst读操作,需要满足以下条件:

● 接受读控制信息之后才能读反馈,即在ARVALID与ARREADY同时为高之后,RVALID才能拉高

● AXI Slave要反馈的RID必须与AXI Slave收到的ARID匹配。相同的ARID要在时间上与相同的RID相匹配

● interconnect中,为每个AXI Master的ARID添加额外的位,以表明该包数据来自于哪个AXI Master,如下图

在这里插入图片描述

就是你必须确定Slave收到了读控制信息,才能返回读数据
协议原文如下
在这里插入图片描述
Single-headed arrows point to signals that can be asserted before or after the signal at the start of the arrow.
Double-headed arrows point to signals that must be asserted only after assertion of the signal at the start of the arrow.

AW、W 与 B 通道协同

完成burst写操作,必须满足以下条件:

● 必须收到写控制信息和写数据信息,才能完成写反馈,即在AWVALID与AWREADY同时为高、以及WVALID与WREADY同时为高之后,BVALID才能拉高

● AXI Master AW通道的写控制信息发送顺序要与W通道的写数据信息发送顺序一致,AWID顺序要与BID顺序一致

● interconnect中,为每个AXI Master的AWID、WID添加额外的位,以表明该包数据来自于哪个AXI Master

AXI4没有WID所以不支持乱序传输

这里是引用
Single-headed arrows point to signals that can be asserted before or after the signal at the start of the arrow.
Double-headed arrows point to signals that must be asserted only after assertion of the signal at the start of the arrow.

4.3. 传输配置

下面对各传输信号的功能作介绍

AWADDR 与 ARADDR

表示burst传输第一个byte的地址,且Master只需提供第一个byte的地址。后续地址需要Slave来计算。

并且一次burst传输地址变化不可超过4KB,即’h8000

AWLEN[7:0] 与 ARLEN[7:0]

加1之后就分别表示burst写数据长度和burst读数据长度,同时规定了

● INCR类burst传输,AxLEN可为8’d0~8’d255

● WRAP类burst传输,burst长度只能为2、4、8、16之一,因此AxLEN取值必须为8’d1、8’d3、8’d7、8’d15 之一

● 一次burst传输地址变化不可超过4KB,即’h8000

AWSIZE[2:0] 与 ARSIZE[2:0]

这个与AHB中的HSIZE含义相同,表示burst传输中各数据有效byte数目

满足公式Number_Bytes = 2 ^ AxSIZE;

AxSIZE[2:0] Transfer Data Size = 2^(AxSIZE) byte Description
3'b0008 bits = 1 Byte数据传输有效大小为1 Byte
3'b00116 bits = 2 Byte数据传输有效大小为1 Half Word
3'b01032 bits = 4 Byte数据传输有效大小为1 Word
3'b01164 bits = 8 Byte数据传输有效大小为1 DoubleWord
3'b100128 bits = 16 Byte数据传输有效大小为4 Word
3'b101256 bits = 32 Byte数据传输有效大小为8 Word
3'b110512 bits = 64 Byte数据传输有效大小为16 Word
3'b1111024 bits = 128 Byte数据传输有效大小为32 Word

AWBURST[1:0] 与 ARBURST[1:0]

表示burst传输的类型,包括三种

HBRUST[1:0] Type Description
2'b00FIXED一次burst传输中地址和数据都不改变(写burst各数据的WSTRB可各不相同)
2'b01INCR递增burst传输。AxADDR为起始地址,1<<AxSIZE(Byte)为地址递增公差,AxLEN+1为burst传输的数据个数
2'b10WRAP回环burst传输,AxADDR以1<<AxSIZE(Byte)公差回环递增AxLEN+1次
2'b11保留

INCR模式的burst传输好说,地址是以AxSIZE(Byte)不断递增,每次burst传输是传AxLEN+1个数据,于是就递增AxLEN+1次。

但是WRAP是回环模式,意思是burst读写地址必须在一个离散范围的内递增,若到达了该范围最大值,读写地址就返回到该范围的最小值

而这个最小值就叫作回环边界,Wrap Boundary,而这个范围的最大值就是下一个回环边界。

那么这个回环边界怎么算呢?

W r a p B o u n d a r y = i n t ( A x A D D R ( A x L E N + 1 ) ⋅ 2 A x S I Z E [ 2 : 0 ] ) ⋅ ( A x L E N + 1 ) ⋅ 2 A x S I Z E [ 2 : 0 ] Wrap Boundary = int(\frac{AxADDR}{(AxLEN+1)·2^{AxSIZE[2:0]}})·(AxLEN+1)·2^{AxSIZE[2:0]} WrapBoundary=int((AxLEN+1)2AxSIZE[2:0]AxADDR)(AxLEN+1)2AxSIZE[2:0]

上述回环不等式的意思就是burst读写地址在 [ ′ h 0 , ′ h 8000 ] ['h0,'h8000] [h0,h8000]内按照公差 2 A x S I Z E [ 2 : 0 ] 2^{AxSIZE[2:0]} 2AxSIZE[2:0] byte构成的等差数列中,每(AxLEN+1)个地址构成一个回环
所以说回环边界一定是 ( A x L E N + 1 ) ⋅ 2 A x S I Z E [ 2 : 0 ] {(AxLEN+1)·2^{AxSIZE[2:0]}} (AxLEN+1)2AxSIZE[2:0]的整数倍。那么对于任意一个读写地址,它所在的回环边界一定是起始地址AxADDR除以 ( A x L E N + 1 ) ⋅ 2 A x S I Z E [ 2 : 0 ] {(AxLEN+1)·2^{AxSIZE[2:0]}} (AxLEN+1)2AxSIZE[2:0]的商部分乘以 ( A x L E N + 1 ) ⋅ 2 A x S I Z E [ 2 : 0 ] {(AxLEN+1)·2^{AxSIZE[2:0]}} (AxLEN+1)2AxSIZE[2:0]

如下图,红框表示回环的范围

在这里插入图片描述

RRESP[1:0] 与 BRESP[1:0]

分别表示读响应和写响应,注意BRESP用于对一个burst的整个数据包传输做出响应,RRESP可用于对一个burst中的某一个data传输做出响应

个人认为这样的协定可以更改,让二者均表示一次burst的整个传输是否出现错误
原文如下:
For a write transaction, a single response is signaled for the entire burst, and not for each data transfer within the burst.
In a read transaction, the slave can signal different responses for different transfers in a burst. For example, in a burst of 16 read transfers the slave might return an OKAY response for 15 of the transfers and a SLVERR response for one of the transfers.

含义如下

RRESP[1:0] 与 BRESP[1:0] Type Description
2'b00OKAY访问成功
2'b01EXOKAY独占访问成功
2'b10SLVERR传输失败
2'b11DECERR表示interconnect无法解码出AXI MASTER的片选信号。AXI协议建议设定一个default axi slave,用于反馈DECERR信号
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值