AXI是高級擴展接口,在AMBA3.0中提出,AMBA4.0將其修改升級為AXI4.0。AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-stream
AXI4.0-lite是AXI的簡化版本,ACE4.0 是AXI緩存一致性擴展接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA進行以數據為主導的大量數據的傳輸應用。
1.簡介
1.1 關於AXI協議
AMBA AXI協議支持支持高性能、高頻率系統設計。
適合高帶寬低延時設計
無需復雜的橋就能實現高頻操作
能滿足大部分器件的接口要求
適合高初始延時的存儲控制器
提供互聯架構的靈活性與獨立性
向下兼容已有的AHB和APB接口
關鍵特點:
分離的地址/控制、數據相位
使用字節線來支持非對齊的數據傳輸
使用基於burst的傳輸,只需傳輸首地址
分離的讀、寫數據通道,能提供低功耗DMA
支持多種尋址方式
支持亂序傳輸
允許容易的添加寄存器級來進行時序收斂
1.2 AXI架構
AXI協議是基於burst的傳輸,並且定義了以下5個獨立的傳輸通道:讀地址通道、讀數據通道、寫地址通道、寫數據通道、寫響應通道。
地址通道攜帶控制消息用於描述被傳輸的數據屬性,數據傳輸使用寫通道來實現“主”到“從”的傳輸,“從”使用寫響應通道來完成一次寫傳輸;讀通道用來實現數據從“從”到“主”的傳輸。
- AXI是基於VALID/READY的握手機制數據傳輸協議,傳輸源端使用VALID表明地址/控制信號、數據是有效的,目的端使用READY表明自己能夠接受信息。
讀/寫地址通道:讀、寫傳輸每個都有自己的地址通道,對應的地址通道承載着對應傳輸的地址控制信息。
讀數據通道:讀數據通道承載着讀數據和讀響應信號包括數據總線(8/16/32/64/128/256/512/1024bit)和指示讀傳輸完成的讀響應信號。
寫數據通道:寫數據通道的數據信息被認為是緩沖(buffered)了的,“主”無需等待“從”對上次寫傳輸的確認即可發起一次新的寫傳輸。寫通道包括數據總線(8/16…1024bit)和字節線(用於指示8bit 數據信號的有效性)。
寫響應通道:“從”使用寫響應通道對寫傳輸進行響應。所有的寫傳輸需要寫響應通道的完成信號。

