CN109711533A - 基于fpga的卷积神经网络模块 - Google Patents
基于fpga的卷积神经网络模块 Download PDFInfo
- Publication number
- CN109711533A CN109711533A CN201811561899.9A CN201811561899A CN109711533A CN 109711533 A CN109711533 A CN 109711533A CN 201811561899 A CN201811561899 A CN 201811561899A CN 109711533 A CN109711533 A CN 109711533A
- Authority
- CN
- China
- Prior art keywords
- submodule
- module
- group
- neural networks
- convolutional neural
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于FPGA的卷积神经网络模块,主要解决现有技术内部结构固化、FPGA型号受限,且处理速度慢的问题,其包括参数存储子模块、总控制子模块、配置寄存器组、网络计算子模块组、缓存子模块和计算控制子模块组。参数存储子模块存储配置参数和网络权值,总控制子模块读取被存储的参数和权值,并写入配置寄存器组和网络计算子模块组,完成内部连接结构和缓存大小的设置及初始化;缓存子模块存储原始输入数据或中间处理结果并传输到计算子模块组,并在计算控制子模块组控制下周期性地完成乘累加、下采样和非线性激活函数的运算。本发明内部结构可配置,支持多种FPGA,功耗较低,处理速度快,可用于构建卷积神经网络加速系统。
Description
技术领域
本发明属于计算机技术领域,主要涉及一种卷积神经网络模块,可用于构建基于FPGA的卷积神经网络加速系统。
背景技术
随着深度学习的发展,卷积神经网络在科研以及工业应用领域都取得了较好的成果,但是卷积神经网络在带来更好的效果的同时相较于许多传统算法也带来了计算量上的急剧增加,由于该算法存在大量并行性计算的特点,传统的通用处理器CPU不适合处理该算法,而目前应用较广的GPU则存在高功耗的显著问题。FPGA作为一种低功耗计算密集型可编程器件可以很好地服务于卷积神经网络算法。
目前,基于FPGA的卷积神经网络实现在架构上多采用CPU+FPGA的形式,主要只利用FPGA对卷积神经网络中卷积层的计算进行加速,而将其余部分交于CPU处理,没有将FPGA和网络卷积层以外的部分充分结合;在流程上多采用从外部存储器读取数据至CPU或FPGA上处理,完成一个网络层的处理后,将中间结果写入外部存储,然后进行下一层处理前的准备工作,再从外部存储读取数据进行处理,如此往复直至得到最终结果,这种方式将数据在片内和片外反复搬运,每层的计算之间没有形成流水线,在功耗和速度上都受到较大的限制;在应用上,限制使用者只能在CPU端进行软件开发,而整个系统中FPGA对外封闭,型号和片上系统结构固化,使用者不能按需选择FPGA型号和调整FPGA上的系统结构。
发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于FPGA的卷积神经网络模块,用以构建流水线形式的加速系统,降低功耗,提高卷积神经网络运算速度,实现对FPGA的灵活运用。
为实现上述目的,本发明基于FPGA的卷积神经网络模块,其特征在于,包括:
参数存储子模块,用于存储卷积神经网络的权值参数以及配置参数;
总控制子模块,用于控制整体工作状态和初始化其它功能子模块;
配置寄存器组,用于控制各网络计算子模块组中的各种计算子模块的连接关系和工作模式及缓存子模块的缓存上限;
网络计算子模块组,用于完成卷积神经网络中的各种基本运算;
缓存子模块,用于存储计算的中间结果;
计算控制子模块组,用于控制网络计算子模块组中的不同计算子模块完成各种基本运算;
各子模块的连接关系如下:
总控制子模块通过内部数据、控制以及地址线与参数存储子模块连接;通过内部数据和控制线与配置寄存器组连接;通过内部控制线与网络计算子模块组连接;通过参数输入和地址输出端口与卷积神经网络模块外部连接;
参数存储子模块通过内部数据线与网络计算子模块组连接;通过内部地址线与计算控制子模块组连接;通过参数输入端口与卷积神经网络模块外部连接;
网络计算子模块组通过内部数据线与缓存子模块连接;通过内部控制线与计算控制子模块组连接;通过数据输出端口与卷积神经网络模块外部连接;
缓存子模块通过数据输入和状态信号输出端口与卷积神经网络模块外部连接;
配置寄存器组通过内部控制线与网络计算子模块组连接;
计算控制子模块组状态信号输入端口与卷积神经网络模块外部连接。
本发明具有如下优点:
1.本发明由于是基于FPGA内的基本资源设计的,这些资源在不同型号的FPGA内普遍存在,且本发明对资源的开销不是很大,小于很多型号的FPGA的资源总量,因此可以在多种型号的FPGA上使用,对FPGA型号的限制更小;
2.本发明由于模块外部提供了连接到缓存子模块的状态信号输出和数据输入端口,连接到计算控制子模块的状态信号输入端口以及连接到网络计算子模块的数据输出端口,因此多个模块可以通过这些端口级联来协同工作,实现更复杂卷积神经网络,可拓展性更好,使用更灵活;
3.本发明由于提供了可外部直接读写的参数存储子模块,只需将配置参数以及网络的权值写入参数存储子模块,由总控制子模块和配置寄存器组自动完成功能结构的配置以及权值的加载,因此可以方便地配置卷积神经网络的整体模块,以适应多种网络结构的需求;
4.本发明由于在网络计算子模块组集成了卷积神经网络不同层的功能,使卷积神经网络内的运算都能在FPGA上以并行运算的方式实现,提高了运算速度;
5.本发明由于对卷积神经网络的不同层采用多个计算子模块分别来进行计算,并且各计算子模块以流水线的方式进行工作,提高了连续处理多张图片的工作效率;
6.本发明由于采用乒乓双缓存的方式存储数据,使得网络每一层的读写与计算和前一层的读写与计算可以同时进行,减少了等待数据的时间,进一步提高了数据处理的速度;
仿真结果表明,本发明在基于MINIST数据集的分类任务中,对于单张MINIST图像的平均处理速度达到i7CPU处理器的75倍。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明的整体结构框图;
图2是本发明中卷积计算子模块、卷积控制子模块、卷积输入缓存子模块和非线性激活子模块的连接及结构示意图;
图3是本发明中卷积输入缓存子模块中缓存单元的结构示意图;
图4是本发明中池化计算子模块、池化控制子模块和池化输入缓存子模块的连接及结构示意图;
图5是本发明中全连接计算子模块、全连接控制子模块、全连接输入缓存子模块和非线性激活子模块的连接及结构示意图;
图6是本发明中卷积计算子模块、池化计算子模块和全连接计算子模块的工作状态转移图。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。
参照图1,本发明包括:参数存储子模块1、总控制子模块2、配置寄存器组3、网络计算子模块组4、缓存子模块5、计算控制子模块组6、参数输入端7、地址输出端8、数据输入端9、数据输出端10、状态信号输入端11和状态信号输出端12。其中:
参数存储子模块1,用于存储卷积神经网络的权值以及配置参数并供其它子模块读取,其分别通过一路内部数据线、一路内部控制线、一路内部地址线与总控制子模块2连接,通过两路内部数据线连接与网络计算子模块组4连接,通过一路内部地址线与计算控制子模块组6连接,通过一路数据线与参数输入端口7连接;
总控制子模块2,用于控制本发明的整体工作状态和初始化其它功能子模块,其分别通过一路内部数据线和一路内部控制线与配置寄存器组3连接,通过两路内部控制线与网络计算子模块组4连接,通过一路数据线与参数输入端口7连接,通过一路地址线与地址输出端口8连接;
配置寄存器组3,用于控制各网络计算子模4块组中的各种计算子模块的连接关系和工作模式及缓存子模块5的缓存上限和阈值,其通过一路内部控制线与网络计算子模块组4连接;
网络计算子模块组4,用于完成卷积神经网络中的各种基本运算,其分别与缓存子模块5和计算控制子模块组6连接。该所述网络计算子模块组4,包括第一卷积计算子模块41、第二卷积计算子模块42、第一池化计算子模块43、第二池化计算子模块44、全连接计算子模块45、第一非线性激活子模块46、第二非线性激活子模块47和第三非线性激活子模块48;
缓存子模块5,用于缓存输入各计算子模块的数据,其分别与计算子模块组4和计算控制子模块组6连接,其内部包括第一卷积输入缓存子模块51、第二卷积输入缓存子模块52、第一池化输入缓存子模块53、第二池化输入缓存子模块54和全连接输入缓存子模块55;
计算控制子模块组6,用于控制各种计算子模块在不同工作状态间切换从而完成各种基本运算,其分别与网络计算子模块组4和缓存子模块5连接,其内部包括第一卷积控制子模块61、第二卷积控制子模块62、第一池化控制子模块63、第二池化控制子模块64和全连接控制子模块65。
参照图2,网络计算子模块组4中的第一卷积计算子模块41、缓存子模块5中的第一卷积输入缓存子模块51以及计算控制子模块组6中的第一卷积控制子模块61和第一非线性激活子模块46的连接关系如下:
卷积输入缓存子模块51的两路输出数据连接到MUX选择器,MUX选择器的输出连接到卷积计算子模块41,卷积输入缓存子模块51的状态信号Full连接到卷积控制子模块61,卷积控制子模块61的控制信号Sel连接到MUX选择器,卷积计算子模块41的输出连接到非线性激活子模块46。其中:卷积输入缓存子模块51内部包括2个缓存组,每个缓存组包含6个缓存单元;卷积计算子模块41内包括6个加法树和36个卷积核。
参照图3,卷积输入缓存子模块51中的每个缓存单元由5个首尾相连的FIFO队列构成。其中,FIFO1到FIFO4为行队列,FIFO5为主队列,每个队列的计数信号Count表示当前队列内的数据量。在缓存数据时,首先将输入Din写入主队列FIFO5,若主队列FIFO5的计数信号Count5未达到配置寄存器设置的上限,则主队列FIFO5不输出内部数据,反之主队列FIFO5的输出内部数据到第四行队列FIFO4的输入端,第四行队列FIFO4开始读入数据,当第四行队列FIFO4的计数信号Count4达到设置上限后,第四行队列FIFO4输出内部数据到第三行队列FIFO3的输入端,依次进行直到第一行队列FIFO1的输出端开始输出数据,则数据的缓存完成,此时卷积输入缓存子模块51向卷积控制子模块61发送状态信号Full,通知卷积控制子模块61启动卷积计算子模块41工作。每个缓存单元的5个FIFO队列并行输出,每个缓存组里的6个缓存单元并行输出,根据具体需求的不同,通过配置寄存器改变卷积计算子模块41并行输入的个数,即选择一个缓存组中的部分或全部6个缓存单元的输出作为卷积计算子模块41的输入,未被选择的缓存单元的输出被置零。
卷积计算子模块41中每个卷积核是由25个乘法器组成的乘法阵列,每个卷积核在每个时钟周期内可计算25个数据和对应权值的乘积,每6个卷积核并行输出到一个加法树进行求和,根据具体需求的不同,可通过配置寄存器改变卷积计算子模块41的并行输出个数,即选择部分或全部6个加法树的输出作为卷积计算子模块的输出,未被选择的加法树的输出被置零。
参照图4,网络计算子模块组4中的第一池化计算子模块43、缓存子模块5中的第一池化输入缓存子模块53以及计算控制子模块组6中的第一池化控制子模块63的连接关系如下:
池化输入缓存子模块53的两路输出连接到池化计算子模块43的四个数据输入端,每一路连接两个数据输入端,池化输入缓存子模块53的状态信号Full连接到池化控制子模块63,池化控制子模块63的控制信号Ena连接到池化计算子模块43的两个控制输入端。其中,池化输入缓存子模块53内包括2个FIFO队列FIFO6和FIFO7;池化计算子模块43内包括2个比较器、2个加法器和1个MUX选择器。
池化输入缓存子模块53的输入信号Din分别连接到2个FIFO队列的输入端,当输入信号Din传来有效数据时,首先打开本模块的第一队列FIFO6的输入端,将数据写入FIFO6中,当写入FIFO6中的数据量达到设置阈值后,FIFO6的输入端关闭,本模块的第二队列FIFO7的输入端打开,将数据写入FIFO7中,当写入FIFO7中的数据量达到设置阈值后,FIFO7的输入端关闭,再次打开本模块的第一队列FIFO6的输入端,将数据再次写入FIFO6,按照此规律输入数据轮流写入这两个FIFO队列FIFO6和FIFO7。当这两个FIFO队列内的数据量都超过设置阈值时,池化输入缓存子模块53向池化控制子模块63发送状态信号Full,池化控制子模块63收到状态信号Full后打开缓存与计算子模块间的数据通路,这两个FIFO队列FIFO6和FIFO7一起向池化计算子模块43发送数据。
池化计算子模块43有两种工作模式,若由配置寄存器设置的工作模式为最大池化模式,则本模块中只有两个比较器工作,第一比较器C1在每个时钟周期对两个新的输入数据的大小进行比较并输出较大值,第二比较器C2在每个时钟周期对两个新的输入数据的大小进行比较并输出较大值,其中一个输入为0或比较器C2前一个时钟周期的输出,另一个输入为比较器C1的输出,照此工作方式,每经过两个时钟周期可得到4个输入数据中的最大值;若工作模式被设置为均值池化模式,则本模块中只有两个加法器工作,第一加法器A1在每个时钟周期对两个新的输入数据进行求和并输出和值,第二加法器A2在每个时钟周期对两个新的输入数据进行求和并输出和值,其中一个输入为0或加法器A2前一个时钟周期的输出,另一个输入为加法器A1的输出,照此工作方式,每经过两个时钟周期可以得到4个输入数据之和,再舍弃二进制结果的低2位,则可得到4个输入数据的均值。
参照图5,网络计算子模块组4中的全连接计算子模块45、缓存子模块5中的全连接输入缓存55以及计算控制子模块组6中的全连接控制子模块65和第三非线性激活子模块48的连接关系如下:
全连接输入缓存子模块55的6路输出连接到全连接计算子模块45的6个输入端,全连接控制子模块65的2个选择控制信号Sel1和Sel2连接到全连接输入缓存子模块55,全连接控制子模块65的选择控制信号Sel3连接到全连接计算子模块45,全连接计算子模块45的输出连接到非线性激活子模块48的输入端。其中,全连接输入缓存子模块55内包括两组FIFO队列,每组6个队列,12个输入选择器和6个输出选择器;全连接计算子模块45内包括6个乘法器,7个寄存器,1个MUX选择器和1个加法树。
全连接输入缓存子模块55中每个FIFO队列的输入与一个输入选择器MUXI的输出连接,每个FIFO队列的输出分别连接到一个与自身相连的MUXI选择器和一个输出选择器MUXO,第一组的6个FIFO队列与第二组的6个FIFO队列一一对应,每两个相对应的FIFO队列的输出连接到同一个MUXO选择器,6个MUXO的输出连接到全连接计算子模块45的输入。全连接控制子模块65通过选择控制信号Sel1控制每个MUXI选择器输出与之相连接的输入信号Din或者FIFO队列的输出信号,通过选择控制信号Sel2选择两组FIFO队列的其中一组6个输出作为全连接输入缓存子模块55的输出。
全连接计算子模块45在每个工作周期读入7个或6个权值,并将它们依次存储在寄存器Reg1到Reg7或寄存器Reg1到Reg6中,全连接计算子模块45的6个输入值分别与寄存器Reg1到Reg6中的6个权值相乘得到6个乘积并送入加法树,全连接控制子模块65通过Sel3选择Reg7或者加法树前一时钟周期的求和结果作为加法树的第7个输入,加法树每个时钟周期对7个输入求和,并将经过多个时钟周期求和结果送入非线性激活子模块48得到输出数据Dout。
参照图6,网络计算子模块组4内的两个卷积计算子模块41和42、两个池化计算子模块43和44及全连接计算子模块45的工作状态如下:
如图6(a)所示,两个卷积计算子模块41和42工作状态的切换方式相同,以第一卷积计算子模块41为例,对其具体工作原理进行说明:卷积计算子模块41的初始工作状态为休眠状态,卷积计算子模块41等待第一卷积输入缓存子模块51加载数据,若数据加载完成,则卷积计算子模块41进入准备状态,反之保持当前状态;进入准备状态后,第一卷积控制子模块61中的计时器开始计时,若计时器达到阈值,则卷积计算子模块41进入写入状态,反之保持当前状态;进入写入状态后,卷积控制子模块61中列计数器开始计数,若列计数器未达到阈值,则卷积计算子模块41保持当前状态,反之卷积控制子模块61中的行计数器加1,再判断行计数器是否达到阈值,若行计数器达到阈值,则卷积计算子模块41进入休眠状态,反之进入准备状态。
如图6(b)所示,两个池化计算子模块43和44工作状态的切换方式相同,以第一池化计算子模块43为例,对其具体工作原理进行说明:池化计算子模块43初始工作状态为休眠状态,池化计算子模块43等待第一池化输入缓存子模块53加载数据,若数据加载完成,则池化计算子模块43进入开始状态,反之保持当前状态;进入开始状态后,再经过一个时钟周期的时间,池化计算子模块43进入一轮运算状态;进入一轮运算状态之后,再经过一个时钟周期的时间,池化计算子模块43进入二轮运算状态;进入二轮运算状态之后,再经过一个时钟周期的时间,池化计算子模块43进入写入状态;进入写入状态后,第一池化控制模块63判断池化输入缓存子模块53是否为空,若为空,则池化计算子模块43进入休眠状态,反之进入开始状态。
如图6(c)所示,全连接计算子模块45的初始工作状态为休眠状态,等待全连接输入缓存子模块55加载数据,若数据加载完成,则全连接计算子模块45进入读取状态,反之保持当前状态;进入读取状态后,全连接控制子模块65中的读计数器开始倒计数,若读计数器归零,则全连接计算子模块45进入乘累加状态,反之保持当前状态;进入乘累加状态后,全连接控制子模块65中的乘累加计数器减1,再判断乘累加计数器是否归零,若乘累加计数器归零,则全连接计算子模块45进入写入状态,反之进入写入状态;当进入写入状态后,全连接控制子模块65中的输出计数器减1,再判断输出计数器是否归零,若输出计数器归零,则全连接计算子模块45进入休眠状态,反之进入读取状态。
以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可以在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于FPGA的卷积神经网络模块,其特征在于,包括:
参数存储子模块(1),用于存储卷积神经网络的权值参数以及配置参数;
总控制子模块(2),用于控制整体工作状态和初始化其它功能子模块;
配置寄存器组(3),用于控制各网络计算子模块组(4)中的各种计算子模块的连接关系和工作模式及缓存子模块(5)的缓存上限;
网络计算子模块组(4),用于完成卷积神经网络中的各种基本运算;
缓存子模块(5),用于存储计算的中间结果;
计算控制子模块组(6),用于控制网络计算子模块组(4)中的不同计算子模块完成各种基本运算;
各子模块的连接关系如下:
总控制子模块(2)通过内部数据、控制以及地址线与参数存储子模块(1)连接;通过内部数据和控制线与配置寄存器组(3)连接;通过内部控制线与网络计算子模块组(4)连接;通过参数输入和地址输出端口与卷积神经网络模块外部连接;
参数存储子模块(1)通过内部数据线与网络计算子模块组(4)连接;通过内部地址线与计算控制子模块组(6)连接;通过参数输入端口与卷积神经网络模块外部连接;
网络计算子模块组(4)通过内部数据线与缓存子模块(5)连接;通过内部控制线与计算控制子模块组(6)连接;通过数据输出端口与卷积神经网络模块外部连接;
缓存子模块(5)通过数据输入和状态信号输出端口与卷积神经网络模块外部连接;
配置寄存器组(3)通过内部控制线与网络计算子模块组(4)连接;
计算控制子模块组(6)通过状态信号输入端口与卷积神经网络模块外部连接。
2.如权利要求1所述的基于FPGA的卷积神经网络模块,其特征在于,总控制子模块(2)所控制的整体工作状态,包括:等待参数输入,初始化以及运行三种状态。
3.如权利要求1所述的基于FPGA的卷积神经网络模块,其特征在于,总控制子模块(2)对其它子模块的初始化,包括:
将不同配置参数从参数存储子模块(1)中读取并转换格式,并将转换格式后的配置参数写入配置寄存器组(3)中相应的配置寄存器;
将参数存储子模块(1)中的权值参数写入网络计算子模块组(4)中的卷积计算子模块。
4.如权利要求1所述的基于FPGA的卷积神经网络模块,其特征在于,网络计算子模块组(4),包括:
两个卷积计算子模块(41,42),用于完成网络中卷积层的计算;
两个池化计算子模块(43,44),用于完成网络中的下采样工作;
一个全连接计算子模块(45),用于完成网络中全连接层的计算;
三个非线性激活子模块(46,47,48),用于完成网络中非线性激活函数的运算。
5.如权利要求1或4所述的基于FPGA的卷积神经网络模块,其特征在于,配置寄存器组(3),包括:
层连接配置寄存器(31),用于控制两个卷积计算子模块(41,42)以及全连接计算子模块(45)之间的直连与跨接;
层输入配置寄存器(32),用于控制两个卷积计算子模块(41,42)和全连接计算子模块(45)并行输入的个数;
层输出配置寄存器(33),用于控制两个卷积计算子模块(41,42)和全连接计算子模块(45)并行输出的个数;
行队列配置寄存器(34),用于控制缓存子模块(5)中行队列的存储上限;
层缓存配置寄存器(35),用于控制缓存子模块(5)中的主队列的存储上限;
层池化配置寄存器(36),用于控制两个池化子模块(43,44)的工作模式;
层累加配置寄存器(37),用于控制两个卷积计算子模块(41,42)以及全连接计算子模块(45)中采用几级加法器求和。
6.如权利要求1或4所述的基于FPGA的卷积神经网络模块,其特征在于,计算控制子模块组(6),包括:
两个卷积控制子模块(61,62),用于分别控制卷积计算子模块(41,42)在休眠、准备和写入三种工作状态间切换;
两个池化控制子模块(63,64),用于分别控制池化计算子模块(43,44)在休眠、准备、一级运算、二级运算和写入五种工作状态间切换;
一个全连接控制子模块(65),用于控制全连接计算子模块(45)在休眠、读取、乘累加和写入四种工作状态间切换。
7.如权利要求1或4所述的基于FPGA的卷积神经网络模块,其特征在于,缓存子模块(5),包括:
两个卷积输入缓存(51,52),均采用乒乓双缓存的方式,用于分别存储卷积计算子模块(41,42)的输入数据;
两个池化输入缓存(53,54),均由两个FIFO队列组成,用于分别存储池化计算子模块(43,44)的输入数据;
一个全连接输入缓存(55),采用乒乓双缓存的方式,用于存储全连接计算子模块(45)的输入数据。
8.如权利要求4所述的基于FPGA的卷积神经网络模块,其特征在于,池化计算子模块(43,44)的工作模式,包括:
最大池化模式,即用两级比较器进行运算,输出连续4个输入的最大值;
均值池化模式,即用两级加法器进行运算,输出连续4个输入的平均值。
9.如权利要求7所述的基于FPGA的卷积神经网络模块,其特征在于,两个卷积输入缓存子模块(51,52)结构相同,每个卷积输入缓存子模块包括两个缓存组,每个缓存组由6个缓存单元组成,每个缓存单元由4个行队列和1个主队列组成,5个队列首尾相连。
10.如权利要求7所述的基于FPGA的卷积神经网络模块,其特征在于,全连接输入缓存子模块(55),包括:两组FIFO队列,每组设有6个FIFO队列,每个队列的输出经过两个MUX选择器后与自身的输入相连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811561899.9A CN109711533B (zh) | 2018-12-20 | 2018-12-20 | 基于fpga的卷积神经网络加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811561899.9A CN109711533B (zh) | 2018-12-20 | 2018-12-20 | 基于fpga的卷积神经网络加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109711533A true CN109711533A (zh) | 2019-05-03 |
CN109711533B CN109711533B (zh) | 2023-04-28 |
Family
ID=66256923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811561899.9A Active CN109711533B (zh) | 2018-12-20 | 2018-12-20 | 基于fpga的卷积神经网络加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109711533B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110119806A (zh) * | 2019-05-23 | 2019-08-13 | 北京环境特性研究所 | 基于fpga实现人工神经网络的方法和装置 |
CN110390392A (zh) * | 2019-08-01 | 2019-10-29 | 上海安路信息科技有限公司 | 基于fpga的卷积参数加速装置、数据读写方法 |
CN111008040A (zh) * | 2019-11-27 | 2020-04-14 | 厦门星宸科技有限公司 | 缓存装置及缓存方法、计算装置及计算方法 |
CN111027682A (zh) * | 2019-12-09 | 2020-04-17 | Oppo广东移动通信有限公司 | 神经网络处理器、电子设备及数据处理方法 |
CN111325327A (zh) * | 2020-03-06 | 2020-06-23 | 四川九洲电器集团有限责任公司 | 基于嵌入式平台的通用卷积神经网络运算架构与使用方法 |
CN111797117A (zh) * | 2020-07-02 | 2020-10-20 | 北京润科通用技术有限公司 | 一种数据处理方法及装置 |
CN111967572A (zh) * | 2020-07-10 | 2020-11-20 | 逢亿科技(上海)有限公司 | 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 |
CN112464150A (zh) * | 2020-11-06 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种基于fpga实现数据卷积运算的方法、装置和介质 |
CN113065647A (zh) * | 2021-03-30 | 2021-07-02 | 西安电子科技大学 | 加速神经网络的计算-存储通信系统及通信方法 |
CN113344179A (zh) * | 2021-05-31 | 2021-09-03 | 哈尔滨理工大学 | 基于fpga的二值化卷积神经网络算法的ip核 |
CN113590529A (zh) * | 2021-07-16 | 2021-11-02 | 华中科技大学 | 一种cnn协处理器 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN105681628A (zh) * | 2016-01-05 | 2016-06-15 | 西安交通大学 | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
US20170103299A1 (en) * | 2015-10-07 | 2017-04-13 | Altera Corporation | Method and Apparatus for Implementing Layers on a Convolutional Neural Network Accelerator |
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN107403117A (zh) * | 2017-07-28 | 2017-11-28 | 西安电子科技大学 | 基于fpga的三维卷积器 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108090022A (zh) * | 2016-11-22 | 2018-05-29 | 英特尔公司 | 有用于存储配置数据的堆叠存储器管芯的可编程集成电路 |
CN108269224A (zh) * | 2017-01-04 | 2018-07-10 | 意法半导体股份有限公司 | 可重新配置的互连 |
US10051227B1 (en) * | 2017-08-10 | 2018-08-14 | Sony Corporation | Techniques for managing transition from ATSC 1.0 to ATSC 3.0 |
US20180307976A1 (en) * | 2017-04-19 | 2018-10-25 | Beijing Deephi Intelligence Technology Co., Ltd. | Device for implementing artificial neural network with separate computation units |
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行系统 |
-
2018
- 2018-12-20 CN CN201811561899.9A patent/CN109711533B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
US20170103299A1 (en) * | 2015-10-07 | 2017-04-13 | Altera Corporation | Method and Apparatus for Implementing Layers on a Convolutional Neural Network Accelerator |
CN105681628A (zh) * | 2016-01-05 | 2016-06-15 | 西安交通大学 | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
CN108090022A (zh) * | 2016-11-22 | 2018-05-29 | 英特尔公司 | 有用于存储配置数据的堆叠存储器管芯的可编程集成电路 |
CN108269224A (zh) * | 2017-01-04 | 2018-07-10 | 意法半导体股份有限公司 | 可重新配置的互连 |
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
US20180307976A1 (en) * | 2017-04-19 | 2018-10-25 | Beijing Deephi Intelligence Technology Co., Ltd. | Device for implementing artificial neural network with separate computation units |
CN107403117A (zh) * | 2017-07-28 | 2017-11-28 | 西安电子科技大学 | 基于fpga的三维卷积器 |
US10051227B1 (en) * | 2017-08-10 | 2018-08-14 | Sony Corporation | Techniques for managing transition from ATSC 1.0 to ATSC 3.0 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行系统 |
Non-Patent Citations (2)
Title |
---|
JIN HEE KIM等: "FPGA-Based CNN Inference Accelerator Synthesized from Multi-Threaded C Software", 《2017 30TH IEEE INTERNATIONAL SYSTEM-ON-CHIP CONFERENCE (SOCC)》 * |
王羽: "基于FPGA的卷积神经网络应用研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110119806A (zh) * | 2019-05-23 | 2019-08-13 | 北京环境特性研究所 | 基于fpga实现人工神经网络的方法和装置 |
CN110390392A (zh) * | 2019-08-01 | 2019-10-29 | 上海安路信息科技有限公司 | 基于fpga的卷积参数加速装置、数据读写方法 |
CN111008040A (zh) * | 2019-11-27 | 2020-04-14 | 厦门星宸科技有限公司 | 缓存装置及缓存方法、计算装置及计算方法 |
CN111008040B (zh) * | 2019-11-27 | 2022-06-14 | 星宸科技股份有限公司 | 缓存装置及缓存方法、计算装置及计算方法 |
CN111027682A (zh) * | 2019-12-09 | 2020-04-17 | Oppo广东移动通信有限公司 | 神经网络处理器、电子设备及数据处理方法 |
CN111325327B (zh) * | 2020-03-06 | 2022-03-08 | 四川九洲电器集团有限责任公司 | 基于嵌入式平台的通用卷积神经网络运算架构与使用方法 |
CN111325327A (zh) * | 2020-03-06 | 2020-06-23 | 四川九洲电器集团有限责任公司 | 基于嵌入式平台的通用卷积神经网络运算架构与使用方法 |
CN111797117A (zh) * | 2020-07-02 | 2020-10-20 | 北京润科通用技术有限公司 | 一种数据处理方法及装置 |
CN111967572A (zh) * | 2020-07-10 | 2020-11-20 | 逢亿科技(上海)有限公司 | 一种基于FPGA的YOLO V3和YOLO V3 Tiny网络切换方法 |
WO2022095632A1 (zh) * | 2020-11-06 | 2022-05-12 | 苏州浪潮智能科技有限公司 | 一种基于fpga实现数据卷积运算的方法、装置和介质 |
CN112464150A (zh) * | 2020-11-06 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种基于fpga实现数据卷积运算的方法、装置和介质 |
CN113065647A (zh) * | 2021-03-30 | 2021-07-02 | 西安电子科技大学 | 加速神经网络的计算-存储通信系统及通信方法 |
CN113065647B (zh) * | 2021-03-30 | 2023-04-25 | 西安电子科技大学 | 加速神经网络的计算-存储通信系统及通信方法 |
CN113344179A (zh) * | 2021-05-31 | 2021-09-03 | 哈尔滨理工大学 | 基于fpga的二值化卷积神经网络算法的ip核 |
CN113344179B (zh) * | 2021-05-31 | 2022-06-14 | 哈尔滨理工大学 | 基于fpga的二值化卷积神经网络算法的ip核 |
CN113590529A (zh) * | 2021-07-16 | 2021-11-02 | 华中科技大学 | 一种cnn协处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN109711533B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109711533A (zh) | 基于fpga的卷积神经网络模块 | |
CN106775599A (zh) | 递归神经网络的多计算单元粗粒度可重构系统及方法 | |
CN207458128U (zh) | 一种基于fpga在视觉应用中的卷积神经网络加速器 | |
CN110390385A (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
CN108197705A (zh) | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 | |
CN106875011A (zh) | 二值权重卷积神经网络加速器的硬件架构及其计算流程 | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
CN107729990A (zh) | 支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 | |
CN108665059A (zh) | 基于现场可编程门阵列的卷积神经网络加速系统 | |
CN110163359A (zh) | 一种计算装置及方法 | |
CN109284817A (zh) | 深度可分离卷积神经网络处理架构/方法/系统及介质 | |
CN106250103A (zh) | 一种卷积神经网络循环卷积计算数据重用的系统 | |
CN103345461A (zh) | 基于fpga的带有加速器的多核处理器片上网络系统 | |
CN108629406A (zh) | 用于卷积神经网络的运算装置 | |
CN111767994B (zh) | 一种神经元计算装置 | |
CN102945224A (zh) | 基于fpga的高速可变点fft处理器及其处理方法 | |
CN109284824A (zh) | 一种基于可重构技术的用于加速卷积和池化运算的装置 | |
CN102214158B (zh) | 一种全互联路由结构动态可重构处理器 | |
CN113869507B (zh) | 一种基于脉动阵列的神经网络加速器卷积计算装置与方法 | |
CN109271138A (zh) | 一种适用于大维度矩阵乘的链式乘法结构 | |
CN109284475A (zh) | 一种矩阵卷积计算模块及矩阵卷积计算方法 | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |