本文將介紹高級可擴展接口 (AXI),它是 AMBA 的擴展。
AXI 協議最初是為高頻系統設計的,旨在滿足各種組件的接口要求,同時允許這些組件的互連方式具有靈活性。適用于高頻、低延遲設計,AXI 保持與之前 AMBA 版本的 AHB 和 APB 向后兼容。
了解 AXI 將使您深入了解 SoC 的工作原理,同時使您成為一名多才多藝的全面設計師。
AXI 架構
回想一下,AHB(高級高性能總線)是一個單通道總線,多個主機和從機使用它來交換信息。優先級仲裁器確定當前哪個主機使用總線,而中央解碼器執行從機選擇。操作以突發方式執行,可能需要多個總線周期才能完成。每個突發傳輸都包含一個地址和控制階段,然后是一個數據階段。
AXI 的設計理念類似,但使用多個專用通道進行讀寫。AXI 與其前身一樣是基于突發的,并且在數據交換之前使用類似的地址和控制階段。AXI 還包括許多新功能,包括亂序事務、未對齊的數據傳輸、緩存支持信號和低功耗接口。
AXI 通道
AXI 主設備和從設備之間有五個獨立的通道。他們是:
讀取地址通道
讀取數據通道
寫地址通道
寫數據通道
寫響應通道
地址通道用于在主機和從機之間執行基本握手時發送地址和控制信息。數據通道是放置要交換的信息的地方。
主機從從機讀取數據并將數據寫入從機。讀響應信息放在讀數據通道上,而寫響應信息有一個專用通道。這樣,master 可以驗證寫入事務是否已完成。
圖 1 顯示了通過五個 AXI 通道連接的 AXI 主設備和從設備。
圖 1. AXI 通道
每次數據交換都稱為事務。事務包括地址和控制信息、發送的數據以及任何響應信息。實際數據以包含多次傳輸的突發形式發送。圖 1 顯示了由 4 個節拍或數據傳輸組成的讀取和寫入突發。
我們將在本文后面更詳細地討論爆發。
AXI 信號
與之前 AMBA 版本中的 AHB、ASB 和 APB 信號非常相似,每個 AXI 通道都有許多與之關聯的信號。有兩個稱為 ACLK 和 ARESETn 的全局信號。它們分別是系統的全局時鐘和復位信號。ARESETn 上的“n”后綴表示該信號低電平有效。
圖 2 顯示了對應于讀取通道的信號以及全局信號。
圖 2. 讀取地址、讀取數據和全局信號
每個通道都有一個用于亂序交易的 ID 標簽。任何具有相同 ID 的事務必須保持順序,但具有不同 ID 的事務可以按任何順序完成。這允許較快的事務在較慢的事務之前完成,即使較慢的事務是先發出的。例如,如果一個 master 正在向多個 slave 寫入數據,事務 ID 將允許更快的 slave 更快地完成。
總線寬度是特定于實現的,但這些信號以 32 位總線寬度顯示。從機使用 RLAST 信號向主機發送最后一個數據項正在傳輸的信號。
其他值得注意的信號包括突發大小、長度和類型。VALID 和 READY 信號用于主從之間的握手。這些將在本文后面討論。
緩存、鎖定和保護信號分別用于緩存、獨占訪問(原子操作)和非法訪問保護。
圖 3. 寫地址、數據和響應信號
圖 3 顯示了寫地址、數據和響應信號。這些信號反映了上面的讀取信號,但被主機用來向從機發送數據。WLAST 向從站發出最后一個數據項正在發送的信號。專用的寫響應信號允許主機知道寫事務成功完成。
有關這些信號的更詳細說明,請參閱 AMBA 版本 3.0,特別是AMBA AXI 協議 v1.0 規范。
AXI 交易
如前所述,AXI 數據傳輸稱為事務。事務可以采用讀取或寫入的形式,包括地址/控制信息、數據和響應。數據以突發的形式發送,其中包括稱為節拍的多個數據項。為了同步數據的發送和接收,AXI 主機和從機在事務開始時使用 READY 和 VALID 信號執行握手。
頻道握手
每個 AXI 通道都包含一個 VALID 和一個 READY 信號。這些用于同步和控制傳輸速率。這里要記住的重要一點是源或發送者使用 VALID 信號來指示數據或控制信息可用。目的地或接收者在實際能夠使用該信息時發出 READY 信號。因此,只有當 VALID 和 READY 信號都被斷言時,才會發生傳輸。
圖 4 顯示了工作中的 AXI 握手。注意信息傳輸(用箭頭表示)僅在 VALID 和 READY 都為高時發生,無論哪個先被斷言。另請注意,AXI 對所有傳輸都使用時鐘上升沿。
圖 4. AXI 握手機制(改編自 AXI 規范 v1.0)
AXI 規范中的一個重要注意事項是,一個組件的 VALID 信號絕不能依賴于另一個組件的 READY 信號。READY 可以等待 VALID 信號,但不是必須的。遵循這些規則可以消除發生死鎖的可能性。如果 VALID 依賴于 READY 并且 READY 依賴于 VALID,那么很容易看出這兩個信號都不會被斷言,因為每個信號都在等待另一個信號。
AXI 突發
AXI 中的數據交換采用突發的形式。每個突發由多個節拍或數據傳輸組成。在事務開始時發送的控制信息指示正在傳輸的突發的長度、大小和類型。
AXLEN[3:0],X 代表 R 或 W,表示突發中的節拍數。由于 4 位寬,這意味著一個突發中最多可以有 16 次傳輸。AXLEN = b0000 表示每連拍一拍。b0001、b0010、b0011的值分別代表2拍、3拍、4拍。這種格局一直延續到十六歲。組件必須完成 AXLEN 指定的所有節拍,無論是否使用數據。
AXSIZE[2:0]指定突發的每個節拍中有多少字節。AXSIZE 中的每個位代表 2 的另一個冪,“000”代表每拍 1 個字節,“111”代表每拍最多 128 個字節。這些節拍的大小不能超過總線寬度。
AXBURST[1:0]確定將執行的突發類型。
AXI 中有三種類型的突發。他們是:
固定爆發
遞增爆發
包裹爆發
在固定突發中,每個節拍的地址都不會改變。一個典型的應用是 FIFO 隊列/緩沖區。
遞增突發表示更典型的傳輸類型,其中傳輸地址在每個節拍后遞增。您可以將其視為與基地址的偏移量。
最后的突發類型是環繞突發。回繞突發類似于遞增突發,不同之處在于存在回繞邊界,其中一旦地址遞增到該點,它就會回繞到較低地址。
圖 5 顯示了三種不同類型的 AXI 突發的簡化視圖。
圖 5. AXI 突發類型
AXI 互連
AXI 互連允許多個主設備和/或多個從設備相互連接。AXI 規范定義了主機和從機、主機和互連以及從機和互連之間的接口。
實際上,互連包含連接到 AXI 主設備的從接口和連接到 AXI 從設備的主接口。互連中發生的事情——即不同的主機如何與不同的從機通信——取決于實現。互連可以允許共享地址總線、共享數據總線、兩者共享或都不共享。
在下一篇文章中,我們將了解 AXI 互連、它們的工作原理以及如何在設計中使用它們。
結論
本文是對高級可擴展接口 (AXI) 協議的基本介紹。我們查看了 AMBA 第三版中指定的舊版 AXI。正如我上面提到的,您可以參考AMBA AXI 協議 v1.0(大約一百頁)來更深入地了解 AXI 的第一個版本。AXI 在 AMBA 修訂版 4 中出現了一些重大變化,其中包含 AXI4、AXI4-Lite 和 AXI4-Stream 等新版本的 AXI。
未來的 AMBA 文章將討論 AXI4 和用于組件之間系統級緩存一致性的 ACE 協議(AXI Coherency Extensions)。AXI 已成為現代 SoC 設計中廣泛使用的協議。在學習 AXI 時,像 Avalon 和 Wishbone 這樣更簡單的總線協議會變得容易得多。
-
接口
+關注
關注
33文章
8626瀏覽量
151351 -
AXI
+關注
關注
1文章
128瀏覽量
16639
發布評論請先 登錄
相關推薦
評論