@JColvin @Niță EduardThanks for the update!!
I tried a couple more things:
1. Edited the edge_detection.c file to remove edge detection, now it just converts the AXIvideo to xfMat and back :
#include "edge_detection.h"
void edge_detect(stream_t& stream_in, stream_t& stream_out1)//, stream_t& stream_out2)
{
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE axis port=stream_in
#pragma HLS INTERFACE axis port=stream_out1
//#pragma HLS INTERFACE axis port=stream_out2
//xf::cv::Mat-type local variables for intermediate results
xf::cv::Mat<XF_8UC3, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1> img0(MAX_HEIGHT, MAX_WIDTH);
//xf::cv::Mat<XF_8UC1, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1> img1(MAX_HEIGHT, MAX_WIDTH);
//xf::cv::Mat<XF_8UC1, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1> img2x(MAX_HEIGHT, MAX_WIDTH);
//xf::cv::Mat<XF_8UC1, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1> img2y(MAX_HEIGHT, MAX_WIDTH);
//xf::cv::Mat<XF_8UC3, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1> img3x(MAX_HEIGHT, MAX_WIDTH);
//xf::cv::Mat<XF_8UC3, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1> img3y(MAX_HEIGHT, MAX_WIDTH);
#pragma HLS DATAFLOW
//Interpret AXI-Stream interface and pull the frame from it
xf::cv::AXIvideo2xfMat<24, XF_8UC3, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1>(stream_in, img0);
//Convert to grayscale
//xf::cv::rgb2gray<XF_8UC3, XF_8UC1, MAX_HEIGHT, MAX_WIDTH>(img0, img1);
//Run the Sobel operator on the x-axis with a 3x3 kernel
//xf::cv::Sobel<XF_BORDER_CONSTANT,XF_FILTER_3X3,XF_8UC1,XF_8UC1,MAX_HEIGHT,MAX_WIDTH>(img1, img2x, img2y);
//Convert back to RGB format for display purposes
//xf::cv::gray2rgb<XF_8UC1, XF_8UC3, MAX_HEIGHT, MAX_WIDTH>(img2x, img3x);
//xf::cv::gray2rgb<XF_8UC1, XF_8UC3, MAX_HEIGHT, MAX_WIDTH>(img2y, img3y);
//Pack the frame back into AXI-Stream interface
//xf::cv::xfMat2AXIvideo<24, XF_8UC3, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1>(img3x, stream_out1);
xf::cv::xfMat2AXIvideo<24, XF_8UC3, MAX_HEIGHT, MAX_WIDTH, XF_NPPC1>(img0, stream_out1);
}
2. I compiled this, the timing violation still persist (which is expected as the violation is in a datapath that does the conversion).
3. After importing the IP in Vivado, I noticed the connection wizard was prompting for auto connection. Upon clicking, it now instantiates a new block called Processor System Reset. The clk_out2 which is connected to my IP goes to this, and a reset is generated which is routed to the HLS IP. (Earlier I was connecting the peripheral_aresetn from the other processor system reset which was generated on clk_out1.)
The output is still the same though(blank screen). Now, I am pretty sure the issue is something trivial involving the interface.
4. Next I tried a run with just
stream_out1 = stream_in;
though I'm not sure if this is a legal assignment in HLS. (Same black screen)
Thanks!!
Appreciate your help!!