參考博文: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編碼:
傳輸的大小必須不能超過每次傳輸相關器件的數據寬度。
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。
burst 第一個傳輸的地址:
增量burst和循環burst每次傳輸地址計算:
循環burst中循環地址邊界計算:
循環burst中地址達到最大時候的轉換:
burst第一次傳輸byte line的計算方法:
burst傳輸其他byte line計算方法:
傳輸數據:
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用在每一位;
圖3-8中:
- l burst 發送五次;
- l 起始地址為0;
- l 每次發送8bit;
- l 發送數據總線寬帶為32bit;
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響應必須符合對應請求。
解碼如下:
在寫傳輸中,一個完整的burst 對應一個response,而不是每次傳輸都有response。
在讀傳輸中,slave 可能在一個burst中不同的傳輸中指定不同的response。比如,一個burst讀取16次,slave可能在15個中回復OKEY,一個回復SLVERR。
協議要求發送數據必須確定,即使一個錯誤標志。比如,一次讀操作slave有8次傳輸,但是slave有一個錯誤條件,這樣slave必須發送8次數據傳輸,每次返回一個錯誤響應。






