基于FPGA的一维卷积神经网络CNN的实现(六)卷积层实现

本文详细介绍了如何在FPGA上实现一维卷积神经网络的卷积层,采用脉动阵列结构,利用DSP48E2单元进行乘加运算。讨论了卷积运算的基础、原理,并提供了具体的FPGA卷积电路设计和多通道卷积电路的搭建方法。

卷积层实现

环境: Pytorch,Pycham,Matlab。(订阅后有问题,或者需要该节的文件 请私信)

说明: 上一节已经通过Matlab将CNN网络所需的权重参数转换为定点数。

该节在FPGA端进行卷积层的实现。

第一节:基于FPGA的一维卷积神经网络CNN的实现(一)框架
第二节:基于FPGA的一维卷积神经网络CNN的实现(二)资源分配
第三节:基于FPGA的一维卷积神经网络CNN的实现(三)训练网络搭建及参数导出(附代码)
第四节:基于FPGA的一维卷积神经网络CNN的实现(四)Matlab前向验证(附代码)
第五节:基于FPGA的一维卷积神经网络CNN的实现(五)数据量化(附代码)
第六节:基于FPGA的一维卷积神经网络CNN的实现(六)卷积层实现
第七节:基于FPGA的一维卷积神经网络CNN的实现(七)池化层实现
第八节:基于FPGA的一维卷积神经网络CNN的实现(八)激活层实现


1.FPGA实现卷积运算的必备基础

卷积运算,实质为大量的乘加计算,而FPGA内部做大量的乘加运算需要借助内部专用的DSP单元。

请添加图片描述

本文使用的FPGA内嵌的专用DSP资源为DSP48E2,DSP48E2的结构如下图所示

在这里插入图片描述

DS48E2内置27bit预加器(加法器),27×18的乘法器可以完成27bit与18bit的乘法运算。

例如在Vivado中选设备的时候就可以看到该设备内部有多少DSP单元

在这里插入图片描述

2.FPGA端卷积实现原理

  本文卷积层的设计是采用脉动阵列的方式搭建,当数据在时钟的推动下流过处理单元,在脉动阵列的末端就会得到相应的卷积结果输出,数据无需重新输入网络,而且只有首端和末端的单元与外界进行交互。脉动阵列所需的处理单元均为结构相同的子单元,在构建过程中可以做

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字硬鉴

你的鼓励就是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值