參考鏈接:http://www.fpgadeveloper.com/2014/08/using-the-axi-dma-in-vivado.html
http://www.fpgadeveloper.com/2017/10/using-axi-dma-in-vivado-reloaded.html
什么是DMA?
DMA代表直接內存訪問,而DMA引擎使您可以將數據從系統的一部分傳輸到另一部分。DMA的最簡單用法是將數據從內存的一部分傳輸到另一部分,但是DMA引擎可用於將數據從任何數據生成器(例如ADC)傳輸到內存,或從內存傳輸到任何內存數據使用者(例如DAC)。
教程概述
在此設計中,我們將使用DMA將數據從內存傳輸到IP塊,然后再傳輸回內存。原則上,IP塊可以是任何類型的數據生產者/消費者,例如ADC / DAC FMC,但是在本教程中,我們將使用簡單的FIFO創建環回。之后,您將可以中斷循環並插入您喜歡的任何自定義IP。
上面的框圖說明了我們將創建的設計。處理器和DDR內存控制器包含在Zynq PS中。AXI DMA和AXI數據FIFO在Zynq PL中實現。AXI-lite總線允許處理器與AXI DMA通信以建立,啟動和監視數據傳輸。AXI_MM2S和AXI_S2MM是存儲器映射的AXI4總線,並提供對DDR存儲器的DMA訪問。AXIS_MM2S和AXIS_S2MM是AXI4流總線,它提供和接收連續的數據流,而沒有地址。
- MM2S代表 (memory-mapped to stream),而S2MM代表 (stream to memory-mapped) 。
- 使用Scatter-Gather時,在DMA和內存控制器之間有一條額外的AXI總線。為了簡單起見,將其保留在圖中。