DMA and Reed-Solomon Encoder IP blocks

Hi everyone,
As part of my master thesis project, I created a Block Design on Vivado 2020.1 where I used the DMA to transfer data from memory to the Reed-Solomon Encoder IP block and back to the memory. After validating my Block Design and generating the Bitstream, I uploaded it into my PYNQ-Z1 board using Jupyter Notebook.
The problem I’m facing is that whenever I try to send the data through the DMA, the run_kernel() function loops infinitely and the data doesn’t arrive at the Reed-Solomon Encoder IP.
I would be very grateful if you can help me with this.
Thank you.


Hi @Oumayma,

You have an open question about this already:

As I mentioned in the other thread, I believe you are not defining your buffers appropriately. The RS encoder IP will add symbols to the input data, therefore the output buffer should be bigger than the input one.

How do you now that the RS encoder IP is not receiving data?

You can try to use an output buffer with shape=(64,) that may work, but it is just a hack.

Hi @marioruiz ,
I tried defining my input buffer with shape(32,) and my output buffer with shape(64,) and nothing changed.
The run_kernel() still loops infinetly.

Hello @marioruiz
I am working on the same thing and I configured the input buffer with shape (239) and the output buffer with shape (255) but nothing is happening it seems that it is working in an infinite loop.

Do you have an idea how to fix this ?
Thank you

Hi @marioruiz , could you please explain to me why I can’t find the Reed Solomon IP in the overlay?
Thank you

Hi @Oumayma,
You can’t find the Reed Solomon IP in the ip_dict because the IP is not memory mapped