cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Newbie
Newbie
5,263 Views
Registered: ‎10-14-2016

Control AXI DMA from PL module

Jump to solution

Hi I would like to control an AXI DMA module (Receive channel initialization, Sent channel initialization, DMA start etc) from my HLS component instead of the PS I suppose I have to implement an AXI4 Master interface but I can't find a tutorial on how to access specific addresses (control registers) inside the AXI DMA module.

 

Any Ideas?

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Teacher
Teacher
9,114 Views
Registered: ‎03-31-2012
It's very easy. All you need is an axi-master which writes to certain offsets. Assuming that this master is the only one controlling the AXI DMA block (ie directly connected to it instead of going through a multimaster interconnect) then you just write to the offsets described in axi dma spec ie the "AXI DMA Register Address map" so if the port which implements axi_master is "uint32* dma_ptr" you just have to say *(dma_ptr + 1) = foo;
to access the MM2S_DMASR register. This assumes you set the C_BASEADDR to zero
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

View solution in original post

4 Replies
Highlighted
Teacher
Teacher
9,115 Views
Registered: ‎03-31-2012
It's very easy. All you need is an axi-master which writes to certain offsets. Assuming that this master is the only one controlling the AXI DMA block (ie directly connected to it instead of going through a multimaster interconnect) then you just write to the offsets described in axi dma spec ie the "AXI DMA Register Address map" so if the port which implements axi_master is "uint32* dma_ptr" you just have to say *(dma_ptr + 1) = foo;
to access the MM2S_DMASR register. This assumes you set the C_BASEADDR to zero
- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

View solution in original post

Highlighted
Newbie
Newbie
5,075 Views
Registered: ‎10-14-2016

You have been very helpful, 

 

thanks

0 Kudos
Highlighted
Observer
Observer
642 Views
Registered: ‎07-25-2019

Hello, this thread is a very good example for my problem and thank you for your answer muzaffer. However, could you also tell me how can i connect an axi_master to axilite_slave without an interconnect? I have tried to use an axi_protocol_converter but my attempts have failed.

0 Kudos
Highlighted
Teacher
Teacher
610 Views
Registered: ‎03-31-2012

if you're following the suggestion and making a custom axi initiator (ie master, a terminology I'm trying move away from) then the easiest solution is to make an axi-lite initiator. It's very easy to change the code, by removing some features, to move from a full axi-initiator to a lite-initiator. Basically no burst, and a couple of other restrictions which you won't even notice are missing. Find an axi doc online which shows the differences between axi-full & axi-lite and use the latter.

- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos