cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
matic
Participant
Participant
929 Views
Registered: ‎09-26-2016

AXI burst access to the AXI full slave from Microblaze - is this possible?

Jump to solution

Hi.

 

I have successfully implemented a custom packaged IP as a AXI (full) slave. I wanted to do burst read/write access to it from a Microblaze using memcpy() function like this:

 

 

memcpy(received_data, (Xuint8 *)XPAR_FTDI_RX_TX_0_S00_AXI_BASEADDR, 512);

 

This read operation works, but as it looks from the ILA (snapshot attached below) this is not a true burst access. My question is, if this is even doable from the Microblaze C code? If it is, what am I doing wrong?

 

PS: That 0x12345678 data on the S_AXI_RDATA port is there assigned for the time when the read access is not going on. 

 

Thank you.

 

ila.PNG
0 Kudos
1 Solution

Accepted Solutions
necare81
Voyager
Voyager
1,031 Views
Registered: ‎03-31-2016

In general no processor, be it Microblaze or x86 or ARM, can turn user C code into an arbitrary burst because no assembly instructions implement a burst.  If your processor architecture is wider than your bus you will get a burst but that is a rather silly setup to have in general.

 

You can do some things to get a cache hierarchy to do a burst of one cache-line sized burst or you can use a separate DMA hardware block.

 

With a Microblaze you might be able to create a custom instruction to create a burst but I've never tried to any custom instructions.

View solution in original post

0 Kudos
1 Reply
necare81
Voyager
Voyager
1,032 Views
Registered: ‎03-31-2016

In general no processor, be it Microblaze or x86 or ARM, can turn user C code into an arbitrary burst because no assembly instructions implement a burst.  If your processor architecture is wider than your bus you will get a burst but that is a rather silly setup to have in general.

 

You can do some things to get a cache hierarchy to do a burst of one cache-line sized burst or you can use a separate DMA hardware block.

 

With a Microblaze you might be able to create a custom instruction to create a burst but I've never tried to any custom instructions.

View solution in original post

0 Kudos