轉發:FPGA基礎知識(十)DMA與AXI4匯流排
目的:介紹DMA與AXI匯流排的相關知識,以便理解與應用。
目錄
一、三種類型的AXI匯流排
二、不同型別的DMA
2.1 GPIO
2.2 PL general purpose AXI
2.3 GP AXI utlilizing PS DMAC
2.4 High performance w/DMA
2.5 ACP w/DMA
2.6 幾種DMA的總結
三、DMA基礎知識
搭建系統中有一個重要的因素是DMA:(Direct Memory Access),即直接儲存器存取,是一種快速傳送資料的機制。資料傳遞可以從適配卡到記憶體,從記憶體到適配卡或從一段記憶體到另一段記憶體。
- AXI4:主要面向高效能地址對映通訊的需求;
- AXI4-Lite:是一個簡單地吞吐量地址對映性通訊匯流排;
- AXI4-Stream:面向高速流資料傳輸;
- AXI4匯流排分為主、從兩端,兩者間可以連續的進行通訊。
- GP master interface與GP slave interface之間有什麼區別?主與從的區別,一個發起一個接收。
3.1 DMAC為DMA控制器,
3.2 PL based DMA
可以將資料傳到DDR和OCM
3.3 PS與PL之間的AXI HP介面
可以直接將data傳輸到memory
四、AXI匯流排知識
以下內容轉自:https://www.cnblogs.com/lifan3a/articles/4682464.html
(一)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時鐘頻率不同而產生的跨時鐘域資料傳輸問題。
AXI-Lite具有輕量級,結構簡單的特點,適合小批量資料、簡單控制場合。不支援批量傳輸,讀寫時一次只能讀寫一個字(32bit)。
AXI4介面和AXI-Lite差不多,只是增加了一項功能就是批量傳輸,可以連續對一片地址進行一次性讀寫。