CN110119806A - 基于fpga实现人工神经网络的方法和装置 - Google Patents

基于fpga实现人工神经网络的方法和装置 Download PDF

Info

Publication number
CN110119806A
CN110119806A CN201910435884.6A CN201910435884A CN110119806A CN 110119806 A CN110119806 A CN 110119806A CN 201910435884 A CN201910435884 A CN 201910435884A CN 110119806 A CN110119806 A CN 110119806A
Authority
CN
China
Prior art keywords
module
address
control
data
control module
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.)
Pending
Application number
CN201910435884.6A
Other languages
English (en)
Inventor
刘奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Environmental Features
Original Assignee
Beijing Institute of Environmental Features
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Environmental Features filed Critical Beijing Institute of Environmental Features
Priority to CN201910435884.6A priority Critical patent/CN110119806A/zh
Publication of CN110119806A publication Critical patent/CN110119806A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Logic Circuits (AREA)

Abstract

本发明涉及一种基于FPGA实现人工神经网络的方法和装置,涉及人工智能技术领域。其中,所述装置包括:存储模块,基于IP核例化生成,用于存储二进制指令和运算所需数据;控制模块,用于根据获取的二进制指令产生控制信号,以对其所连接的模块的工作状态进行控制;地址产生模块,用于在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据;运算模块,用于在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。通过以上装置,能够提高人工神经网络的运算效率,降低功耗,进而使人工神经网络能够应用于嵌入式系统。

Description

