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: 
Observer gicgatv
Observer
116 Views
Registered: ‎01-27-2015

Big vectors data interchange

Dear all,

I'm working on a project that use a Zed Board with Zynq 7Z020 FPGA. I'm making a computer vision back ground subtractor module.

I need to exchange the input image, the output image, 4 big vectors (in/out) and some other parameters (only in).

I'm using axi stream VDMA for the input/output image, the axi lite for the input parameters and the AXI master for the big vectors.

My doubt is the following: Can I use 4 vectors as input output or is better to split and have 4 vectors for the input and 4 vectors for the output?

I'm having communication problems in from the linux program I'm writing. The IP made with Vivado HLS pass the simulation and sinthesis phase.

Below, the vivado structure I have created is following. Any help is welcome. Many thanks in advance

 

 

 

fpga.png
0 Kudos
3 Replies
Highlighted
Scholar u4223374
Scholar
103 Views
Registered: ‎04-26-2015

Re: Big vectors data interchange

I prefer to do everything with a single AXI Master (unless the block is actually talking to multiple AXI Slaves). AXI Masters are pretty big bits of hardware, and adding lots of them can also create a mess of AXI infrastructure - so it's generally nicer to just have a single one on the block that handles all of the input and output.

0 Kudos
Xilinx Employee
Xilinx Employee
30 Views
Registered: ‎01-09-2019

Re: Big vectors data interchange

To add on to what @u4223374

There should not be a problem sending multiple vectors through a single AXI Master.  Have you confirmed that the hardware works as you expect before moving onto software/Linux?  It is really easy to determine if something is a hardware problem if you can simulate and check the hardware before running software on the design.

Once confident in the hardware, then you can be sure it is a software problem which has a seperate debug path.  If you haven't tried an example design with VDMA that might be a good place to start as it would give a sanity check.  PG020 has a good example design if that would help: https://www.xilinx.com/support/documentation/ip_documentation/axi_vdma/v6_2/pg020_axi_vdma.pdf

Thanks,

Caleb

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
Observer gicgatv
Observer
23 Views
Registered: ‎01-27-2015

Re: Big vectors data interchange

Thanks for your replies,

I havent simulated the design in the way described in pg020_axi_vdma.pdf  but the structure is similar to other project. To debug the hardware what I'm doing is to change the IP into something more easyest: 

- For the in/out image a simple color converter module form rgb to gray from vivado hls opencv function

- For the vectors I receive them as pointer in input, I sum a constant and provide them to the output.
 
At the moment I'm trying to debug the VDMA.I'm working with a portion (480 x 16) of the original image (480 x 480) because I haven't enough memory in the fpga to hold everithing (images and vectors).
 
In the linux program I  have a loop that extract the images stripes, copy it to the VDMA mm2s channel, launch the hw and copy back from the VDMA s2mm channel to the rest of the code that compose the output image.
 
The issue I'm having is that copy only the first part of the image frame and repeat it for all the image as in the atached images.
 
So It read the first time, but after I don't understand what is happening.  
Maybe the VDMA need a special sync, or I have to add a header to the image that indicate the frame start.
Thanks in advance    
in.jpg
out.jpg
0 Kudos