(一)AXI總線是什么?
AXI是ARM 1996年提出的微控制器總線家族AMBA中的一部分。AXI的第一個版本出現在AMBA3.0,發布於2003年。當前的最新的版本發布於2010年。
AXI4:主要面向高性能地址映射通信的需求;
AXI4-Lite:是一個簡單地吞吐量地址映射性通信總線;
AXI4-Stream:面向高速流數據傳輸;
AXI4總線分為主、從兩端,兩者間可以連續的進行通信。
ISE從12.3版本,Virtex6,Spartan6芯片開始對AXI4總線提供支持,並且隨着Xilinx與ARM的合作面逐漸展開而得到大力推廣。
(二)AXI4的優勢
1.通過統一的AXI接口,開發者為開發ip core只需要學習一種協議即可;
2.AXI4是面向地址映射的接口,允許最大256輪的數據突發傳輸;
3.AXI4-Lite是一個輕量級的地址映射單次傳輸接口,占用很少的邏輯單元;
4.AXI4-Stream去掉了地址項,允許無限制的數據突發傳輸規模;
NetFPGA10G采用了AXI4系列總線架構,而Xilinx從Virtex6,Spartan6才開始支持AXI4。因此斯坦福的開發人員對在Virtex6上編譯出的帶有AXI4總線的ngc文件進行了修改加載到NetFPGA10G的ipcore中,使之騙過ISE,繼續網表映射流程。
NetFPGA10G主要使用了其中的輕量級AXI4-lite(后文簡寫為axi)以及AXI4-stream(后文簡寫為axis)兩者。前者用於CPU與ip core之間的通信;后者用於各ip core之間進行高速數據傳輸。如果將整個構架分為控制層面與數據層面,則axi主要負責控制層面,axis主要負責數據層面。
本文后續內容主要對輕量級axi以及axis總線進行介紹,如需AXI4整體總線通信模式,請參看ARM AXI4 Specification, Xilinx UG761 AXI Reference Guide.
(三)AXI4的工作模式
1.握手機制
AXI4所采用的是一種READY,VALID握手通信機制,即主從模塊進行數據通信前,新根據操作對各所用到的數據、地址通道進行握手。主要操作包括傳輸發送者A等到傳輸接受者B的READY信號后,A將數據與VALID信號同時發送給B。如下圖所示:
2.axi的工作模式:
axi總線分為五個通道:
- 讀地址通道,包含ARVALID, ARADDR, ARREADY信號;
- 寫地址通道,包含AWVALID,AWADDR, AWREADY信號;
- 讀數據通道,包含RVALID, RDATA, RREADY, RRESP信號;
- 寫數據通道,包含WVALID, WDATA,WSTRB, WREADY信號;
- 寫應答通道,包含BVALID, BRESP, BREADY信號;
- 系統通道,包含:ACLK,ARESETN信號;
其中ACLK為axi總線時鍾,ARESETN是axi總線復位信號,低電平有效;讀寫數據與讀寫地址類信號寬度都為32bit;READY與VALID是對應的通道握手信號;WSTRB信號為1的bit對應WDATA有效數據字節,WSTRB寬度是32bit/8=4bit;BRESP與RRESP分別為寫回應信號,讀回應信號,寬度都為2bit,‘h0代表成功,其他為錯誤。
A.讀操作:
順序為主與從進行讀地址通道握手並傳輸地址內容,然后在讀數據通道握手並傳輸所讀內容以及讀取操作的回應,時鍾上升沿有效。如圖所示:
B.寫操作:
順序為主與從進行寫地址通道握手並傳輸地址內容,然后在寫數據通道握手並傳輸所讀內容,最后再寫回應通道握手,並傳輸寫回應數據,時鍾上升沿有效。如圖所示:
3.axis工作模式
axis分為:
- tready信號:從告訴主做好傳輸准備;
- tvalid信號:主告訴從數據傳輸有效;
- tlast信號:主告訴從該次傳輸為突發傳輸結尾;
- tdata信號:數據,可選寬度32,64,128,256bit
- tstrb信號:為1的bit為對應tdata有效字節,寬度為tdata/8
- tuser信號 :用戶定義信號,寬度為128bit
- aclk信號:總線時鍾,上升沿有效;
- aresetn信號:總線復位,低電平有效;
通信時序如圖所示:
axi與axis是AXI4總線中通信復雜度較低的兩條總線,最大開發難度存在於axi的控制平面向axis的數據平面下發參數時,由於axi與axis時鍾頻率不同而產生的跨時鍾域數據傳輸問題。