Custom HLS IP Help

I am trying to create a custom HLS IP that will do a sobel filtering but ran into problem. The IP does not seem to run. I hope someone can give me hint of where it goes wrong. Attached is the snippets of the HLS codes and the block diagram.

.h file:

.ccp file:

block diagram in hdmi_out IP:

The block diagram is based on the base overlay with color convert IP removed.

1 Like

The problem is that you define AXI_STREAM 24 bits wide on the line
typedef hls::stream<ap_axiu<24,1,1,1>> AXI_STREAM;
and then you connect img_filter to a stream 64 bits wide.

Try to insert image_filter inside hdmi_in before pixel_unpack block, which is 24 bits wide.

1 Like

In the hdmi_in block, all the axi_stream before pixel_pack is 48 bit wide so putting the image_filter block in there will cause the same problem I would think. What if I change the width to 64?

1 Like

Try to change it to 64. Which board are you using?

My board is zcu104!!!

So I try to expand the width to 64 and nothing really happened.

What is your error message?
Have you tested your design without the filter after removing the color convert IP? Does it work?
Do you have output signal in your current design if you remove your filter?

I tested this code in my PYNQ-Z2 and it is working with some flickering. The signal has no stability at 1080p as the frames get a small but still noticeable shift and blinking effect.

There is no error message. There is nothing display on the screen. The design still work without the filter after removing the color convert IP. It will just be pass through.

So you test the IP with the exact same setup of base overlay with your board and it work?

I am quite new to HLS and this is the exact same code from hackster tha I used.
Try to look in the HLS code from pixel_unpack.cpp in the hls design. Specially in the conversion from narrow to wide stream.

Not sure how to help now. It looks like the video base overlay from ZCU104 differs from the PYNQ boards.