Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎06-22-2009

Microblaze hangs at FSL read when queue limit is reached



I have a simple question about the FSL bus and Mictoblaze. Does Microblaze wait for the FSL bus to get full or empty in order to perform a read operation? For the past month I have been working on the implementaiton of an image processing system which consits of a custom image processing core which sents and recieves data from Microblaze via the FSL. For verification purposes I write the row and column of the pixel that my core currently processes (this happens roughly  every 100 cycles) to the FSL bus which is then read by Microblaze, the length of the FSL is 32. However, when I read back with Microblaze using either blocking or non-blocking semantics I get only the first 32 rows and columns and then the  software hangs on the FSL read instruction. When I tried to increase the FSL size to 64, the software hanged after the first 64 rows and columns. So it seems that the FSL stacks at full and no writes can be performed by my custom core. However,  my core operates at 50MHz and Microblaze at 125 MHz so I assume that Microblaze would be able to read some data after the FSL is full so that my core can begin writing data again. 


Prior to this I write an image to my core, read it back and display it on screen. This happens without any problem.



If anyone can provide any feedback particularly on the behavior of the FSL bus and Microblaze I would greatly appreciate it. 


Thank you



0 Kudos
1 Reply
Xilinx Employee
Xilinx Employee
Registered: ‎08-06-2007



MicroBlaze would only stall on a blocking "fsl get" if the FSL is empty.

When you write into the FSL from your core, have you checked that you are not writing into the FSL when it's full?