您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 0浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

用HLS LineBuffer实现2D卷积

FPGA硅农 发布时间:2020-12-21 08:15:49 ,浏览量:0

为了在每个周期都能得到一个3x3的卷积窗口,我们可以通过linebuffer来实现,具体方法为:对于一个KxK的卷积核和一个NxN输入特征图的卷积,我们可以设置K-1个深度为N的FIFO,然后将第i个FIFO的读出连接到第i+1个FIFO的读入端,第0个FIFO的读入则直接从特征图按序获取。下面是HLS的代码实现,为了简单起见,本代码仅支持步长S=1,卷积核大小为K=3的情形,支持可变大小的N: HLS顶层设计文件

#include
#include
#include"my_cnn.h"
#include
void shift_linebuffer(volatile data_t *shift_in,int length,data_t filter[3][3],data_t out[900]){
	hls::stream line1;
	#pragma HLS STREAM variable=line1 depth=32 dim=1
    hls::stream line2;
	#pragma HLS STREAM variable=line2 depth=32 dim=1
    int len1=0,len2=0,addr=0;
    data_t W[3][3];
#pragma HLS ARRAY_PARTITION variable=W complete dim=0
	shift_linebuffer_label0:
	for(int i=0;i2*length+1)&&((i-2)%length            
关注
打赏
1658642721
查看更多评论
0.0479s