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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM