PYNQ image processing on Zedboard using DMA


I’m trying to do some image processing using PYNQ on Zedboard. Here’s what I achieved so far.

Following this project (, I was able to create a bitstream. The only difference is that I created an IP core using Vivado HLS to do canny edge detection (based on this: So far, so good. I can use my overlay, the result is correct but the fps not.

I have compared my results with the opencv Canny function and the fps is almost the same with a 225x400 image. So my question is, can I accelerate the DMA data transfer? Because using the fist tutorial, the transfer always took at least 10 ms.


I am guessing the edge detection core is the only IP core you have in your block design. What you also need is the HDMI pipeline, which does the video DMA and a lot of other good things. You can start with the base overlay of Pynq-Z1/Z2, delete all unnecessary components, leaving only the HDMI pipeline. Then hook up your edge detection core. You may want to have a look at