AXI的全稱是Advanced eXtensible Interface。在spec里面是這么自誇的:
•用於高帶寬和低延遲設計。
•提供高頻操作,無需使用復雜電橋。
•協議滿足各種組件的接口要求。
•適用於具有高初始訪問延遲的內存控制器。
•提供了實現互連架構的靈活性。
•與AHB和APB接口向后兼容
AXI有五個獨立的事務通道,分別是:
•讀地址(Read Address,簡稱AR)
•讀數據(Read Data,簡稱R)
•寫地址(Write Address,簡稱AW)
•寫數據(Write Data,簡稱W)
•寫響應(Write response,簡稱B)
AXI的五個通道是單方向的,這樣做的好處是可以對每個通道單獨優化,而且當經過復雜的片上網絡時,能夠優化時序減少延遲。AXI支持突發(burst)傳輸,亂序(out of order)傳輸,極大地提高了數據吞吐能力,在滿足高性能要求的同時,又減少了功耗。
對於讀操作,主機(master)通過AR通道發送讀事務地址,從設備(slave)通過R通道返回給主機所需要的數據,如下圖:
圖1 AXI的讀操作
對於寫操作,主機通過AW通道發送寫事務地址,並通過W通道把數據發送給從設備,而從設備接收到數據后,需要通過B通道返回一個響應給主機,整個過程結束。
圖2 AXI的寫操作
讀和寫的不同之處,一是數據方向不一樣,還有就是讀事務不需要從設備再發響應了,想想為啥涅。
讀和寫的數據寬度可以是8, 16, 32, 64, 128, 256, 512, 1024 bits中的一種。
這里不得不提一下AMBA中廣泛采用的VALID/READY握手機制。正是因為有了這個機制,發送方(Source)和接收方(Destination)才都有能力控制傳輸。
發送方通過置位VALID信號,來告訴接收方,自己已經將數據等信息准備好;而接收方通過置位READY信號,來告訴發送方,自己准備好了接收數據。只要有任何一方沒准備好,傳輸就不能進行。
這里不要混淆了,發送方不總是主機,比如讀數據通道上,發送方就是從設備,主機是接收方。
發送方的VALID信號和接收方的READY信號並不需要同時置位,可以發送方先准備好,也可以接收方先准備好。也就是說VALID可以早於READY,也可以晚於READY,也可以同時置位。對應的就是下面三種情況。
但是,為了避免死鎖等問題,對於VALID/READY信號還是有一定要求的。協議規定,發送方的VALID信號一旦置位就不能拉低,直到完成一次握手;而且,發送方不能根據接收方的READY信號來置位自己的VALID信號。簡單說,就是發送方可以根據自己的需求隨時發起傳輸,不能也不需要判斷接收方是否空閑,同時發送方一旦發起傳輸,就不能隨意中止。對於接收方,如果沒有准備好接收就可以不置位READY,這樣就可以反壓發送方的傳輸了,而且接收方置位READY后,只要發送方沒置位VALID,可以拉低READY。
時鍾信號和復位信號作為全局信號,沒啥好說的。AXI的五個通道的信號如下,先是寫地址通道:
寫數據通道
寫響應通道
讀地址通道
讀數據通道
從上述的信號列表我們可以看出來,每個通道都有自己的VALID/READY信號。這種VALID/READY握手機制在整個AMBA體系里面廣泛采用,不管是做設計還是做驗證的同學,一點要熟記。