簡介
ZYNQ的優勢在於ARM+FPGA的這種體系結構,那麼在這種體系結構中,最關鍵的無疑是PS端與PL端的數據交互。
通常情況下要將外設數據讀入內存或將內存傳送到外設都會通過 CPU 控制去完成,有查詢或中斷兩種方式實現。如果設計者追求產品執行效率,中斷與查詢相比,雖說提高了CPU利用率,但是從效率上來說還不是最完美的選擇。DMA的出現完美解決了此問題。
DMA(Direct Memory Access,直接存儲器訪問)是計算機科學中的一種內存訪問技術。它允許某些計算機內部的硬件子系統可以獨立地直接讀寫系統內存,而不需中央處理器(CPU)介入處理。對於批量傳送數據的情況,採用 DMA 方式可解決效率與速度問題,CPU 只需要提供地址和長度給 DMA,DMA 即可接管總線,訪問內存,等 DMA 完成工作後,告知 CPU,交出總線控制權。
ZYNQ 提供了兩種 DMA,一種是集成在 PS 中的硬核 DMA,另一種是 PL 中使用的軟核 AXI DMA IP。今天軟核AXI DMA IPJ進行環路測試實驗,主要需要的IP核主要有AXI DMA、AXI Stream Data FIFO。
IP(接口)用途介紹
- AXI DMA
AXI DMA 提供 3 種操作模式
(1)Direct Register 模式:Direct Register 模式提供了一種配置,用於在 MM2S 和S2MM 通道上執行簡單的 DMA 傳輸;
(2)Scatter/Gather 模式:允許在單個 DMA 事務中將數據傳輸到多個存儲區域或從多個存儲區域傳輸數據。它相當於將多個 Simple DMA 請求鏈接在一起。SGDMA 允許應用程序在內存中定義事務列表,硬件將在應用程序沒有進一步干預的情況下處理這些事務。在此期間,應用程序可以繼續添加更多工作以保持硬件工作。用戶可以通過輪詢或中斷來檢查事務是否完成。
DMA 的框圖與IP核配置界面如下圖所示:
- AXI Stream Data FIFO
AXI Stream Data FIFOIP核配置界面如下圖所示:
IP互連
各個IP的用途介紹之後,接下來看看這些IP之間是如何連線的呢?請繼續看下文設計框圖:
最後附上一張實際中Vivado_17.4工程DMA環路測試接口之間連接圖,具體如下圖所示: