AXI匯流排簡介

毛毛蟲的爹發表於2016-01-25

AXI全稱Advanced eXtensible Interface,是Xilinx從6系列的FPGA開始引入的一個介面協議,主要描述了主裝置和從裝置之間的資料傳輸方式。在ZYNQ中繼續使用,版本是AXI4,所以我們經常會看到AXI4.0,ZYNQ內部裝置都有AXI介面。其實AXI就是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一個部分,是一種高效能、高頻寬、低延遲的片內匯流排,也用來替代以前的AHB和APB匯流排。第一個版本的AXI(AXI3)包含在2003年釋出的AMBA3.0中,AXI的第二個版本AXI(AXI4)包含在2010年釋出的AMBA 4.0之中。

AXI協議具有如下特點:
. 匯流排的地址/控制和資料通道是分離的;
. 支援不對齊的資料傳輸;
. 在突發資料傳輸中只需要首地址;
. 同時具有分離讀/寫資料通道;
. 支援顯著傳輸訪問和亂序訪問;
. 更加容易進行時序收斂

AXI4包含三種介面:
. AXI4——For high-performance memory-mapped requirements.
. AXI4-Lite——For simple, low-throughput memory-mapped communication (for example, to and from control and status registers).
. AXI4-Stream——For high-speed streaming data.

從上面的描述可以看出,AXI4協議相當於原來的AHB協議,提供高速的系統內部互連通道,可以支援burst模式,主要用於處理器訪問儲存等需要高速資料的場合;AXI4-Lite為外設童工單個資料傳輸,相當於原來的APB協議,用於訪問一些低速外設;AXI4-Stream介面就像FIFO一樣,資料傳輸的時候不需要地址,而是主從裝置直接連續讀寫資料,主要用於如視訊、高速AD、PCIe、DMA介面等需要高速資料傳輸的場合,跟Xilinx原來的Local Link協議類似。

AXI Interconnect
AXI協議嚴格的講是一個點對點的主從介面協議,當多個外設需要互相互動資料時,我們需要加入一個AXI Interconnect模組,也就是AXI互聯矩陣,作用是提供將一個或多個AXI主裝置連線到一個或多個AXI從裝置的一種交換機制(有點類似於交換機裡面的交換矩陣)。Xilinx為我們提供了實現這種互聯矩陣的IP核axi_interconnect_1,在前面的例子中,我們在XPS中可以看到。這個IP核最多可以支援16個主裝置、16個從裝置,如果需要更多的介面,可以多加入幾個IP核。關於AXI Interconnect更多的知識,可參考Xilinx官方文件DS768。

AXI4和AXI4-Lite介面包含5個不同的通道:
. Read Address Channel
. Write Address Channel
. Read Data Channel
. Write Data Channel
. Write Response Channel

其中每個通道都是一個獨立的AXI握手協議。下面兩個圖分別顯示了讀和寫的模型:


ZYNQ中的AXI介面共有9個,主要用於PS與PL的互聯,包含以下三個型別:
. AXI_ACP介面,是ARM多核架構下定義的一種介面,中文翻譯為加速器一致性埠,用來管理DMA之類的不帶快取的AXI外設,PS端是Slave介面。
. AXI_HP介面,是高效能/頻寬的AXI3.0標準的介面,總共有四個,PL模組作為主裝置連線。主要用於PL訪問PS上的儲存器(DDR和On-Chip RAM)
. AXI_GP介面,是通用的AXI介面,總共有四個,包括兩個32位主裝置介面和兩個32位從裝置介面。

其實,在具體設計中我們往往不需要在連線這個地方做太多工作,就像上一個例子中,我們加入IP核以後,系統會自動使用AXI介面將我們的IP核與處理器連線起來,我們只需要再做一點補充就可以了。不過,這部分概念還是瞭解比較好。

相關文章