基于FPGA实现人工神经网络的方法和装置
技术领域
本发明涉及人工智能技术领域,尤其涉及一种基于FPGA实现人工神经网络的方法和装置。
背景技术
目前,基于人工神经网络(比如RNN模型、CNN模型等)的研究、应用大多是在计算机设备(如PC机)上完成的。通常,是先基于tensorflow、caffe等开源框架对人工神经网络进行软件编程,然后在CPU或GPU上运行相应的程序以完成相关运算。
在实现本发明的过程中,本发明的发明人发现:在CPU、GPU上运行基于开发框架实现的人工神经网络程序时,存在运算效率较低、功耗较高、人工神经网络训练时间较长的问题,因而人工神经网络难以应用于嵌入式系统,限制了人工神经网络的大规模应用。
因此,针对以上不足,需要提供一种实现人工神经网络的方法和装置,以提高人工神经网络的运算效率,降低功耗,进而使人工神经网络能够应用于嵌入式系统。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是解决现有基于开源框架实现的人工神经网络程序存在运算效率较低、功耗较大,难以应用于嵌入式系统的问题。
(二)技术方案
为了解决上述技术问题,一方面,本发明提供了一种基于FPGA实现人工神经网络的装置。
本发明的基于FPGA实现人工神经网络的装置包括:存储模块,基于IP核例化生成,用于存储二进制指令和运算所需数据;控制模块,用于根据从所述存储模块获取的二进制指令产生控制信号,以通过所述控制信号对其所连接的模块的工作状态进行控制;地址产生模块,与所述控制模块电连接,用于在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据;运算模块,与所述控制模块电连接,用于在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。
可选地,所述存储模块包括:一个ROM和至少一个RAM;其中,所述一个ROM用于存储所述二进制指令,所述至少一个RAM用于存储所述运算所需数据。
可选地,所述地址产生模块包括:判断单元、指令地址记录单元、数据地址记录单元;所述判断单元,用于根据控制信号判断当前所需地址的类型;所述地址的类型包括:指令地址、数据地址;所述指令地址记录单元,用于在所述当前所需地址的类型为指令地址的情况下,生成当前二进制指令的地址;所述数据地址记录单元,用于在所述当前所需地址的类型为数据地址的情况下,生成当前运算所需数据的地址。
可选地,所述地址产生模块还包括:地址译码单元;所述地址译码单元,用于在读取所述存储模块时提供选通信号,以使所述至少一个RAM和所述一个ROM在同一时刻只有一个选通。
可选地,所述运算模块包括:选通单元、多个运算单元;所述选通单元,用于根据当前接收的控制信号确定选通的运算单元,并调用所述选通的运算单元进行运算;所述运算单元,用于在选通后根据运算所需的数据进行运算。
可选地,所述多个运算单元包括:加运算单元、减运算单元、乘运算单元、除运算单元、relu激活函数运算单元、relu激活函数导数运算单元、softmax激活函数运算单元、softmax激活函数导数运算单元。
可选地,所述装置还包括:时钟模块,与所述控制模块电连接,用于生成时钟信号以保证所述控制模块的正常运行。
可选地,所述运算所需数据采用16位定点数的数据结构,并且,在所述16位定点数的数据结构中,最高位为符号位、次7位为整数位、末8位为小数位。
为了解决上述技术问题,另一方面,本发明还提供了一种基于FPGA实现人工神经网络的方法。
本发明的基于FPGA实现人工神经网络的方法包括:基于IP核例化生成存储模块,所述存储模块存储二进制指令和运算所需数据;设置控制模块,所述控制模块根据从所述存储模块获取的二进制指令产生控制信号,以通过所述控制信号对其所连接的模块的工作状态进行控制;设置地址产生模块,与所述控制模块电连接,所述地址产生模块在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据;设置运算模块,与所述控制模块电连接,所述运算模块在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。
可选地,所述方法还包括:设置时钟模块,与所述控制模块电连接,所述时钟模块生成时钟信号以保证所述控制模块的正常运行。
(三)有益效果
本发明的上述技术方案具有如下优点:本发明实施例提供了一种基于FPGA实现人工神经网络的装置,包括:基于IP核例化生成的存储模块,用于存储二进制指令和运算所需数据;控制模块,用于根据获取的二进制指令产生控制信号,以对其所连接的模块的工作状态进行控制;地址产生模块,用于在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据;运算模块,用于在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。通过以上装置,能够提高人工神经网络的运算效率,降低功耗,进而使人工神经网络能够应用于嵌入式系统。
附图说明
图1是本发明实施例一中的基于FPGA实现人工神经网络的装置的结构示意图;
图2是本发明实施例二中的基于FPGA实现人工神经网络的装置的结构示意图;
图3是本发明实施例三中的地址产生模块的一种可选结构示意图;
图4是本发明实施例四中的地址产生模块的一种可选结构示意图;
图5是本发明实施例五中的运算模块的一种可选结构示意图;
图6是本发明实施例六中的基于FPGA实现人工神经网络的方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,本发明实施例一提供的基于FPGA实现人工神经网络的装置100包括:存储模块101、控制模块102、地址产生模块103和运算模块104。
存储模块101,基于IP核例化生成,用于存储二进制指令和运算所需数据。
在本发明实施例中,考虑到FPGA(现场可编程门阵列)内部拥有巨量的门电路,因此可以通过IP核例化的方式构建存储模块。在一个示例中,存储模块101可包括一个ROM(只读存储器)和至少一个RAM(随机存取存储器);其中,所述一个ROM用于存储所述二进制指令,所述至少一个RAM用于存储所述运算所需数据。由于通过IP核例化得到的存储模块位于FPGA内部,因此相比于FPGA外接RAM或ROM的方式,能够有效提高读写速度,有效降低运算时间。
其中,所述二进制指令用于描述人工神经网络的运算过程,所述运算所需数据可包括:人工神经网络的权值矩阵、测试数据以及预测数据。具体实施时,可通过分析人工神经网络的运算过程设计二进制指令。以RNN(循环神经网络)为例,RNN运算过程包括前向传播运算和反向传播运算,通过分析RNN的运算过程,可将二进制指令分为通用指令和专用指令。在一个示例中,RNN对应的二进制指令包括:通用指令,具体包括加、减、乘、除运算指令,以及数据读取指令、数据写入指令、程序跳转指令;专用指令,具体包括relu激活函数运算指令、relu激活函数导数运算指令、softmax激活函数运算指令以及softmax激活函数导数运算指令。
控制模块102,用于根据从所述存储模块获取的二进制指令产生控制信号,以通过所述控制信号对其所连接的模块的工作状态进行控制。
示例性地,控制模块102可基于Moore(摩尔)状态机构建。控制模块102的输入为二进制指令,输出为多路控制信号。控制模块连接其他的硬件模块,通过输出的多路控制信号对其他的硬件模块的工作状态进行控制。
状态机的工作原理主要是通过状态迁移来实现特定的逻辑操作,在输入的二进制指令变化时,状态机的状态也会发生迁移,输出的多路控制信号的值也会发生改变,从而能够根据输入的二进制指令的变化产生相应的多路控制信号。
地址产生模块103,与控制模块102电连接,用于在控制模块102的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据。
运算模块104,与控制模块102电连接,用于在控制模块102的控制下,根据获取的所述运算所需数据进行运算。
在本发明实施例中,通过以上装置能够提高人工神经网络的运算效率,降低功耗,进而使人工神经网络能够应用于嵌入式系统。
实施例二
如图2所示,本实施例二提供的基于FPGA实现人工神经网络的装置200包括:时钟模块201、存储模块202、控制模块203、地址产生模块204和运算模块205。
时钟模块201,与控制模块203电连接,用于生成时钟信号以保证所述控制模块的正常运行。进一步,时钟模块可基于如下方式生成时钟信号:对输入FPGA的外部时钟进行分频,以得到所需的时钟信号。
存储模块202,基于IP核例化生成,用于存储二进制指令和运算所需数据。
在本发明实施例中,考虑到FPGA(现场可编程门阵列)内部拥有巨量的门电路,因此可以通过IP核例化的方式构建存储模块。在一个示例中,存储模块202可包括一个ROM(只读存储器)和至少一个RAM(随机存取存储器);其中,所述一个ROM用于存储所述二进制指令,所述至少一个RAM用于存储所述运算所需数据。由于通过IP核例化得到的存储模块位于FPGA内部,因此相比于FPGA外接RAM或ROM的方式,能够有效提高读写速度,有效降低运算时间。
其中,所述二进制指令用于描述人工神经网络的运算过程,所述运算所需数据可包括:人工神经网络的权值矩阵、测试数据以及预测数据。
具体实施时,可通过分析人工神经网络的运算过程设计二进制指令。以RNN(循环神经网络)为例,RNN运算过程包括前向传播运算和反向传播运算,通过分析RNN的运算过程,可将二进制指令分为通用指令和专用指令。在一个示例中,RNN对应的二进制指令包括:通用指令,具体包括加、减、乘、除运算指令,以及数据读取指令、数据写入指令、程序跳转指令;专用指令,具体包括relu激活函数运算指令、relu激活函数导数运算指令、softmax激活函数运算指令以及softmax激活函数导数运算指令。
在现有基于开发框架实现人工神经网络的方案中,人工神经网络运算所需数据往往采用浮点数的数据结构。而FPGA作为一种可编程逻辑器件,要实现浮点数的运算需要消耗大量的资源。鉴于此,在一个可选示例中,为了进一步降低运算造成的资源消耗,所述运算所需数据可采用16位定点数的数据结构。在该16位定点数的数据结构中,为了区分数据的正负,选取最高位为符号位(可令1表示负数,0表示正数),令其余15位为数据位。在综合考虑资源消耗和数据精度后,可将数据位中的高7位设为整数位,低8位设为小数位。
控制模块203,用于根据从所述存储模块获取的二进制指令产生控制信号,以通过所述控制信号对其所连接的模块的工作状态进行控制。
示例性地,控制模块203可基于Moore(摩尔)状态机构建。控制模块203的输入为二进制指令,输出为多路控制信号。控制模块连接其他的硬件模块,通过输出的多路控制信号对其他的硬件模块的工作状态进行控制。
状态机的工作原理主要是通过状态迁移来实现特定的逻辑操作,在输入的二进制指令变化时,状态机的状态也会发生迁移,输出的多路控制信号的值也会发生改变,从而能够根据输入的二进制指令的变化产生相应的多路控制信号。
地址产生模块204,与所述控制模块电连接,用于在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据。
示例性地,地址产生模块204在接收到控制信号后,可产生相应的地址信号,并将地址信号发送至存储模块,以从存储模块中读取所述二进制指令或者所述运算所需数据。另外,考虑到人工神经网络运算中会产生部分中间数据以及最终的运算结果,因此,地址模块204还可用于在所述控制模块的控制下生成地址,以根据所述地址向所述存储模块写入中间数据以及最终的运算结果。
运算模块205,与所述控制模块电连接,用于在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。
其中,运算模块可包括多个运算单元,且所述多个运算单元可采用流水线结构。
在本发明实施例中,通过以上装置能够提高人工神经网络的运算效率,降低功耗,摆脱了人工神经网络(比如RNN)对计算机的依赖,进而使人工神经网络能够应用于嵌入式系统。
实施例三
如图3所示,本发明实施例中的地址产生模块的一种可选结构包括:判断单元301、指令地址记录单元302、数据地址记录单元303。
判断单元301,用于根据控制信号判断当前所需地址的类型。其中,所述地址的类型包括:指令地址、数据地址。
指令地址记录单元302,用于在所述当前所需地址的类型为指令地址的情况下,生成当前二进制指令的地址,以根据所述当前二进制指令的地址从存储模块读取二进制指令。
数据地址记录单元303,用于在所述当前所需地址的类型为数据地址的情况下,生成当前运算所需数据的地址,以根据当前运算所需数据的地址从存储模块读取运算所需数据。另外,考虑到人工神经网络运算中会产生部分中间数据以及最终的运算结果,因此,数据地址记录单元303还可用于产生用于存储中间数据或运算结果的地址,以根据所述地址向所述存储模块写入中间数据以及最终的运算结果。
在本发明实施例中,通过设置如上结构的地址产生模块,能够在每一次的数据读写操作中给出所需的地址信号,从而能够保证数据读写的正确性。
实施例四
如图4所示,本发明实施例中的地址产生模块的一种可选结构包括:判断单元401、指令地址记录单元402、数据地址记录单元403、地址译码单元404。
判断单元401,用于根据控制信号判断当前所需地址的类型。其中,所述地址的类型包括:指令地址、数据地址。
指令地址记录单元402,用于在所述当前所需地址的类型为指令地址的情况下,生成当前二进制指令的地址,以根据所述当前二进制指令的地址从存储模块读取二进制指令。
数据地址记录单元403,用于在所述当前所需地址的类型为数据地址的情况下,生成当前运算所需数据的地址,以根据当前运算所需数据的地址从存储模块读取运算所需数据。另外,考虑到人工神经网络运算中会产生部分中间数据以及最终的运算结果,因此,数据地址记录单元403还可用于产生用于存储中间数据或运算结果的地址,以根据所述地址向所述存储模块写入中间数据以及最终的运算结果。
地址译码单元404,用于在读取所述存储模块时提供选通信号,以使所述至少一个RAM和所述一个ROM在同一时刻只有一个选通。例如,假设有四个存储单元,分别为三个RAM和一个ROM,通过地址译码单元404提供的选通信号,能够保证这四个存储单元中只有一个选通。
在本发明实施例中,通过设置如上结构的地址产生模块,能够在每一次的数据读写操作中给出所需的地址信号以及存储单元选通信号,从而不仅能够保证数据读写的正确性,而且有助于提高读写效率。
实施例五
如图5所示,本发明实施例中的运算模块的一种可选结构包括:选通单元501、多个运算单元502。
选通单元501,用于根据当前接收的控制信号确定选通的运算单元,并调用所述选通的运算单元进行运算。
运算单元502,用于在选通后根据运算所需的数据进行运算。
其中,所述多个运算单元502可采用流水线结构。通过使所述多个运算单元采用流水线结构,能够提高运算速度。示例性地,所述多个运算单元可包括:加运算单元、减运算单元、乘运算单元、除运算单元、relu激活函数运算单元、relu激活函数导数运算单元、softmax激活函数运算单元、softmax激活函数导数运算单元。
在本发明实施例中,通过设置如上结构的运算模块,不仅能够满足人工神经网络的运算需求,而且能够提高人工神经网络的运算效率。
实施例六
如图6所示,本发明实施例中的基于FPGA实现人工神经网络的方法的流程包括:
步骤S601、基于IP核例化生成存储模块,所述存储模块存储二进制指令和运算所需数据。
在本发明实施例中,考虑到FPGA(现场可编程门阵列)内部拥有巨量的门电路,因此可以通过IP核例化的方式构建存储模块。在一个示例中,存储模块可包括一个ROM(只读存储器)和至少一个RAM(随机存取存储器);其中,所述一个ROM用于存储所述二进制指令,所述至少一个RAM用于存储所述运算所需数据。由于通过IP核例化得到的存储模块位于FPGA内部,因此相比于FPGA外接RAM或ROM的方式,能够有效提高读写速度,有效降低运算时间。
其中,所述二进制指令用于描述人工神经网络的运算过程,所述运算所需数据可包括:人工神经网络的权值矩阵、测试数据以及预测数据。
具体实施时,可通过分析人工神经网络的运算过程设计二进制指令。以RNN(循环神经网络)为例,RNN运算过程包括前向传播运算和反向传播运算,通过分析RNN的运算过程,可将二进制指令分为通用指令和专用指令。在一个示例中,RNN对应的二进制指令包括:通用指令,具体包括加、减、乘、除运算指令,以及数据读取指令、数据写入指令、程序跳转指令;专用指令,具体包括relu激活函数运算指令、relu激活函数导数运算指令、softmax激活函数运算指令以及softmax激活函数导数运算指令。
在现有基于开发框架实现人工神经网络的方案中,人工神经网络运算所需数据往往采用浮点数的数据结构。而FPGA作为一种可编程逻辑器件,要实现浮点数的运算需要消耗大量的资源。鉴于此,在一个可选示例中,为了进一步降低运算造成的资源消耗,所述运算所需数据可采用16位定点数的数据结构。在该16位定点数的数据结构中,为了区分数据的正负,选取最高位为符号位(可令1表示负数,0表示正数),令其余15位为数据位。在综合考虑资源消耗和数据精度后,可将数据位中的高7位设为整数位,低8位设为小数位。
步骤S602、设置控制模块,所述控制模块根据从所述存储模块获取的二进制指令产生控制信号,以通过所述控制信号对其所连接的模块的工作状态进行控制。
示例性地,可基于Moore(摩尔)状态机构建控制模块。控制模块的输入为二进制指令,输出为多路控制信号。控制模块连接其他的硬件模块,通过输出的多路控制信号对其他的硬件模块的工作状态进行控制。
状态机的工作原理主要是通过状态迁移来实现特定的逻辑操作,在输入的二进制指令变化时,状态机的状态也会发生迁移,输出的多路控制信号的值也会发生改变,从而能够根据输入的二进制指令的变化产生相应的多路控制信号。
步骤S603、设置地址产生模块,与所述控制模块电连接,所述地址产生模块在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据。
示例性地,地址产生模块在接收到控制信号后,可产生相应的地址信号,并将地址信号发送至存储模块,以从存储模块中读取所述二进制指令或者所述运算所需数据。另外,考虑到人工神经网络运算中会产生部分中间数据以及最终的运算结果,因此,地址模块还可用于在所述控制模块的控制下生成地址,以根据所述地址向所述存储模块写入中间数据以及最终的运算结果。
步骤S604、设置运算模块,与所述控制模块电连接,所述运算模块在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。
其中,运算模块可包括多个运算单元,且所述多个运算单元可采用流水线结构。
在本发明实施例中,通过以上方法能够提高人工神经网络的运算效率,降低功耗,摆脱了人工神经网络(比如RNN)对计算机的依赖,进而使人工神经网络能够应用于嵌入式系统。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于FPGA实现人工神经网络的装置,其特征在于,所述装置包括:
存储模块,基于IP核例化生成,用于存储二进制指令和运算所需数据;
控制模块,用于根据从所述存储模块获取的二进制指令产生控制信号,以通过所述控制信号对其所连接的模块的工作状态进行控制;
地址产生模块,与所述控制模块电连接,用于在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据;
运算模块,与所述控制模块电连接,用于在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。
2.根据权利要求1所述的装置,其特征在于,所述存储模块包括:
一个ROM和至少一个RAM;其中,所述一个ROM用于存储所述二进制指令,所述至少一个RAM用于存储所述运算所需数据。
3.根据权利要求1所述的装置,其特征在于,所述地址产生模块包括:判断单元、指令地址记录单元、数据地址记录单元;
所述判断单元,用于根据控制信号判断当前所需地址的类型;所述地址的类型包括:指令地址、数据地址;
所述指令地址记录单元,用于在所述当前所需地址的类型为指令地址的情况下,生成当前二进制指令的地址;
所述数据地址记录单元,用于在所述当前所需地址的类型为数据地址的情况下,生成当前运算所需数据的地址。
4.根据权利要求3所述的装置,其特征在于,所述地址产生模块还包括:地址译码单元;
所述地址译码单元,用于在读取所述存储模块时提供选通信号,以使所述至少一个RAM和所述一个ROM在同一时刻只有一个选通。
5.根据权利要求1所述的装置,其特征在于,所述运算模块包括:选通单元、多个运算单元;所述选通单元,用于根据当前接收的控制信号确定选通的运算单元,并调用所述选通的运算单元进行运算;所述运算单元,用于在选通后根据运算所需的数据进行运算。
6.根据权利要求5所述的装置,其特征在于,所述多个运算单元包括:加运算单元、减运算单元、乘运算单元、除运算单元、relu激活函数运算单元、relu激活函数导数运算单元、softmax激活函数运算单元、softmax激活函数导数运算单元。
7.根据权利要求1至6任一所述的装置,其特征在于,所述装置还包括:
时钟模块,与所述控制模块电连接,用于生成时钟信号以保证所述控制模块的正常运行。
8.根据权利要求1至6任一所述的装置,其特征在于,所述运算所需数据采用16位定点数的数据结构,并且,在所述16位定点数的数据结构中,最高位为符号位、次7位为整数位、末8位为小数位。
9.一种基于FPGA实现人工神经网络的方法,其特征在于,所述方法包括:
基于IP核例化生成存储模块,所述存储模块存储二进制指令和运算所需数据;
设置控制模块,所述控制模块根据从所述存储模块获取的二进制指令产生控制信号,以通过所述控制信号对其所连接的模块的工作状态进行控制;
设置地址产生模块,与所述控制模块电连接,所述地址产生模块在所述控制模块的控制下生成地址,以根据所述地址从所述存储模块读取所述二进制指令或者所述运算所需数据;
设置运算模块,与所述控制模块电连接,所述运算模块在所述控制模块的控制下,根据获取的所述运算所需数据进行运算。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
设置时钟模块,与所述控制模块电连接,所述时钟模块生成时钟信号以保证所述控制模块的正常运行。
CN201910435884.6A 2019-05-23 2019-05-23 基于fpga实现人工神经网络的方法和装置 Pending CN110119806A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910435884.6A CN110119806A (zh) 2019-05-23 2019-05-23 基于fpga实现人工神经网络的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910435884.6A CN110119806A (zh) 2019-05-23 2019-05-23 基于fpga实现人工神经网络的方法和装置

