卷积层实现
环境: 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端卷积实现原理
本文卷积层的设计是采用脉动阵列的方式搭建,当数据在时钟的推动下流过处理单元,在脉动阵列的末端就会得到相应的卷积结果输出,数据无需重新输入网络,而且只有首端和末端的单元与外界进行交互。脉动阵列所需的处理单元均为结构相同的子单元,在构建过程中可以做
本文详细介绍了如何在FPGA上实现一维卷积神经网络的卷积层,采用脉动阵列结构,利用DSP48E2单元进行乘加运算。讨论了卷积运算的基础、原理,并提供了具体的FPGA卷积电路设计和多通道卷积电路的搭建方法。
订阅专栏 解锁全文
卷积层实现&spm=1001.2101.3001.5002&articleId=125215979&d=1&t=3&u=a4414e7ed7d64a6998752a5ca0d76e87)
5508

被折叠的 条评论
为什么被折叠?



