cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Observer
Observer
468 Views
Registered: ‎08-23-2020

assign an offset to m_axi directly in HLS

Hello everyone!

I have a design which has an m_axi interface with offset=direct, because I want to change the offset address real-time. I know that if the interface is a port is of the top-level module, there will be a port to specify offset. But in my design the offset is going to be drived in the HLS code. I mean in my top level HLS function I want to call a function which has an m_axi port and I want to drive its offset address from another function. What can I do for this?

Regards,

Baback

Tags (2)
0 Kudos
8 Replies
Highlighted
Observer
Observer
430 Views
Registered: ‎08-23-2020

Can't anybody help me with this please?!

Tags (1)
0 Kudos
Highlighted
Explorer
Explorer
397 Views
Registered: ‎05-23-2011

Hi

What du exactly want isn´t supported (yet).
But perhaps the following can realice the same.
Take a look at the .vhd /.v code if the adress is sampled every time time you start your IP.
If this happens you can attache an axi gpio with 32 Bit output to the input of the adresse of your HLS-IP. So you can change the adress indirectly over the axi gpio.

 

Kind regards

Thomas

Highlighted
Xilinx Employee
Xilinx Employee
379 Views
Registered: ‎09-04-2017

@thisisbaback   You can restructure your code to make them as two functions one which drives the other. Synthesize them separately in HLS and connect them in IPI if that can solve your issue.

Thanks,

Nithin

Highlighted
Observer
Observer
356 Views
Registered: ‎08-23-2020

Thanks @thomasdon and @nithink. These solutions can be used, but I was looking for a direct way to integrate everything in an IP-Core. As you said this can't be achieved, and I have to use a solution like them you mentioned.
0 Kudos
Highlighted
Observer
Observer
354 Views
Registered: ‎08-23-2020

@nithink, is Xilinx going to include this in near future?

0 Kudos
Highlighted
Xilinx Employee
Xilinx Employee
324 Views
Registered: ‎09-04-2017

@thisisbaback   I am not aware of the exact usecase. would you mind sending the details on the application on how this is being used. 

I can take it back to our team and see  what they say.

Thanks,

Nithin

Highlighted
Observer
Observer
315 Views
Registered: ‎08-23-2020

I want to write and read to/from ddr3 memory. I have one AXI-Master, and each time I'm going to access a specific address. The address is changing in real-time, and it's not a good idea to use the Microblaze for addressing. So I want to generate addresses dynamically and feed it to the module. I want to do this in HLS. Is it clear now?
0 Kudos
Highlighted
Visitor
Visitor
265 Views
Registered: ‎01-23-2020

You can do something like this:

 

void foo(volatile unsigned int *base_mem){
#pragma HLS INTERFACE m_axi depth=20 port=base_mem offset=off bundle=master

volatile unsigned int * new_addr = base_mem + (<new_offset> / sizeof(unsigned int));

OR

base_mem[<new_offest>]

 

0 Kudos