cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Contributor
Contributor
623 Views
Registered: ‎06-05-2019

How to program a DMA

Jump to solution

Hello Forum!

I want to load data (containing a given pattern) into a ZCU111 board memory to eventually stream it as AXIS packages to feed a DAC (RFDC). In short, I want to achieve synthesysing different analog waves by uploading a digital pattern to the board.

I have questions regarding what must be done in the PS and what is done in the PL. The setup I plan to use, based on DMA doc, is the following (AXI Ethernet replaced by RFDC):

DMA.jpg

What is the simplest way to load the pattern into the memory and access it through the DMA? Is that made in the SDK script (PS)? If you know a similar example of a program that does this, that would be helpful too. It is the first time I use this module so I am confused on where to start.

 

Thanks

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Xilinx Employee
Xilinx Employee
548 Views
Registered: ‎10-04-2016

Hi @nicolas05 ,

The best place to start is with the AXI DMA example C code. There are several basic programs that demonstrate how to use the AXI DMA in a loop back mode.

Once you are comfortable with the basics of loopback, it is pretty straightforward to modify the examples to just have the transmit (MM2S path) that your final design requires.

These example are built into SDK. You can also view them on GitHub.

https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/axidma

An explanation of the bare metal driver is here:

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/axidma/src/xaxidma.h

Regards,

Deanna

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

View solution in original post

1 Reply
Highlighted
Xilinx Employee
Xilinx Employee
549 Views
Registered: ‎10-04-2016

Hi @nicolas05 ,

The best place to start is with the AXI DMA example C code. There are several basic programs that demonstrate how to use the AXI DMA in a loop back mode.

Once you are comfortable with the basics of loopback, it is pretty straightforward to modify the examples to just have the transmit (MM2S path) that your final design requires.

These example are built into SDK. You can also view them on GitHub.

https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/axidma

An explanation of the bare metal driver is here:

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/axidma/src/xaxidma.h

Regards,

Deanna

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

View solution in original post