AXI協議提供單一的接口定義,能用在下述三種接口之間:master/interconnect、slave/interconnect、master/slave。
可以使用以下幾種典型的系統拓撲架構:
共享地址與數據總線
共享地址總線,多數據總線
multilayer多層,多地址總線,多數據總線
在大多數系統中,地址通道的帶寬要求沒有數據通道高,因此可以使用共享地址總線,多數據總線結構來對系統性能和互聯復雜度進行平衡。
寄存器片(Register Slices):
每個AXI通道使用單一方向傳輸信息,並且各個通道直接沒有任何固定關系。因此可以可以在任何通道任何點插入寄存器片,當然這會導致額外的周期延遲。
使用寄存器片可以實現周期延遲(cycles of latency)和最大操作頻率的折中;使用寄存器片可以分割低速外設的長路徑。
2.信號描述
表 2-1 全局信號
信號名 源 描述
ACLK 時鍾源 全局時鍾信號
ARESETn 復位源 全局復位信號,低有效
表 2-2 寫地址通道信號
信號名 源 描述
AWID 主機 寫地址ID,用來標志一組寫信號
AWADDR 主機 寫地址,給出一次寫突發傳輸的寫地址
AWLEN 主機 突發長度,給出突發傳輸的次數
AWSIZE 主機 突發大小,給出每次突發傳輸的字節數
AWBURST 主機 突發類型
AWLOCK 主機 總線鎖信號,可提供操作的原子性
AWCACHE 主機 內存類型,表明一次傳輸是怎樣通過系統的
AWPROT 主機 保護類型,表明一次傳輸的特權級及安全等級
AWQOS 主機 質量服務QoS
AWREGION 主機 區域標志,能實現單一物理接口對應的多個邏輯接口
AWUSER 主機 用戶自定義信號
AWVALID 主機 有效信號,表明此通道的地址控制信號有效
AWREADY 從機 表明“從”可以接收地址和對應的控制信號
表 2-3 寫數據通道信號
信號名 源 描述
WID 主機 一次寫傳輸的ID tag
WDATA 主機 寫數據
WSTRB 主機 寫數據有效的字節線,用來表明哪8bits數據是有效的
WLAST 主機 表明此次傳輸是最后一個突發傳輸
WUSER 主機 用戶自定義信號
WVALID 主機 寫有效,表明此次寫有效
WREADY 從機 表明從機可以接收寫數據
表 2-4 寫響應通道信號
信號名 源 描述
BID 從機 寫響應ID tag
BRESP 從機 寫響應,表明寫傳輸的狀態
BUSER 從機 用戶自定義
BVALID 從機 寫響應有效
BREADY 主機 表明主機能夠接收寫響應
表 2-5 讀地址通道信號
信號名 源 描述
ARID 主機 讀地址ID,用來標志一組寫信號
ARADDR 主機 讀地址,給出一次寫突發傳輸的讀地址
ARLEN 主機 突發長度,給出突發傳輸的次數
ARSIZE 主機 突發大小,給出每次突發傳輸的字節數
ARBURST 主機 突發類型
ARLOCK 主機 總線鎖信號,可提供操作的原子性
ARCACHE 主機 內存類型,表明一次傳輸是怎樣通過系統的
ARPROT 主機 保護類型,表明一次傳輸的特權級及安全等級
ARQOS 主機 質量服務QoS
ARREGION 主機 區域標志,能實現單一物理接口對應的多個邏輯接口
ARUSER 主機 用戶自定義信號
ARVALID 主機 有效信號,表明此通道的地址控制信號有效
ARREADY 從機 表明“從”可以接收地址和對應的控制信號
表 2-6 讀數據通道信號
信號名 源 描述
RID 從機 讀ID tag
RDATA 從機 讀數據
RRESP 從機 讀響應,表明讀傳輸的狀態
RLAST 從機 表明讀突發的最后一次傳輸
RUSER 從機 用戶自定義
RVALID 從機 表明此通道信號有效
RREADY 主機 表明主機能夠接收讀數據和響應信息
表 2-7 低功耗接口信號
信號名 源 描述
CSYSREQ 時鍾控制器 系統退出低功耗請求,此信號從“時鍾控制器”到“外設”
CSYSACK 外設 退出低功耗狀態確認
CACTIVE 外設 外設請求時鍾有效
3.信號接口要求
3.1時鍾復位
時鍾
每個AXI組件使用一個時鍾信號ACLK,所有輸入信號在ACLK上升沿采樣,所有輸出信號必須在ACLK上升沿后發生。
復位
AXI使用一個低電平有效的復位信號ARESETn,復位信號可以異步斷言,但必須和時鍾上升沿同步去斷言。
復位期間對接口有如下要求:①主機接口必須驅動ARVALID,AWVALID,WVALID為低電平;②從機接口必須驅動RVALID,BVALID為低電平;③所有其他信號可以被驅動到任意值。
在復位后,主機可以在時鍾上升沿驅動ARVALID,AWVALID,WVALID為高電平。
3.2基本讀寫傳輸
握手過程
5個傳輸通道均使用VALID/READY信號對傳輸過程的地址、數據、控制信號進行握手。使用雙向握手機制,傳輸僅僅發生在VALID、READY同時有效的時候。下圖是幾種握手機制:
圖 3-1 VALID before READY 握手
圖 3-2 READY before VALID 握手
圖 3-3 VALID with READY 握手
通道信號要求
通道握手信號:每個通道有自己的xVALID/xREADY握手信號對。
寫地址通道:當主機驅動有效的地址和控制信號時,主機可以斷言AWVALID,一旦斷言,需要保持AWVALID的斷言狀態,直到時鍾上升沿采樣到從機的AWREADY。AWREADY默認值可高可低,推薦為高(如果為低,一次傳輸至少需要兩個周期,一個用來斷言AWVALID,一個用來斷言AWREADY);當AWREADY為高時,從機必須能夠接受提供給它的有效地址。
寫數據通道:在寫突發傳輸過程中,主機只能在它提供有效的寫數據時斷言WVALID,一旦斷言,需要保持斷言狀態,知道時鍾上升沿采樣到從機的WREADY。WREADY默認值可以為高,這要求從機總能夠在單個周期內接受寫數據。主機在驅動最后一次寫突發傳輸是需要斷言WLAST信號。
寫響應通道:從機只能它在驅動有效的寫響應時斷言BVALID,一旦斷言需要保持,直到時鍾上升沿采樣到主機的BREADY信號。當主機總能在一個周期內接受寫響應信號時,可以將BREADY的默認值設為高。
讀地址通道:當主機驅動有效的地址和控制信號時,主機可以斷言ARVALID,一旦斷言,需要保持ARVALID的斷言狀態,直到時鍾上升沿采樣到從機的ARREADY。ARREADY默認值可高可低,推薦為高(如果為低,一次傳輸至少需要兩個周期,一個用來斷言ARVALID,一個用來斷言ARREADY);當ARREADY為高時,從機必須能夠接受提供給它的有效地址。
讀數據通道:只有當從機驅動有效的讀數據時從機才可以斷言RVALID,一旦斷言需要保持直到時鍾上升沿采樣到主機的BREADY。BREADY默認值可以為高,此時需要主機任何時候一旦開始讀傳輸就能立馬接受讀數據。當最后一次突發讀傳輸時,從機需要斷言RLAST。
通道間關系
AXI協議要求通道間滿足如下關系:
寫響應必須跟隨最后一次burst的的寫傳輸
讀數據必須跟隨數據對應的地址
通道握手信號需要確認一些依耐關系
通道握手信號的依耐關系
為防止死鎖,通道握手信號需要遵循一定的依耐關系。①VALID信號不能依耐READY信號。②AXI接口可以等到檢測到VALID才斷言對應的READY,也可以檢測到VALID之前就斷言READY。下面有幾個圖表明依耐關系,單箭頭指向的信號能在箭頭起點信號之前或之后斷言;雙箭頭指向的信號必須在箭頭起點信號斷言之后斷言。
圖 3-4 讀傳輸握手依耐關系
圖 3-5 寫傳輸握手依耐關系
圖 3-6 從機寫響應握手依耐關系
一個write burst傳輸:AW通道在下一個clock cycle被采樣,W通道然后傳輸data,B通道最后傳輸resp。
一個read burst傳輸:AR通道在下一個clock cycle被采樣,R通道然后傳輸data。
3.3傳輸結構
地址結構
AXI協議是基於burst的,主機只給出突發傳輸的第一個字節的地址,從機必須計算突發傳輸后續的地址。突發傳輸不能跨4KB邊界(防止突發跨越兩個從機的邊界,也限制了從機所需支持的地址自增數)。
1)突發長度
ARLEN[7:0]決定讀傳輸的突發長度,AWLEN[7:0]決定寫傳輸的突發長度。AXI3只支持1~16次的突發傳輸(Burst_length=AxLEN[3:0]+1),AXI4擴展突發長度支持INCR突發類型為1~256次傳輸,對於其他的傳輸類型依然保持1~16次突發傳輸(Burst_Length=AxLEN[7:0]+1)。
burst傳輸具有如下規則:
wraping burst ,burst長度必須是2,4,8,16
burst不能跨4KB邊界
不支持提前終止burst傳輸
所有的組件都不能提前終止一次突發傳輸。然而,主機可以通過解斷言所有的寫的strobes來使非所有的寫字節來減少寫傳輸的數量。讀burst中,主機可以忽略后續的讀數據來減少讀個數。也就是說,不管怎樣,都必須完成所有的burst傳輸。
注:對於FIFO,忽略后續讀數據可能導致數據丟失,必須保證突發傳輸長度和要求的數據傳輸大小匹配。
突發大小
ARSIZE[2:0],讀突發傳輸;AWSIZE[2:0],寫突發傳輸。
AxSIZE[2:0] bytes in transfer
‘b000 1
‘b001 2
‘b010 4
‘b011 8
‘b100 16
‘b101 32
‘b110 64
‘b111 128
突發類型
FIXED:突發傳輸過程中地址固定,用於FIFO訪問
INCR:增量突發,傳輸過程中,地址遞增。增加量取決AxSIZE的值。
WRAP:回環突發,和增量突發類似,但會在特定高地址的邊界處回到低地址處。回環突發的長度只能是2,4,8,16次傳輸,傳輸首地址和每次傳輸的大小對齊。最低的地址整個傳輸的數據大小對齊。回環邊界等於(AxSIZE*AxLEN)。
AxBURST[1:0] burst type
‘b00 FIXED
‘b01 INCR
‘b10 WRAP
‘b11 Reserved
Start_Address=AxADDR
Number_Bytes=2^AxSIZE
Burst_Length=AxLEN+1
Aligned_Addr=(INT(Start_Address/Number_Bytes))xNumber_Bytes。//INT表示向下取整。
對於INCR突發和WRAP突發但沒有到達回環邊界,地址由下述方程決定:
Address_N=Aligned_Address+(N-1)xNumber_Bytes
WRAP突發,突發邊界:
Wrap_Boundary=(INT(Start_Address/(Number_Bytes x Burst_Length)))x(Number_Bytes x Burst_Length)
數據讀寫結構
WSTRB[n:0]對應於對應的寫字節,WSTRB[n]對應WDATA[8n+7:8n]。WVALID為低時,WSTRB可以為任意值,WVALID為高時,WSTRB為高的字節線必須指示有效的數據。
窄傳輸
當主機產生比它數據總線要窄的傳輸時,由地址和控制信號決定哪個字節被傳輸:
INCR和WRAP,不同的字節線決定每次burst傳輸的數據,FIXED,每次傳輸使用相同的字節線。
下圖給出了5次突發傳輸,起始地址為0,每次傳輸為8bit,數據總線為32bit,突發類型為INCR。
圖 3-7 窄傳輸示例1
下圖給出3次突發,起始地址為4,每次傳輸32bit,數據總線為64bit。
圖 3-8 窄傳輸示例2
非對齊傳輸
AXI支持非對齊傳輸。在大於一個字節的傳輸中,第一個自己的傳輸可能是非對齊的。如32-bit數據包起始地址在0x1002,非32bit對齊。
主機可以①使用低位地址線來表示非對齊的起始地址;②提供對齊的起始地址,使用字節線來表示非對齊的起始地址。
圖 3-9 對齊非對齊傳輸示例1-32bit總線
圖 3-10 對齊非對齊傳輸示例2-64bit總線
圖 3-11 對齊的回環傳輸示例
Cache support
Protection unit support
About atomic accesses
讀寫響應結構
讀傳輸的響應信息是附加在讀數據通道上的,寫傳輸的響應在寫響應通道。
RRESP[1:0],讀傳輸
BRESP[1:0],寫傳輸
OKAY(‘b00):正常訪問成功
EXOKAY(‘b01):Exclusive 訪問成功
SLVERR(‘b10):從機錯誤。表明訪問已經成功到了從機,但從機希望返回一個錯誤的情況給主機。
DECERR(‘b11):譯碼錯誤。一般由互聯組件給出,表明沒有對應的從機地址
Transaction identifiers ID
一般來說interconnect都會在ARID,AWID,WID(AXI4已刪除)中增減一些addition bits。
interconnect在送來的transaction中增加addition bits(AWID/WID/ARID)來表示各個master port。因為各個master port可能會有ID沖突。
interconnect在slave發送過來的transaction中減少addition bits(RID/BID),來發送給master。 這樣,slave中的ID號總是比master中的ID號,多幾位。 對於只支持single order的interface,可以將ID的output,tie掉。
AXI中的order model:
同一ID的transaction必須是ordered,不同的ID的transaction order no restrict。 同一ID,slave端必須按接收到的address順序來傳輸。
outstanding address是指:master可以不等該transaction結束,就發送下一個transaction的address。
complete transaction out of order是指:transaction之間的完成順序與issue的order可以不同。但是同一個burst中的transfer必須是按順序的。
對於ARID,同一個master返回的同一個ID的transaction必須是按address的順序來發送的。 在interconnect中,同一ID的transaction必須按master issue address的order來返回。
對於AWID和ARID,協議中沒有限制,如果master要求必須是先讀后寫,master端必須保證。簡單的master可以選擇,transaction按順序來處理,一次一個transaction,不支持outstanding。
read data reordering depth與slave中可以pending的address的個數相同。(也叫interleave depth) 按順序處理transaction的slave,等於read data reordering depth為1。
Writing data ordering:如果slave不支持interleave的write,master在發送write data的時候,與address的順序必須是一致的。同樣interconnect在處理的過程中,也必須保證data的順序與address的順序也是一致的。(與WID號無關)
interleave的操作只能用在不同ID號的burst中。 interleave depth與slave中支持的pending address個數相同。AXI中的interleave操作是指burst之間是有交疊的,interleave的深度,表示可以交疊的個數。
但是這個特性,會很大程度的增加IP的設計復雜度,(自己設計的master一般不會有這個feature,但是arm本身的core是可能有的, 一般情況下,對大多數的master,interleave write不是很必要,所以master可以以address的order來發送data,
只有當master從不同的多個source,像interconnect寫數據時,才需要進行interleave操作。
讀寫之間的interaction:協議中沒有規定讀寫之間的關系,所以必須由master保證一個結束之后,才發送下一個。
對於peripheral device,master保證transaction必須按他們issued order來到達peripheral。一個接一個,不進行outstanding。
對於memory device,master,需要有addr check保證如果有same/overlapping address,transaction也必須一個個發送,不能outstanding。
對於unaligned transfer,master可以提供一個lower-address,aligned address,通過byte lanes strobes信號來signal unaligned address。或者也可以傳輸unaligned transfer。
先傳輸低地址的非burst transfer,后按aligning的burst傳輸:(白色表示傳輸數據的地址),此時unaligned addr會占用一個transfer/beat。
對於narrow transfers,每個beat的byte lanes是不同的,針對burst,每次增加的地址,由size計算得到。
例如一個burst length=4的read,起始地址為xx111,arsize=64bit,bus中的width=128bit. 則首先master發出一個起始地址為7的,transfer,此時從slave拿到的數來自[63:56];
master發出下一個起始地址為0的,transfer,此時從slave拿到的數來自[31:0]; master發出下一個起始地址為8的,transfer,此時從slave拿到的數來自[63:32];
master發出下一個起始地址為0的,transfer,此時從slave拿到的數來自[31:0];至此四個length的burst傳輸結束。
axi中的數據,是不區分大小端的,直接將memory中的低位數據,放在data bus的低位。byte-invariant實際數據的大小端,需要由slave來自己調整。
對於一個burst傳輸,不能超過4K的地址空間,主要是為了防止burst橫跨兩個slave。通過burst,橫穿兩個IP,會導致第二個IP的地址出錯,從而數據出錯,所以必須有這樣的限制機制。
因為memory page size的一般就是4K,所以這里設置為4K Byte。
AXI4中取消了W通道的id號信號,w通道的次序保證與aw通道的次序相同。關於bufferable和cacheable:cacheable表示可不可以直接去cache中尋找數據以及cache miss之后的操作,如allocated等。
bufferable主要考慮write操作中,response返回的執行者是不是最終的slave發出的。
關於valid和ready信號,數據輸出者,發出valid信號,數據接收者,發出ready信號。eg:arm讀數據,rvalid由matrix提供,ready由arm core提供。AXI中的5組信號,可以是master---interconnect,可以是interconnect----slave,也可以是master-slave。
補充:
Atomic訪問
在AXI中,atomic access分為exclusive和lock兩種操作。
首先,Lock在amba2.0中就有涉及,意思是,某個master 可以通過Lock 總線來實現獨占。只有當該master完成傳輸后才釋放出總線。master1發出lock的transaction,在其發出unlock操作之前,不允許其它master訪問該slave。這樣的話,總線的效率會降低。
相比Lock,AXI 中引入了exclusive操作,不需要將bus鎖定給某個master。而是通過TAG ID以及slave 返回的response來判斷當前的傳輸是否成功。過程如下: 1)mst 首先向slave的某個地址位置發起一個exclusive讀操作。slave中的monitor會紀錄下該mst的 ARID和 要訪問的地址位置ADDR。 2)過一段時間后,mst向同一地址區域發起一exclusive寫操作。slave同樣要記錄該操作的mst的 AWID 和 要訪問的地址位置ADDR。3)如果AWID==ARID && 該地址內容沒有改變(沒有其他的mst訪問過),這個寫操作就是成功的。該地址就會更新,同時slv會返回EXOKEY. 否則,slv會返回OKEY. 由此看來,對於exclusive操作,總線其實允許其他mst同時來請求總線。比如,當其他mst要同時通過總線訪問其他的slv時,上述3)就不滿足,所以總線就不會被鎖定。
Ordering model
AXI的控制和數據通道分離,可以帶來很多好處。地址和控制信息相對數據的相位獨立,可以先發地址,然后再是數據,這樣自然而然的支持顯著操作,也就是 outstanding 操作。Master訪問slave的時候,可以不等需要的操作完成,就發出下一個操作。這樣,可以讓slave在控制流的處理上流水起來,達到提速的作 用。同時對於master,也許需要對不同的地址和slave就行訪問,所以可以對不同的slave 連續操作。而這樣的操作,由於slave 返回數據的先后可能不按照master 發出控制的先后進行,導致出現了亂序操作(out of order )。
先看下ordering model的幾個概念:
Outstanding
: The ability to issue multiple outstanding addresses means that masters can issuetransaction addresses without waiting for earlier transactions to complete. This featurecan improve system performance because it enables parallel processing of transactions.

