AXI傳輸數據結(write strobes)


參考博文:http://blog.sina.com.cn/s/blog_8367f7e30102ydkw.html

AXI 協議是基於burst 傳輸,master 每次向slave發送burst的第一個byte位傳輸控制信息和地址信息,slave必須按照burst的傳輸規則計算出地址。

burst 傳輸必須不能越過4KB 地址接界線,這樣是為了防止一個burst越過兩個slave邊界,這樣也限制了一個slave必須支持的地址增量。

4.1.1 burst 長度:

ARLEN[7:0]:讀傳輸的burst 長度;

AWLEN[7:0]:寫傳輸的burst 長度;

AxLEN代表ARLEN[7:0]和AWLEN[7:0]。

AXI3 的burst 長度為:AxLEN[3:0]+1;

AXI4 的burst 長度為:AxLEN[7:0]+1;提供了INCR burst類型額外的burst 長度。

AXI burst 使用規則限制:

  • l  wrapping burst 中,burst 長度必須是2,4,8,16;
  • l  一個burst 長度不能越過4KB 地址邊界;
  • l  burst 傳輸不可以提前終止;

沒有component 可以提前終止burst。然而,為了減少寫burst傳輸數據個數,master 可以通過關閉所有寫strobe的方式關閉更多的寫操作,在這種情況下,master 必須計算出burst傳輸需要保持傳輸的個數。在讀burst中,master可以丟棄讀數據,但是master也必須計算出burst傳輸中所有傳輸的個數。

丟棄讀數據在讀敏感設備中可能導致數據丟失,比如FIFO。master必須用一個burst長度來匹配傳輸數據所需長度。

4.1.2 burst 傳輸的size

每一個burst傳輸中數據按照byte一拍一拍傳輸:

ARSIZE [2:0]:讀傳輸;

AWSIZE[2:0]:寫傳輸;

AxSIZE代表ARSIZE和AWSIZE。

burst size編碼:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

傳輸的大小必須不能超過每次傳輸相關器件的數據寬度。

4.1.3 burst 類型

AXI 協議定義三種burst 類型:

FIXED:

  • l  burst 傳輸中每次傳輸的地址相同;
  • l  burst 中所有拍的有效byte line是固定的,然而這些byte line中,真正有WSTRB的byte在burst中每一拍都不同。

INCR:

增量burst。burst中每次傳輸的地址比前一個變大,增量跟傳輸的大小相關。例如,一個4byte大小的burst傳輸,地址比前一個地址加四。

WRAP:

循環 burst 和增量burst相類似,除非高位地址被限制,會循環到低位地址。

循環burst的限制:

  • l  起始地址必須包含每次傳輸的大小;
  • l  burst 長度必須是2,4,8,16;

循環burst的特性:

  • l  burst傳輸中的最低位地址用於計算所有數據傳輸的地址,burst每次傳輸的大小*burst傳輸的個數,這個地址也就是循環邊界;
  • l  增量burst中每次傳輸的地址增量相同,然而地址增量是循環邊界+所有傳輸數據大小,地址循環在循環邊界之內;
  • l  burst中,第一個傳輸地址可能大於循環邊界,這樣導致所有循環burst 的第一個地址大於循環邊界;

burst類型主要用於cache line通道。

burst類型定義信號:

ARBURST [1:0]:讀傳輸;

AWBURST[1:0]:寫傳輸;

AxBURST代表ARBURST和AWBURST。

AxBURST編碼規則:
AXIprotocol學習記錄(4)——AXI傳輸數據結構

4.1.4 burst地址

AXIprotocol學習記錄(4)——AXI傳輸數據結構

AXIprotocol學習記錄(4)——AXI傳輸數據結構
 

burst通用等式定義:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

burst 第一個傳輸的地址:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

增量burst和循環burst每次傳輸地址計算:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

循環burst中循環地址邊界計算:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

循環burst中地址達到最大時候的轉換:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

burst第一次傳輸byte line的計算方法:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

burst傳輸其他byte line計算方法:

AXIprotocol學習記錄(4)——AXI傳輸數據結構
傳輸數據:
AXIprotocol學習記錄(4)——AXI傳輸數據結構

4.2 讀寫數據結構

4.2.1 write strobes ——寫跳變

WSTRB[n:0]信號為高代表對應數據線包含有效信息,每次寫8bit數據對應一個strobe,因此WSTRB[n]對應WDATA[(8n)+7:(8n)]。

master 必須確保strobe 為高的時候,對應byte line 只含有效數據。

當WVALID為低時,write strobe 可以為任何值,盡管協議要求為低或者保持前一個數值。

4.2.2 narrow transfer——窄傳送

當master 發送數據位寬小於數據總線位寬時,地址和控制信息決定哪一個byte line 將會發送:

增量和循環burst 傳輸中,不同的byte line用在同一個burst傳輸中的不同位;

固定burst 中,相同的byte lane用在每一位;
AXIprotocol學習記錄(4)——AXI傳輸數據結構

圖3-8中:

  • l  burst 發送五次;
  • l  起始地址為0;
  • l  每次發送8bit;
  • l  發送數據總線寬帶為32bit;
  • burst 類型為增量burst;AXIprotocol學習記錄(4)——AXI傳輸數據結構

4.2.3 byte invariance ——byte 不變

在單個memory 空間,為了控制固定位數數據結構,AXI協議使用byte-invariance的位數方案。

4.3 讀寫響應數據結構

AXI 協議中讀寫傳送提供響應方式:

  • l  讀傳輸中響應從slave 發出,通過讀數據通道;RRESP[1:0]
  • l  寫傳輸中響應信息通過寫響應通道返回;BRESP[1:0]

信號:BRESP[1:0]

響應有以下幾種:

OKAY:普通訪問成功。響應條件包括:

  • l  一次普通訪問成功;
  • l  一次優先訪問失敗;
  • l  優先訪問一個不支持優先訪問的slave;

OKAY 響應是大多數傳輸的響應。

EXOKAY:優先訪問成功。

SLVERR:slave error。訪問已經成功到達slave,但是slave 希望返回一個error 條件給初始master 的時候使用。為了簡化系統檢測和debug,協議要求錯誤響應只用於單個普通的錯誤條件,包括:

  • l  FIFO或者buffer向上溢出或者向下溢出時;
  • l  不支持傳輸的大小;
  • l  寫訪問只讀的區域;
  • l  slave 中的超時;
  • l  訪問被關閉或者掉電的區域;

DECERR:decode error。一般典型使用在內部互聯結構,指示發送地址沒有slave。

如果內部互聯不能成功解碼slave地址,必須返回DECERR響應。協議要求內部互聯線路都有一個默認的slave,這些默認的slave返回DECERR響應。

AXI 協議要求傳輸中所有數據完成傳輸,即使一個錯誤的條件,任何器件得到的DECERR響應必須符合對應請求。

解碼如下:

AXIprotocol學習記錄(4)——AXI傳輸數據結構

在寫傳輸中,一個完整的burst 對應一個response,而不是每次傳輸都有response。

在讀傳輸中,slave 可能在一個burst中不同的傳輸中指定不同的response。比如,一個burst讀取16次,slave可能在15個中回復OKEY,一個回復SLVERR。

協議要求發送數據必須確定,即使一個錯誤標志。比如,一次讀操作slave有8次傳輸,但是slave有一個錯誤條件,這樣slave必須發送8次數據傳輸,每次返回一個錯誤響應。


免責聲明!

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



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