Click “OK” in the window that appears.
Click the “Run Connection Automation” link and select /axi_dma_0/S_AXI_LITE from the drop-down menu. The DMA block should appear and designer assistance should be available.Click the “Add IP” icon and double click “AXI Direct Memory Access” from the catalog.The block diagram should open and you should only have the Zynq PS in the design.In the Flow Navigator, click “Open Block Design”.We’ll start this tutorial with the base system project for the MicroZed that you can access here:īase system project for the MicroZed Add the AXI DMA Platform Cable USB II (or equivalent JTAG programmer).
Vivado Instructions were written for version 2014.2, but the source code will be maintained to the latest version.It was left out of the diagram for simplicity.īefore following this tutorial, you will need to do the following: When Scatter-Gather is used, there is an extra AXI bus between the DMA and the memory controller.MM2S stands for Memory-Mapped to Streaming, whereas S2MM stands for Streaming to Memory-Mapped.The AXIS_MM2S and AXIS_S2MM are AXI4-streaming buses, which source and sink a continuous stream of data, without addresses. The AXI_MM2S and AXI_S2MM are memory-mapped AXI4 buses and provide the DMA access to the DDR memory. The AXI-lite bus allows the processor to communicate with the AXI DMA to setup, initiate and monitor data transfers. The AXI DMA and AXI Data FIFO are implemented in the Zynq PL. The processor and DDR memory controller are contained within the Zynq PS. The block diagram above illustrates the design that we’ll create. After, you’ll be able to break the loop and insert whatever custom IP you like. In principle, the IP block could be any kind of data producer/consumer such as an ADC/DAC FMC, but in this tutorial we will use a simple FIFO to create a loopback. In this design, we’ll use the DMA to transfer data from memory to an IP block and back to the memory. an ADC) to a memory, or from a memory to any data consumer (eg. The simplest usage of a DMA would be to transfer data from one part of the memory to another, however a DMA engine can be used to transfer data from any data producer (eg. DMA stands for Direct Memory Access and a DMA engine allows you to transfer data from one part of your system to another.