最近弄Zynq,不懂AXI協議Zynq很難玩兒的轉。這些筆記主要攻克AXI中的一些難題。
所有的AXI4包含了5個不同的通道:
(1)讀/寫地址通道(Read/Write address channel, AR/AW):讀、寫傳輸每個都有自己的地址通道,對應的地址通道承載着對應傳輸的地址控制信息。
(2)讀數據通道(Read data channel, R):讀數據通道承載着讀數據和讀響應信號包括數據總線(8/16/32/64/128/256/512/1024bit)和指示讀傳輸完成的讀響應信號。
(3)寫數據通道(Write data channel, W):寫數據通道的數據信息被認為是緩沖(buffered)了的,“主”無需等待“從”對上次寫傳輸的確認即可發起一次新的寫傳輸。寫通道包括數據總線(8/16...1024bit)和字節線(用於指示8bit 數據信號的有效性)。
(4)寫響應通道(Write response channel, B):“從”使用寫響應通道對寫傳輸進行響應。所有的寫傳輸需要寫響應通道的完成信號。
從上面5個通道分離(Separate read/write channels------AXI主要特征一)可以看出,相比於AHP的一個通道完成所有的工作,這種5個通道獨立操作,能提高performance。
AXI的控制和數據通道分離,可以帶來很多好處。地址和控制信息相對數據的相位獨立,可以先發地址,然后再是數據,Master訪問slave的時候,可以不等需要的操作完成,就發出下一個操作,甚至多個操作。這樣,可以讓slave在控制流的處理上流水起來,達到提速的作用,也就是 outstanding 操作(Multiple outstanding addresses------AXI主要特征二)。支持多少個outstanding,由資源利用率來決定,ARM處理器典型值32。同時對於master,需要對不同的地址和slave就行訪問,所以可以對不同的slave 連續操作。而這樣的操作,由於slave 返回數據的先后可能不按照master 發出控制的先后進行(Flexible relationship between the write address and data--------AXI主要特征三),導致出現了亂序操作(out of order--------AXI主要特征五 ),讓master最快收到想要的響應。同時,AXI還支持不對齊傳輸(unaligned data transfers--------AXI主要特征四)。AXI4協議基於猝發式傳輸機制(Burst transactions ------AXI主要特征六),不需要像AHB那樣,每傳一筆數據就指定一個地址,只需要對這次burst制定首地址。在master向slave寫數據過程中,AXI提供一個額外的寫響應通道,通過寫響應通道,salve向master發出信號表示寫交易完成。