發出A11的addr后,在完成D11~D14的transfer之前,發出A21叫做outstanding。
Out-of-order : The ability to complete transactions out of order means that transactions to faster memory regions can complete without waiting for earlier transactions to slower memory regions. This feature can also improve system performance because it reducesthe effect of transaction latency.

地址的順序是A11,A21,A31,而數據順序則可能是D2?,D3?,D1?,這個過程叫做Out-of-order
Interleaving: Write data interleaving enables a slave interface to accept interleaved write data withdifferent AWID values. The slave declares a write data interleaving depth that indicatesif the interface can accept interleaved write data from sources with different AWIDvalues.

D11和D12之間插入D23,叫做interleaving。
簡單而言,outsatanding是對地址而言,一次burst還沒結束,就可以發送下一相地址。而out-of-order和interleaving則是相對於 transaction,out-of-order說的是發送transaction和接收的cmd之間的順序沒有關系,如先接到A的cmd,再接到B的cmd,則可以先發B的data,再發A的data;interleaving指的是A的data和B的data可以交錯,如A1 B1 A2 B2 B3……
舉個例子,從master和slave兩個角色分別來看:
對於AXI master,先看寫操作。如果分別發出WCMD1和WCMD2兩個寫命令給兩個不同的slave,假設這兩個寫命令都是四拍的數據分別記為WDATA1_0,WDATA1_1,WDATA1_2,WDATA1_3,以及WDATA2_0,WDATA2_1,WDATA2_2,WDATA2_3。如果master在自己的寫數據總線上,依次發出WDATA2_0,WDATA2_1,WDATA2_2,WDATA2_3,WDATA1_0,WDATA1_1,WDATA1_2,WDATA1_3,這就叫寫out of order;如果master在自己的寫數據總線上,依次發出WDATA2_0,WDATA1_0,WDATA2_1,WDATA1_1,WDATA2_2,WDATA2_3,WDATA1_2,WDATA1_3,這就叫寫out of order且interleave;注意,不論是out of order還是interleave,同一個命令對應的四拍數據在內部必須是順序的,不能亂序。比如,不允許出現WDATA2_1,WDATA1_0,WDATA2_0,WDATA1_1,WDATA2_2,WDATA2_3,WDATA1_2,WDATA1_3這樣的。顯然,你自己設計master時,如果是寫操作,你不會主動發出out of oder和interleave的操作,因為這個明顯增加了復雜度且沒帶來master自己的效率提高。再看master讀,同樣發出RCMD1和RCMD2兩個讀命令給不同的slave,由於不同slave的響應速度不同,就可能出現RCMD2對應的讀數據先返回到master的情況;再考慮到復雜系統的總線設計,master依次接收到RDATA2_0,RDATA1_0,RDATA1_1,RDATA1_2,RDATA2_1,RDATA2_2,RDATA1_3,RDATA2_3這樣的數據是有可能的,這就是讀的out of order且interleave。所以,對於master,不建議發出out of order與interleave的寫數據,但是必須支持out of order與interleave的讀操作!同理,可以分析,對於slave,必須支持out of order與interleave的寫操作,不建議返回out of order與interleave的讀數據。在一個系統中,interleave會明顯增加設計復雜度,其實可以約定master,slave以及連接總線都不要使用interleave,(另外可以配置depth ==1,達到不支持interleaving的目的)這樣可以降低復雜度,但out of order是AXI特性,這個功能必須支持。