Publications (1)

Publication Number Publication Date
CN110119806A true CN110119806A (zh) 2019-08-13

Family

ID=67523102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910435884.6A Pending CN110119806A (zh) 2019-05-23 2019-05-23 基于fpga实现人工神经网络的方法和装置

Country Status (1)

Country Link
CN (1) CN110119806A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111680794A (zh) * 2020-06-09 2020-09-18 北京环境特性研究所 一种基于fpga的文本生成装置、方法及电子设备
WO2021036893A1 (zh) * 2019-08-23 2021-03-04 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101334766A (zh) * 2008-06-30 2008-12-31 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法
CN107992940A (zh) * 2017-12-12 2018-05-04 郑州云海信息技术有限公司 一种卷积神经网络在fpga上的实现方法及装置
CN109711533A (zh) * 2018-12-20 2019-05-03 西安电子科技大学 基于fpga的卷积神经网络模块

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101334766A (zh) * 2008-06-30 2008-12-31 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法
CN107992940A (zh) * 2017-12-12 2018-05-04 郑州云海信息技术有限公司 一种卷积神经网络在fpga上的实现方法及装置
CN109711533A (zh) * 2018-12-20 2019-05-03 西安电子科技大学 基于fpga的卷积神经网络模块

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021036893A1 (zh) * 2019-08-23 2021-03-04 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN111680794A (zh) * 2020-06-09 2020-09-18 北京环境特性研究所 一种基于fpga的文本生成装置、方法及电子设备

