UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Contributor
Contributor
3,444 Views
Registered: ‎08-25-2014

some questions about axi stream fifo

Jump to solution

I'm trying to make use of the AXI-Stream FIFO (4.1, PG080), in combination with a custom Linux driver, to stream (slow) data from an external source.  I'm using Vivado 2017.2 and Petalinux 2017.2. Two problems:

 

  1. If I instantiate this in the block diagram, then the petalinux generated device-tree includes items for the FIFO, but they are not at all what I need.  And I can't seem to override the DTS with the system-user.dtsi.
  2. If I instantiate outside the block diagram (exporting the AXI interfaces to from the block diagram), I can't set the base addresses on the component.  I have the AXI4-Lite and full AXI4 interfaces enabled, and all accesses to the full AXI4 hang.

Is there a way to make use of the AXI-Stream FIFO for use _other_ than DMA and ethernet?

0 Kudos
1 Solution

Accepted Solutions
Contributor
Contributor
5,917 Views
Registered: ‎08-25-2014

Re: some questions about axi stream fifo

Jump to solution

And now I've figured out #1.  I stumbled across it in UG1144 while looking for other stuff.  In "Devicetree Configuration,' starting a p. 74, there is the following:

 

All the changes have to be made in meta-user only. For example, if you want to change anything, you can do in meta-user by rewriting the entire node with your changes in meta-user layer. You can delete a particular node from any of the generated dtsi, using delete-node in meta-user.

 

After a bit of digging on the syntax, I'm now successfully re-writing the node with my own information.

0 Kudos
7 Replies
Scholar hbucher
Scholar
3,437 Views
Registered: ‎03-22-2016

Re: some questions about axi stream fifo

Jump to solution

@pladow6262 

 

" The LogiCORE™ IP AXI4-Stream FIFO core allows memory mapped access to a AXI4-Stream interface "

 

I use AXI Stream FIFO *instead* of DMA to have a quick way to push stream data from the PS/Microblaze. 

 

What is that you need? It is not very clear.

vitorian.com --- We do this for fun. Always give kudos. Accept as solution if your question was answered.
I will not answer to personal messages - use the forums instead.
0 Kudos
Contributor
Contributor
3,432 Views
Registered: ‎08-25-2014

Re: some questions about axi stream fifo

Jump to solution

@hbucher wrote:

@pladow6262 

 

" The LogiCORE™ IP AXI4-Stream FIFO core allows memory mapped access to a AXI4-Stream interface "

 

I use AXI Stream FIFO *instead* of DMA to have a quick way to push stream data from the PS/Microblaze. 

 

What is that you need? It is not very clear.


That's exactly the IP I'm using.  Your quote is first sentence in the introductory text of PG080.  And that's exactly what I'm trying to do.

 

It seems to work fine if I instantiate using the block diagram, but then I can't get the device tree setup correctly.  If I instantiate external to the block diagram, the accesses hang.

0 Kudos
Scholar hbucher
Scholar
3,429 Views
Registered: ‎03-22-2016

Re: some questions about axi stream fifo

Jump to solution

@pladow6262  I use it all the time. 

Why don't you try to run an example from the SDK in standalone mode?  That will give you less moving parts to get used to usage.

 

vitorian.com --- We do this for fun. Always give kudos. Accept as solution if your question was answered.
I will not answer to personal messages - use the forums instead.
0 Kudos
Contributor
Contributor
3,425 Views
Registered: ‎08-25-2014

Re: some questions about axi stream fifo

Jump to solution

@hbucher wrote:

@pladow6262  I use it all the time. 

Why don't you try to run an example from the SDK in standalone mode?  That will give you less moving parts to get used to usage.

 


We have.  We have a basic bare-metal application using the FIFOs.  But in those cases, the FIFOs were instantiated inside the block diagram and the address editor was used to assign the addresses.  The FIFOs work fine.

 

But now we are trying to move to Linux.  If we leave the FIFOs in the block diagram, the device tree automatically generated for the FIFOs assume their use is for ethernet, and we cannot figure out how to either rip-out or override those items.  So, we moved the FIFOs outside the block diagram.  When we do that, there is not option to set the base address of the FIFOs.

 

So, the question is how to use the AXI-Stream FIFO with Linux (petalinux) with a custom driver.

0 Kudos
Contributor
Contributor
3,416 Views
Registered: ‎08-25-2014

Re: some questions about axi stream fifo

Jump to solution

Ok, I think I have #2 figured out.  Via the typical customization GUI for the IP, there is no way to set the base addresses.

 

However, via the TCL console I did:

 

set_property CONFIG.C_BASEADDR 0x43c00000 [get_ips axi_fifo*]

set_property CONFIG.C_AXI4_BASEADDR 0x43c10000 [get_ips axi_fifo*]

set_property CONFIG.C_AXI4_HIGHADDR 0x43c1FFFF [get_ips axi_fifo*]

 

And now I can access the FIFO when instantiated outside the block diagram.

0 Kudos
Voyager
Voyager
3,404 Views
Registered: ‎06-24-2013

Re: some questions about axi stream fifo

Jump to solution

Yes, that is the default way to configure IP (note that the GUI does the same via TCL).

 

Best,

Herbert

-------------- Yes, I do this for fun!
0 Kudos
Contributor
Contributor
5,918 Views
Registered: ‎08-25-2014

Re: some questions about axi stream fifo

Jump to solution

And now I've figured out #1.  I stumbled across it in UG1144 while looking for other stuff.  In "Devicetree Configuration,' starting a p. 74, there is the following:

 

All the changes have to be made in meta-user only. For example, if you want to change anything, you can do in meta-user by rewriting the entire node with your changes in meta-user layer. You can delete a particular node from any of the generated dtsi, using delete-node in meta-user.

 

After a bit of digging on the syntax, I'm now successfully re-writing the node with my own information.

0 Kudos