在整個傳輸事務過程中,主機首先將接下來 burst 傳輸的控制信息以及數據首個字節的地址傳輸給從機,這個地址被稱為起始地址。
在本次 burst 后續傳輸期間,從機將根據控制信息計算后續數據的地址。
控制信息以及起始地址在讀/寫地址通道(AWC/ARC)傳輸。
注意:單次 burst 傳輸中的數據,其地址不能跨越 4KB 邊界。 關于這點在筆者參考的一個來源這樣表示,目前筆者覺得看上去很有道理:協議中之所以規定一個burst不能跨越4K邊界是為了避免一筆burst交易訪問兩個slave (每個slave的地址空間是4K/1K對齊的)4K對齊最大原因是系統中定義一個page大小是4K, 而所謂的4K邊界是指低12bit為0的地址。
地址通道中傳輸的控制信息中包括三項突發傳輸相關的信號(AR/AW 均一致,下圖為以 AR 為例):
(1)突發傳輸長度(burst length)
指一次突發傳輸中包含的數據傳輸(transfer)數量,在協議中使用 AxLen 信號控制。
突發傳輸長度在不同的模式(burst type ,將在后文中討論)下有一些限制,包括:
?對于 WRAP 模式,突發傳輸長度僅能為2,4,8,16
?在一次突發傳輸中,地址不能跨越一個 4KB 分區
?一次突發傳輸不能在完成所有數據傳輸前提前結束(early termination)
協議中多次強調,通信雙方都不能在傳輸事務的所有 Transfer 完成前提前結束。哪怕發生錯誤,也得含淚走完整個傳輸事務的流程。
(2)突發傳輸寬度(burst size)
指傳輸中的數據位寬,具體地,是每周期傳輸數據的字節(Byte)數量,在協議中使用 AXSIZE 信號控制。
突發傳輸數據寬度不能超過數據總線本身的位寬。而當數據總線位寬大于突發傳輸寬度時,將根據協議的相關規定,將數據在部分數據線上傳輸。
傳輸寬度 = 2 ^ AXSIZE
(3)突發傳輸類型(AxBURST)
類型共有 3 種,分別為 FIXED,INCR 以及 WRAP。使用 2 位二進制表示。
FIXED 類型中, burst 中所有數據都使用起始地址。該模式適合對某個固定地址進行多次數據更新,比如讀寫一個 fifo時,讀寫地址就是固定的。
INCR 類型最為常用,后續數據的地址在初始地址的基礎上進行遞增,遞增幅度與傳輸寬度相同。適合對于 RAM 等通過地址映射(mapped memory)的存儲介質進行讀寫操作。
WRAP 類型比較特殊,首先根據起始地址得到繞回邊界地址(wrap boundary)與最高地址。當前地址小于最高地址時,WRAP 與 INCR類型完全相同,地址遞增。但到遞增后的地址到達最高地址后,地址直接回到繞回邊界地址,再進行遞增,就這樣循環往復。
-
數據
+關注
關注
8文章
7030瀏覽量
89038 -
結構
+關注
關注
1文章
117瀏覽量
21597 -
總線
+關注
關注
10文章
2881瀏覽量
88090 -
AXI
+關注
關注
1文章
127瀏覽量
16631
發布評論請先 登錄
相關推薦
評論