cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
gvi
Visitor
Visitor
5,708 Views
Registered: ‎02-19-2014

Time profiling between PS-PL communication

Hello all,

 

We have implemented a computer vision application using Zynq. We use the PL for some parallel processing, and the ARM for the rest of the computation. Now, we want to do a time profiling of the whole system. We have measured the computation times in the ARM, and we have also measured the time the PL takes for its filters, but we don't know how to measure the communication overhead between different parts of the system.

 

This is our PL-PS communication flow for each cycle:

 

1. The PL processes the frame that captures from a camera, and it stores the data in internal Block RAMs (BRAMs). These BRAMs are read by the AXI4 Stream Slave which sends the information to the S_AXIS_S2MM channel of
the Xilinx AXI DMA module. The M_AXI_S2MM channel is the responsible for sending the pixel data to the DDR Controller using the S_AXI_HP channel. Thus, the captured frame is stored in the DDR SDRAM.

 

2. The PL uses a GPIO to notify the PS that the new frame is stored in the DDRAM.

 

3. The PS reads the stored image, carries out some processing and saves it into the DDR SDRAM again.

 

4. The PS uses a GPIO to notify the PL that it has finished processing the frame.

 

5. The PL reads the preprocessed image from the DDR SDRAM using the M AXI MM2S channel of the Xilinx AXI DMA module and it applies another filter.

 

6. The filtered image is stored again in the DDR SDRAM

 

7. The PS reads the filtered image completing the computer vision algorithm.


How can we measure all these communication times? PL-PS, PS-PL. PL-DDRAM, etc..


Thank you in advance!!

0 Kudos
Reply
2 Replies
raseshjd
Observer
Observer
1,491 Views
Registered: ‎06-03-2015

Did you get any solution??
0 Kudos
Reply
muzaffer
Teacher
Teacher
1,476 Views
Registered: ‎03-31-2012

create a high-speed timer in PL say a 32 bit counter running at 200 MHz or so. Then time all your processes by using this counter. First add two reads to this counter with nothing in between and figure out what the delay is. Then insert your functionality between two reads. The difference, less the overhead, should give you the number you want (times 5ns assuming 200 MHz). If you don't want the PS to be involved in measurement, add logic to your PL RTL to toggle an IO on your board and measure the high (or low) time of the signal with a scope to see how long the delay is.
- 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
Reply