AXI合集

短时间内工作用不到,整合一下以前的收藏以防以后用到

 

转知乎大佬(已看完):

深入 AXI4 总线(O)专栏目录与资料集合 - 知乎 (zhihu.com)

各信号介绍(但是看样子不像是AXI4):

(1条消息) AXI总线协议资料整理_誓约胜利之舰的博客-CSDN博客_axi rid

 

outstanding问题

AXI outstanding理解 - 知乎 (zhihu.com)

burst 传输可以减少地址通道的交互,提升单笔传输的效率

outstanding 可以减少多笔传输之间的等待,提升多笔传输的效率

 

乱序和交织:

AXI总线的out of order/interleaving到底是怎么一回事?_Ericcoding的博客-CSDN博客_axi的out of order

乱序针对burst,交织针对transfer

 

超详细(没看完):

AXI总线总结 - 知乎 (zhihu.com)

 

AXI死锁:

蔚来一面的时候问了AXI死锁:

 

AXI4协议移除了WID,那么master连发多个trans时,aw 通道虽然和w通道隔离,但是顺序就必定要一致了,否则无法判断WDATA到底是哪个AWADDR的。那么对于AXI3呢?虽然AXI3协议有WID,但是协议规定WDATA第一笔必须和顺序一致。怎么理解呢?比如AW通道发送ADDR0, ADDR1,ADDR2 三笔写操作,每个写操作burst length=2,那么W通道的顺序在AXI4协议的规定下必须是WDATA0_0,WDATA0_1,WDATA1_0,WDATA1_1,WDATA2_0,WDATA2_1;而AXI3协议稍微宽松一点可以是WDATA0_0, WDATA1_0, WDATA2_0, WDATA0_1, WDATA1_1, WDATA2_1,即3个*_0之间的顺序不能乱。所以对于马上讲到的第二种死锁,AXI3,AXI4不会因为WID而有区别,都存在死锁。

 

回到第二种死锁,第二种死锁就是因为上述W通道的顺序规定,假设master先后发出写请求trans A和B,对于mater,它要按照协议先把WDATA_A发了,再发WDATA_B。如果SLAVE先收到了ADDR_B,再收到ADDR_A,那么按协议,它前面的总线接口就要等WDATA_B来才会给SLAVE,而WDATA_B注定是等不到。

 

WB还在master的接口处,无法发送到总线上。因为按照master 地址通道先transA再transB的顺序,WA必须被slave接收并完成握手(bvalid,bready握手),才能接着发WB,所以WB目前发不出来。然而slave因为先收到了AWB,再AWA,所以它只愿意接收WB,WA卡在图里的总线不被接收,所以WA永远不被接收,进而WB也永远不能发出。

 

解决方法:重排序

posted @ 2023-05-10 20:16  xkxxxxzzz  阅读(556)  评论(0)    收藏  举报