一、本次实验目的:
1)学习卷积神经网络;
2)FPGA中实现卷积运算。
二、脉动阵列结构设计
PE(处理单元)的内部结构设计如图1所示,PE完成乘加运算得到的结果保存于寄存器中,其中IN和W表示1个字节(8bit)的输入和权重数据传递到PE。

图2中,W、IN和OUT表示阵列的输入和输出,脉动阵列一行4个PE单元组成一组。
脉动阵列PE得到的结果传递到out1,out2,out3的步骤:
第一步:PE单元完成4次乘加运算;
第二步:将一组PE得到的结果,从左到右依次传递给out1[0:7],out1[8:15],out1[16:23],out1[24:31];
第三步:PE的寄存器进行清零,再开始执行第一步。

三、脉动阵列的数据流动
本次卷积计算过程中,输入矩阵选用的是5*5的矩阵数据,权重选用的是3个2*2的矩阵数据。
图4显示IN矩阵在向脉动阵列传递数据过程中,将5*5的矩阵分成了两个4*5的矩阵IN1,IN2,分别选取的是IN矩阵1~4行和2~5行的矩阵数据。

本文介绍了通过FPGA实现卷积神经网络(CNN)的硬件加速,采用脉动阵列结构设计,详细阐述了PE单元的工作原理、数据流动过程以及实验结果分析。实验表明,在Modelsim仿真中,全部卷积过程只需约90次脉冲,预计在50MHz时钟频率的FPGA上,所需时间仅为1.8us。
最低0.47元/天 解锁文章
964





