问题描述
我需要在 Vivado HLS 上裁剪出图像的前 20 列和后 10 列。
Top Level Function:
#include "video_crop.h"
#include <math.h>
//Top Level Function
void video_crop(AXI_STREAM& s_axis_video,AXI_STREAM& m_axis_video,int hsize_in,int vsize_in)
{
#pragma HLS INTERFACE axis register both port=s_axis_video
#pragma HLS INTERFACE axis register both port=m_axis_video
ap_axiu<24,1,1> video;
for(int i = 0; i < vsize_in ; i ++)
{
for(int j = 0; j < hsize_in ; j ++)
{
s_axis_video >> video;
if(j<hsize_in-10) //to crop the last 10 columns
{
if(j>=hsize_in-80) //to crop the first 20 columns
{
m_axis_video << video;
}
}
}
}
}
嵌套 IF 的第一个 IF 语句不会导致任何问题,但第二个 IF 语句会导致 RTL Simulation Hanging。想寻求帮助解决此问题。
在我的例子中,hsize_in 和 vsize_in 是 100,所以在第一个 IF 语句中,当 j
如果列数(j)同时满足IF条件,即列数小于90且列数大于等于20,则输入应写入输出视频。
然而它会导致一个警告:Hls::stream 'hls::stream
我怀疑问题是:在第二个 IF 条件下,当我裁剪前 20 列时,第 20 列中的信息必须写入输出的第 0 列 - 这不会发生。 我认为输入的第 20 列中的信息正在写入输出的第 20 列,因此,输出的前 20 列是空的。
我该如何解决这个问题?
我附上了下面的测试台。
第二个 IF 语句导致 RTL 挂起,希望得到一些帮助来解决这个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)