hls进行滤波操作的难点和注意点:
1、由于vivado hls中的mat类型,实际上为stream类型,只可以顺序存取,不可以随机存取,因此无法随便怼同一个数据进行复用。
2、同时由于FPGA资源有限,无法将图片的像素值全部存储下来,采用line存储的方式进行存储,方便进行数据的复用。
解决代码:
本文主要提供mat类型的数据通过何种的存储方式,进行滤波的代码,以及方法.
文件位于(D:\vivado2018.3\project\2_guassianblur\fiter2d)
top.cpp
#include "top.h"
//axis转gray_image,之后调用高斯滤波函数
void hlsfilter3(AXI_STREAM& INPUT_STREAM, AXI_STREAM& OUTPUT_STREAM, int rows, int cols)
{
#pragma HLS INTERFACE axis port=INPUT_STREAM
#pragma HLS INTERFACE axis port=OUTPUT_STREAM
#pragma HLS RESOURCE core=AXI_SLAVE variable=rows metadata="-bus_bundle CONTROL_BUS"
#pragma HLS RESOURCE core=AXI_SLAVE variable=cols metadata="-bus_bundle CONTROL_BUS"
#pragma HLS RESOURCE core=AXI_SLAVE variable=return metadata="-bus_bundle CONTRO