Similar Documents

Publication Publication Date Title
US20210158163A1 (en) Methods and systems for power management in a pattern recognition processing system
US20180341612A1 (en) Methods and apparatuses for providing data received by a state machine engine
EP2891053B1 (en) Results generation for state machine engines
CN103020002B (zh) 可重构多处理器系统
US10521366B2 (en) System and method for individual addressing
WO2020103058A1 (zh) 可编程运算与控制芯片、设计方法及其装置
WO2019007406A1 (zh) 一种数据处理装置和方法
CN204667101U (zh) 一种变频器控制器
WO2021089009A1 (zh) 数据流重构方法及可重构数据流处理器
CN104011736A (zh) 用于状态机中的检测的方法及系统
US10585619B1 (en) Memory block erasure
Li et al. Artificial intelligence (AI) chip technology review
CN110119806A (zh) 基于fpga实现人工神经网络的方法和装置
CN104317770A (zh) 用于众核处理系统的数据存储结构及数据访问方法
US20230176999A1 (en) Devices for time division multiplexing of state machine engine signals
US10852800B1 (en) Multi-modal power control
CN103793263A (zh) 一种基于PowerPC处理器的DMA事务级建模方法
WO2024027140A1 (zh) 一种数据处理方法、装置、设备、系统及可读存储介质
CN107123438A (zh) 模拟多端口方法及模拟多端口记忆体
CN114418081B (zh) 面向片上脉冲神经网络的神经元实现系统
CN115935894A (zh) 一种基于分离字线的双6t-sram存储单元和双比特局部计算单元的加速器设计方法
CN202694323U (zh) 一种并行元胞自动机处理系统
CN206339931U (zh) 一种基于flash的低功耗mcu芯片装置
JPH04316153A (ja) ニューロプロセッサ
CN103984524B (zh) 一种面向risc处理器的三端口浮点寄存器文件

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190813