CN116720554B - 一种基于fpga技术的多段线性拟合的神经元电路实现方法 - Google Patents
一种基于fpga技术的多段线性拟合的神经元电路实现方法 Download PDFInfo
- Publication number
- CN116720554B CN116720554B CN202311010910.3A CN202311010910A CN116720554B CN 116720554 B CN116720554 B CN 116720554B CN 202311010910 A CN202311010910 A CN 202311010910A CN 116720554 B CN116720554 B CN 116720554B
- Authority
- CN
- China
- Prior art keywords
- module
- value
- fpga
- function
- linear fitting
- 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.)
- Active
Links
- 210000002569 neuron Anatomy 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000005516 engineering process Methods 0.000 title claims abstract description 24
- 230000006870 function Effects 0.000 claims abstract description 105
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 7
- 238000004088 simulation Methods 0.000 claims abstract description 5
- 238000006243 chemical reaction Methods 0.000 claims description 17
- DGAQECJNVWCQMB-PUAWFVPOSA-M Ilexoside XXIX Chemical compound C[C@@H]1CC[C@@]2(CC[C@@]3(C(=CC[C@H]4[C@]3(CC[C@@H]5[C@@]4(CC[C@@H](C5(C)C)OS(=O)(=O)[O-])C)C)[C@@H]2[C@]1(C)O)C)C(=O)O[C@H]6[C@@H]([C@H]([C@@H]([C@H](O6)CO)O)O)O.[Na+] DGAQECJNVWCQMB-PUAWFVPOSA-M 0.000 claims description 12
- 229910052708 sodium Inorganic materials 0.000 claims description 12
- 239000011734 sodium Substances 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000011161 development Methods 0.000 claims description 7
- 230000018109 developmental process Effects 0.000 claims description 7
- ZLMJMSJWJFRBEC-UHFFFAOYSA-N Potassium Chemical compound [K] ZLMJMSJWJFRBEC-UHFFFAOYSA-N 0.000 claims description 4
- 239000012528 membrane Substances 0.000 claims description 4
- 229910052700 potassium Inorganic materials 0.000 claims description 4
- 239000011591 potassium Substances 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 4
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000013459 approach Methods 0.000 claims description 3
- 230000005284 excitation Effects 0.000 claims description 2
- 230000000007 visual effect Effects 0.000 claims description 2
- 230000000739 chaotic effect Effects 0.000 abstract description 29
- 230000002159 abnormal effect Effects 0.000 abstract description 7
- 230000000737 periodic effect Effects 0.000 abstract description 4
- 238000012795 verification Methods 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 22
- 238000010587 phase diagram Methods 0.000 description 10
- 238000011160 research Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 201000010099 disease Diseases 0.000 description 2
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 2
- 208000024827 Alzheimer disease Diseases 0.000 description 1
- 206010008190 Cerebrovascular accident Diseases 0.000 description 1
- 208000006011 Stroke Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000002490 cerebral effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 206010015037 epilepsy Diseases 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000005312 nonlinear dynamic Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Abstract
基于FPGA技术的多段线性拟合的神经元电路实现方法,首先根据双曲正切函数的奇偶性和取值范围并结合多段线性拟合算法处理函数,然后设计求解神经元电路模块并通过软件行进仿真验证可实施性,最后将程序烧录到FPGA观察示波器与仿真验证一致。本发明使用资源消耗少、速度快、精度高的多段线性拟合算法在FPGA上产生高精度的周期信号和混沌信号,能够更直观的在硬件设备上观测到FHN神经元电路的异常放电行为。本发明不仅为FPGA产生含有双曲正切函数的改进FHN异常放电信号提供了一种全新的方法,其通过FPGA实现双曲正切函数的原理可以推广到其他复杂函数,可广泛应用于非线性神经元和智能控制等学科领域。
Description
技术领域
本发明具体涉及一种基于FPGA技术的多段线性拟合的神经元电路实现方法,属于非线性动力学领域。
背景技术
FPGA(Field Programmable Gate Array)最早出现在20世纪80年代,是一种可编程逻辑器件,它由大量的基本逻辑单元和可编程的互连资源组成。FPGA的出现使得数字电路的设计变得更加灵活、高效和可靠,同时为计算机、控制、嵌入式系统、人工智能、生物医疗等多个领域带来了丰富的科研成果和巨大发展机遇。
FPGA在计算机领域可以用于实现各种高性能计算算法,如排序、矩阵乘法、快速傅里叶变换等,在控制领域可以用于实现各种机器人控制系统,如PLC(Programmable LogicController)、DCS(Distributed Control System)等,在嵌入式系统和人工智能领域常见于智能家居、物联网、图像处理和机器学习等。近年来,随着数字技术的不断发展,FPGA因其高精度、低延迟、并行处理能力强等特点,在心电图仪、脑电图仪、医学成像设备中的图像处理、识别和存储等都能见到它的身影,通过FPGA研究大脑神经元异常放电模型就是其中之一。神经元的异常放电可能导致癫痫、脑卒中和阿尔茨海默症等疾病。利用FPGA的优点研究神经元放电模型,可以有效检测、预防神经系统疾病,推动健康社会的发展,还能够在未来智能社会发展的领域中抢占先机。因此,通过FPGA研究大脑神经元异常放电模型变得十分重要,将通过用FPGA数字技术实现改进FHN(Fitzhugh-Nagumo)神经元电路。
FPGA技术可以用查表法、拟合函数法以及Cordic等算法实现诸如tanh与sinh的复杂函数,这是实现包含复杂函数的FHN神经元模型的第一步。在低精度要求下,利用查找表法实现tanh函数是一个非常不错的选择,但是,在高精度计算要求下则需要消耗大量的ROM/RAM来实现。Cordic算法虽然可以得到较高精度的函数值,但是受适用范围过小和效率不高的限制。对于寻找资源消耗少、精度高的复杂函数的拟合函数又很难,可见目前缺少一种消耗资源少、计算速度快的方法来实现tanh这类复杂函数。
针对现有FPGA数字技术,没有高精度实现含有复杂超越函数的FHN神经元电路情况,本发明目的在于提供一种含有复杂超越函数的FHN神经元电路的FPGA实现方法。通过采用多段线性拟合方法,结合双曲正切函数的奇偶性和取值范围,只需要消耗少部分FPGA的资源,就能够解决在FPGA设备中无法实现较高精度的双曲正切函数问题,进而在FPGA中实现含有复杂超越函数的类脑FHN神经元电路。
发明内容
本发明所要解决的技术问题是:克服现有技术不能够高精度、高效率地满足FPGA生成含有复杂函数的FHN模型的放电信号。为此,本发明提出了一种基于FPGA技术的多段线性拟合的神经元电路实现方法,只需要消耗少部分RAM的资源,便能够解决在FPGA设备中实现较高精度要求下的双曲正切函数问题,减少系统误差,加快运算速度,提高系统的稳定性,进而在FPGA中产生复杂的神经元放电信号。
为实现上述目的,本发明采取的技术方案是:
一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:把神经元系统中的双曲正切函数和正弦函数分别做成一个函数模块,然后,用二阶Runge-Kutta计算对应的参数执行函数模块得到双曲正切函数和正弦函数值,运算完成后通过浮点转换器和AD转换器把得到的数值输出并通过示波器上显示,具体步骤如下:
S1:双曲正切函数的处理步骤:
S11:按照分段原理将区间划分为分段区间,并求取所有的逼近点;
由任意两个相邻逼近点的值,利用编程软件通过克莱姆法则编写代码,求取所有直线段
y=kx+b中k和b的值,并通过编程软件把k和b的值转换成IEEE754单精度的32位数据格式保存;
S12:用编程软件把两组32位的拼接成64位的数据保存并生成.coe文件,其中,高32位存储k的值,低32位存储b的值,然后,用Xilinx ise软件将.coe文件生成一个RAM的IP核;
S13:将相邻整数分段区间按照需要处理的数据,用乘法器放大对应的倍数,然后,通过浮点转换器把单精度的IEEE754浮点数转换成十进制数,取其整数部分传送给RAM的地址线进行寻址,从而得到RAM里面高位32的k值和低32位的b值,接着通过乘法器和加法器求得双曲正切函数的对应值;
S2:正弦函数的处理方法:
S21:将正弦函数在一个周期区间内的值划分成3000份,转换为单精度IEEE754浮点数存储到RAM里面,并将每次完成计算操作之后地址自动+1,若寻址地址等于3000时,下一个时钟信号来临要把地址清零;
S22:选取改进Fitzhugh-Nagumo的神经元模型为:
;
其中x和y分别为膜电位和钠门控变量,I m 是外部施加到神经元上的刺激,和/>是两个常数,分别对应钾电位和钠电位的平衡状态,c是控制钠门控速率的时间常数;
S23:根据二阶Runge-Kutta,求解系统微分方程
;
t表示神经元模型系统迭代的时间,F是外加正弦激励所带的固定频率,h是神经元系统每次迭代的步长,t的初始值从t=0开始 其中F=1.001,h的取值为 0.002083975226;
S24:基于Xilinx ise软件编程环境完成相应的Verilog算法,然后通过XIlinxise软件和Modelsim软件联合仿真,将得到的数据用Matlab软件转换成十进制进行绘图分析,在确认无误后,将XIlinx ise软件生成的bit文件烧录到FPGA开发板中;
在步骤S24中,所述Verilog算法包括程序调用模块、模块_K1_K2、模块_XB_Re模块以及转换模块,所述转换模块包括浮点转换模块和DA转换模块,所述程序调用模块控制模块_K1_K2计算出K11、K21,其中模块_K1_K2内包含浮点数转十进制定点数的转换器、加法器、乘法器、存储器RAM,程序调用模块将得到的K11、K21传输给模块_XB_Re,然后再把模块_XB_Re得到的数据传递给模块_K1_K2进行运算,接着把得到的K12、K22传输给模块_XB_Re得到新的迭代值,并把迭代出来的值传送给转换模块输出。
作为本发明的优选技术方案:根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:所述双曲正切函数模块使用多段线性拟合的方法实现,所述正弦函数模块使用查找表法实现,运算完成后通过浮点转换器和AD转换器把得到的数值输出并通过示波器上显示。
作为本发明的优选技术方案:在步骤S11中,所述双曲正切函数为tanh,tanh函数是奇函数且在x≥8时,值接近1,通过判断语句将输入大于8的值强制赋1,然后把其余小于等于 8 的每个相邻整数间划分 500 份,共划分4000份并求取4000个逼近点,负数部分利用奇函数的原理,只需求出正轴一侧,然后负轴一侧通过判断语句进行处理。
作为本发明的优选技术方案:在步骤S11中,编程软件为Windows平台的VisualStudio 搭载的C++或进行数值计算的Matlab软件。
作为本发明的优选技术方案:在步骤S13中,当双曲正切函数的输入变量x是负数时,则强制转换成正数分析,然后再把tanh(x)输出的最高位赋值为1。
作为本发明的优选技术方案:在步骤S13中,所述乘法器是通过分时复用的方式实现,共消耗1个RAM、1个加法器、1个乘法器和1个浮点转换器。
作为本发明的优选技术方案:在步骤S22-S23中,所述正弦函数为sin(Ft),当中F不为1时,所用二阶Runge-Kutta计算时,步长h取h=0.002083975226。
作为本发明的优选技术方案:在步骤S22中,神经元模型不同状态取值如下:
周期一:,初值;
周期二:,初值;
周期三:,初值;
周期四:,初值;
周期六:,初值;
混沌:,初值。
与现有技术相比,本发明的有益效果为:
本发明使用资源消耗少以及效率高的多段线性拟合算法,在FPGA上产生高精度的周期信号和混沌信号,能够更直观的在硬件设备上观测到神经元电路的异常放电行为。本发明不仅为FPGA技术产生带有双曲正切函数的FHN异常放电信号提供了一种全新的方法,其实现双曲正切函数的原理可以推广到任意复杂函数,如指数函数、对数函数、超越函数等,可广泛应用于非线性神经元和智能控制等学科领域,具有重要的研究意义。
附图说明
图1为双曲正切函数任意两个相邻的逼近点图;
图2为双曲正切函实现模块图;
图3为Verilog算法整体模块图;
图4为模块_K1_K2原理图;
图5为模块_XB_Re原理图;
图6为模块_XB_Re流程图;
图7为整体连接原理图;
图8为基于FPGA的改进FHN混沌信号发生器示波器显示周期一x-y相图;
图9为基于FPGA的改进FHN混沌信号发生器示波器显示周期一x的时序图;
图10为基于FPGA的改进FHN混沌信号发生器示波器显示周期二x-y相图;
图11为基于FPGA的改进FHN混沌信号发生器示波器显示周期二x的时序图;
图12为基于FPGA的改进FHN混沌信号发生器示波器显示周期三x-y相图;
图13为基于FPGA的改进FHN混沌信号发生器示波器显示周期三x的时序图;
图14为基于FPGA的改进FHN混沌信号发生器示波器显示周期四x-y相图;
图15为基于FPGA的改进FHN混沌信号发生器示波器显示周期四x的时序图;
图16为基于FPGA的改进FHN混沌信号发生器示波器显示周期六x-y相图;
图17为基于FPGA的改进FHN混沌信号发生器示波器显示周期六x的时序图;
图18为基于FPGA的改进FHN混沌信号发生器示波器显示混沌x-y相图;
图19为基于FPGA的改进FHN混沌信号发生器示波器显示混沌x的时序图;
图20 为拟合函数一与tanh在逼近点的误差对比图;
图21 拟合函数二与tanh在逼近点的误差对比图;
图22 为本发明的算法与tanh在逼近点的误差对比图。
实施方式
下面结合附图与具体实施方式对本发明作进一步详细描述:
本发明提出了一种基于FPGA技术的多段线性拟合的神经元电路实现方法,把神经元系统中的双曲正切函数和正弦函数分别做成一个函数模块,然后,用二阶Runge-Kutta计算对应的参数执行函数模块得到双曲正切函数和正弦函数值,运算完成后通过浮点转换器和AD转换器把得到的数值输出并通过示波器上显示,具体步骤如下:
S1:双曲正切函数的处理步骤:
S11:按照分段原理将区间划分为分段区间,并求取所有的逼近点;
由任意两个相邻逼近点的值,利用编程软件通过克莱姆法则编写代码,编程软件为C++或Matlab等,求取所有直线段y=kx+b中k和b的值,并通过编程软件把k和b的值转换成IEEE754单精度的32位数据格式保存
S12:用编程软件把两组32位的拼接成64位的数据保存并生成.coe文件,其中,高32位存储k的值,低32位存储的b值,然后,用Xilinx ise软件将.coe文件生成一个RAM的IP核;
S13:将相邻整数分段区间按照需要处理的数据,用乘法器放大对应的倍数,然后,通过浮点转换器把单精度的IEEE754浮点数转换成十进制数,取其整数部分传送给RAM的地址线进行寻址,从而得到RAM里面高位32的k值和低32位的b值,接着通过乘法器和加法器求得双曲正切函数的对应值;
S2:正弦函数的处理方法:
S21:由于正弦函数的取值在[-1,1]之间呈周期性规律变化,因此,在满足精度要求下将正弦函数在一个周期区间内的值划分成3000份,转换为单精度IEEE754浮点数存储到RAM里面,并将每次完成计算操作之后地址自动+1,若寻址地址等于3000时,下一个时钟信号来临要把地址清零,如此循环往复就实现了一个随时间不断变化的周期正弦函数;
S22:根据上述步骤,选取改进Fitzhugh-Nagumo的神经元模型为:
;
其中x和y分别为膜电位和钠门控变量,I m 是外部施加到神经元上的刺激,和/>是两个常数是两个常数,分别对应钾电位和钠电位的平衡状态,c是控制钠门控速率的时间常数;
S23:根据二阶Runge-Kutta,求解系统微分方程
;
S24:根据上述表达式,基于Xilinx ise软件编程环境完成相应的Verilog算法,然后通过XIlinx ise和Modelsim软件联合仿真,将得到的数据用Matlab软件转换成十进制进行绘图分析,在确认无误后,将XIlinx ise软件生成的bit文件烧录到FPGA开发板中。
所述双曲正切函数模块使用多段线性拟合的方法实现,所述正弦函数模块使用查找表法实现,运算完成后通过浮点转换器和AD转换器把得到的数值输出并通过示波器上显示。
本发明提出的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,只需要消耗少部分RAM的资源,就能够在FPGA中实现较高精度要求下的双曲正切函数问题,并提供一种Verilog语言下FHN信号的编程方法,可产生复杂的周期和混沌信号。克服了现有技术不能够满足FPGA高精度、高效率生含有复杂函数的FHN放电模型,提出一种基于FPGA技术的多段线性拟合的神经元电路实现方法,只需要消耗少部分RAM的资源,便能够解决在FPGA设备中实现较高精度要求下的复杂函数问题。
本发明的方法具体如下:
首先进行双曲正切函数的处理:
首先,由于给出的tanh函数是奇函数且在x≥8时,值接近1,可以通过判断语句将输入大于8的值强制赋1,然后把其余大于等于的每个相邻整数间划分500份,共划分4000份并求取4000个逼近点,负数部分可以利用奇函数的原理,只需求出正轴一侧,然后负轴一侧通过判断语句进行处理;
由任意两个相邻逼近点的值如图1所示,利用软件通过克莱姆法则编写代码,求取所有直线段y=kx+b中k和b的值,最后把值转换成IEEE754单精度的32位数据格式保存。
然后,用软件把两组32位的拼接成64位的数据保存并生成.coe文件,其中高32位存储k的值,低32位存储b的值,然后用Xilinx ise软件将.coe文件生成一个RAM的IP核;
最后,相邻整数分段区间有500段就把需要处理的数据用乘法器放大500倍,再通过浮点转换器把单精度的IEEE754浮点数转换成十进制数,取其整数部分传送给RAM的地址线进行寻址,从而得到RAM里面高位32的k值和低32位的b值,再通过乘法器和加法器便可得到双曲函数的值。
当输入的变量x是负数时,强制转换成正数分析,然后再把输出的tanh(x)最高位赋值为1即可,其中乘法器是通过分时复用的方式使用,所以共消耗1个RAM、1个加法器、1个乘法器、1个浮点转换器,具体模块如图2所示。
其次,正弦函数的处理方法:
首先,由于正弦函数的取值在[-1,1]之间呈周期性规律变化,只需在满足精度要求下把正弦函数在一个周期区间内的值划分成3000份,并转换为单精度IEEE754浮点数存到RAM里面,每次完成计算操作之后地址+1。
假如寻址地址等于3000时,下一个时钟信号来临要把地址清零,如此循环往复便实现了一个随时间不断变化的正弦函数。
当sin(Ft),当中F不为1时,所用二阶Runge-Kutta计算时,步长h不可以随便取,这里取h=0.002083975226;
然后,根据上述步骤,选取改进Fitzhugh-Nagumo的神经元模型为:
;
其中x和y分别为膜电位和钠门控变量,I m 是外部施加到神经元上的刺激,和/>是两个常数是两个常数,分别对应钾电位和钠电位的平衡状态,c是控制钠门控速率的时间常数;
改进Fitzhugh-Nagumo的神经元模型简称为FHN。
不同状态取值如下:
周期一:,初值;
周期二:,初值;
周期三:,初值;
周期四:,初值;
周期六:,初值;
混沌:,初值;
再然后,根据二阶Runge-Kutta求解系统微分方程;
;
最后,根据上述数学表达式编写相应的Verilog算法,Verilog算法包括四部分,分别为程序调用模块、模块_K1_K2、模块_XB_Re以及转换模块,所述转换模块包括浮点转换模块和DA转换模块,然后可以通过XIlinx ise和Modelsim软件联合仿真,并将得到的数据用Matlab将得到的数据转换成十进制进行绘图分析,Verilog算法整体模块图如图3所示。
程序调用模块控制模块_K1_K2计算出K11、K21,其中模块_K1_K2内包含浮点数转十进制定点数的转换器、加法器、乘法器、存储器RAM。程序调用模块将得到的K11、K21传输给模块_XB_Re,然后再把模块_XB_Re得到的数据传递给模块_K1_K2进行运算,接着把得到的K12、K22传输给模块_XB_Re得到新的迭代值,并把迭代出来的值传送给转换模块输出。模块_K1_K2和模块_XB_Re原理图如图4、图5,模块_XB_Re流程图如图6。
此外,为了呈现上述实现tanh算法的拟合效果,单从不同周期的改进FHN相轨迹图是不能够直观的表达出来,以下通过其他分段拟合函数与tanh函数进行对比,能够更直观的感受到本算法的优越性。
分段拟合函数(1):
(1);
分段拟合函数(2);
(2);
由于tanh是奇函数,所要只需分别讨论上述分段拟合函数大于0的一侧即可,若选取[0,8]区间内划分4000份的值讨论,其中tanh得到的平均误差为0.00000025715,拟合函数一得到的平均误差为0.00778553327157498,拟合函数二得到的平均误差为0.0051924437,这是由于当x>4时,双曲正切函数的值非常接近于1,造成三者的平均误差都非常低。通过计算得知改进FHN模型中x的取值不超过4,故选取[0,4]区间内划分2000份进行讨论,计算tanh得到的平均误差为0.0000002676,拟合函数一得到的平均误差为0.015487411,拟合函数二得到的平均误差为0.010301231。
其中整体连接原理图如图7所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期一x-y相图如图8所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期一x的时序图如图9所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期二x-y相图如图10所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期二x的时序图如图11所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期三x-y相图如图12所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期三x的时序图如图13所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期四x-y相图如图14所示,基于FPGA的改进FHN混沌信号发生器示波器显示周期四x的时序图如图15所示; 基于FPGA的改进FHN混沌信号发生器示波器显示周期六x-y相图如图16所示;基于FPGA的改进FHN混沌信号发生器示波器显示周期六x的时序图如图17所示;基于FPGA的改进FHN混沌信号发生器示波器显示混沌x-y相图如图18所示;基于FPGA的改进FHN混沌信号发生器示波器显示混沌x的时序图如图19所示。
最后,算法之间的误差由图20、图21和图22所示,图20 为拟合函数一与tanh在逼近点的误差对比图,图21 拟合函数二与tanh在逼近点的误差对比图,图22为本发明的算法与tanh在逼近点的误差对比图。
通过图20、图21与图22的对比可知,本发明中实现tanh的算法在精度方面远高于其他两者,且不需要消耗过多的乘法器、除法器和加法器等资源,可以广阔应用于高精度计算方面。
综上所述,本发明克服现有技术不能够满足FPGA高精度、高效率生含有复杂函数的FHN放电模型,提出一种基于FPGA技术的多段线性拟合的神经元电路实现方法,只需要消耗少部分RAM的资源,便能够解决在FPGA设备中实现较高精度要求下的复杂函数问题。
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作任何其他形式的限制,而依据本发明的技术实质所作的任何修改或等同变化,仍属于本发明所要求保护的范围。
Claims (8)
1.一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:把神经元系统中的双曲正切函数和正弦函数分别做成一个函数模块,然后,用二阶Runge-Kutta计算对应的参数执行函数模块得到双曲正切函数和正弦函数值,运算完成后通过浮点转换器和AD转换器把得到的数值输出并通过示波器上显示,具体步骤如下:
S1:双曲正切函数的处理步骤:
S11:按照分段原理将区间划分为分段区间,并求取所有的逼近点;
由任意两个相邻逼近点的值,利用编程软件通过克莱姆法则编写代码,求取所有直线段
y=kx+b中k和b的值,并通过编程软件把k和b的值转换成IEEE754单精度的32位数据格式保存;
S12:用编程软件把两组32位的拼接成64位的数据保存并生成.coe文件,其中,高32位存储k的值,低32位存储b的值,然后,用Xilinx ise软件将.coe文件生成一个RAM的IP核;
S13:将相邻整数分段区间按照需要处理的数据,用乘法器放大对应的倍数,然后,通过浮点转换器把单精度的IEEE754浮点数转换成十进制数,取其整数部分传送给RAM的地址线进行寻址,从而得到RAM里面高位32的k值和低32位的b值,接着通过乘法器和加法器求得双曲正切函数的对应值;
S2:正弦函数的处理方法:
S21:将正弦函数在一个周期区间内的值划分成3000份,转换为单精度IEEE754浮点数存储到RAM里面,并将每次完成计算操作之后地址自动+1,若寻址地址等于3000时,下一个时钟信号来临要把地址清零;
S22:选取改进Fitzhugh-Nagumo的神经元模型为:
;
其中x和y分别为膜电位和钠门控变量,I m 是外部施加到神经元上的刺激,和/>是两个常数,分别对应钾电位和钠电位的平衡状态,c是控制钠门控速率的时间常数;
S23:根据二阶Runge-Kutta,求解系统微分方程
;
t表示神经元模型系统迭代的时间,F是外加正弦激励所带的固定频率,h是神经元系统每次迭代的步长,t的初始值从t=0开始 其中F=1.001,h的取值为 0.002083975226;
S24:基于Xilinx ise软件编程环境完成相应的Verilog算法,然后通过XIlinx ise软件和Modelsim软件联合仿真,将得到的数据用Matlab软件转换成十进制进行绘图分析,在确认无误后,将XIlinx ise软件生成的bit文件烧录到FPGA开发板中;
在步骤S24中,所述Verilog算法包括程序调用模块、模块_K1_K2、模块_XB_Re模块以及转换模块,所述转换模块包括浮点转换模块和DA转换模块,所述程序调用模块控制模块_K1_K2计算出K11、K21,其中模块_K1_K2内包含浮点数转十进制定点数的转换器、加法器、乘法器、存储器RAM,程序调用模块将得到的K11、K21传输给模块_XB_Re,然后再把模块_XB_Re得到的数据传递给模块_K1_K2进行运算,接着把得到的K12、K22传输给模块_XB_Re得到新的迭代值,并把迭代出来的值传送给转换模块输出。
2.根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:所述双曲正切函数模块使用多段线性拟合的方法实现,所述正弦函数模块使用查找表法实现,运算完成后通过浮点转换器和AD转换器把得到的数值输出并通过示波器上显示。
3.根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:在步骤S11中,所述双曲正切函数为tanh,tanh函数是奇函数且在x≥8时,值接近1,通过判断语句将输入大于8的值强制赋1,然后把其余小于等于 8 的每个相邻整数间划分 500 份,共划分4000份并求取4000个逼近点,负数部分利用奇函数的原理,只需求出正轴一侧,然后负轴一侧通过判断语句进行处理。
4.根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:在步骤S11中,编程软件为Windows平台的Visual Studio 搭载的C++或进行数值计算的Matlab软件。
5.根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:在步骤S13中,当双曲正切函数的输入变量x是负数时,则强制转换成正数分析,然后再把tanh(x)输出的最高位赋值为1。
6.根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:在步骤S13中,所述乘法器是通过分时复用的方式实现,共消耗1个RAM、1个加法器、1个乘法器和1个浮点转换器。
7.根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:在步骤S22-S23中,所述正弦函数为sin(Ft),当中F不为1时,所用二阶Runge-Kutta计算时,步长h取h=0.002083975226。
8.根据权利要求1所述的一种基于FPGA技术的多段线性拟合的神经元电路实现方法,其特征在于:在步骤S22中,神经元模型不同状态取值如下:
周期一:,初值;
周期二:,初值;
周期三:,初值;
周期四:,初值;
周期六:,初值;
混沌:,初值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311010910.3A CN116720554B (zh) | 2023-08-11 | 2023-08-11 | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311010910.3A CN116720554B (zh) | 2023-08-11 | 2023-08-11 | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116720554A CN116720554A (zh) | 2023-09-08 |
CN116720554B true CN116720554B (zh) | 2023-11-14 |
Family
ID=87868410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311010910.3A Active CN116720554B (zh) | 2023-08-11 | 2023-08-11 | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116720554B (zh) |
Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108803525A (zh) * | 2018-06-28 | 2018-11-13 | 浙江大学 | 一种混沌敏捷高精度的丙烯聚合生产过程最优软测量仪表 |
CN109543813A (zh) * | 2019-01-23 | 2019-03-29 | 江西理工大学 | 一种离散时间动态反馈辅助winner-take-all竞争方法 |
CN109613826A (zh) * | 2018-12-17 | 2019-04-12 | 重庆航天职业技术学院 | 一种分数阶拱形mems谐振器的反振荡自适应控制方法 |
CN109726063A (zh) * | 2018-12-19 | 2019-05-07 | 北京航空航天大学 | 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法 |
WO2019094440A1 (en) * | 2017-11-08 | 2019-05-16 | General Vibration Corporation | Coherent phase switching and modulation of a linear actuator array |
CN109993684A (zh) * | 2017-12-30 | 2019-07-09 | 英特尔公司 | 机器学习和深度学习处理中的压缩 |
CN109997154A (zh) * | 2017-10-30 | 2019-07-09 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
CN110598857A (zh) * | 2019-05-14 | 2019-12-20 | 河北工业大学 | 一种显示Izhikevich神经元模型的方法 |
CN110659015A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 使用分段线性逼近的深度神经网络架构 |
CN110688088A (zh) * | 2019-09-30 | 2020-01-14 | 南京大学 | 一种面向神经网络的通用非线性激活函数计算装置和方法 |
CN110851911A (zh) * | 2018-07-28 | 2020-02-28 | 华中科技大学 | 终端状态计算模型训练方法、控制序列搜索方法及装置 |
CN111061992A (zh) * | 2019-11-28 | 2020-04-24 | 南京大学 | 一种基于抛物线的函数拟合方法及其装置 |
CN111383161A (zh) * | 2018-12-28 | 2020-07-07 | 英特尔公司 | 基于硬件预排序和并行的可重配置聚类阵列的bvh构建的统一架构 |
US10997510B1 (en) * | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
CN113624637A (zh) * | 2021-08-13 | 2021-11-09 | 北京有色金属与稀土应用研究所有限公司 | 一种以重量差减法测定银及金银合金中银含量的方法 |
CN113705139A (zh) * | 2021-09-22 | 2021-11-26 | 南京若吉电子有限公司 | 一种基于fpga的禁忌学习神经元电路实现方法和系统 |
WO2022001722A1 (zh) * | 2020-06-29 | 2022-01-06 | 湖南毂梁微电子有限公司 | 一种用于计算正弦或余弦函数的实现方法及装置 |
CN113971458A (zh) * | 2021-10-13 | 2022-01-25 | 常州大学 | 一种基于无乘法器实现的神经元电路 |
CN114429094A (zh) * | 2021-12-31 | 2022-05-03 | 南京师范大学 | 一种实现s型激活函数的电路 |
CN114567396A (zh) * | 2022-02-28 | 2022-05-31 | 哲库科技(北京)有限公司 | 无线通信方法、非线性函数的拟合方法、终端及设备 |
WO2022156475A1 (zh) * | 2021-01-20 | 2022-07-28 | 华为技术有限公司 | 神经网络模型的训练方法、数据处理方法及装置 |
CN114932909A (zh) * | 2022-06-01 | 2022-08-23 | 吉林大学 | 一种基于互补滤波实现加速度校正的坡度估算方法 |
CN115130411A (zh) * | 2022-07-14 | 2022-09-30 | 电子科技大学 | 一种基于fpga和dac的实时可重构通用忆阻器仿真方法 |
CN115587321A (zh) * | 2022-12-09 | 2023-01-10 | 中国科学院苏州生物医学工程技术研究所 | 一种脑电信号识别分类方法、系统及电子设备 |
CN115640493A (zh) * | 2022-10-28 | 2023-01-24 | 成都医学院 | 基于fpga的分段线性分数阶运算ip核 |
CN115658008A (zh) * | 2022-09-21 | 2023-01-31 | 浙江大学 | 一种资源复用型超越函数运算实现方法 |
CN116384455A (zh) * | 2023-03-20 | 2023-07-04 | 电子科技大学 | 一种非均匀分段线性化激活函数硬件实现方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4881803B2 (ja) * | 2007-07-03 | 2012-02-22 | 千代田化工建設株式会社 | 安全弁振動解析装置 |
EP3447634B1 (en) * | 2016-04-19 | 2021-01-20 | Cambricon Technologies Corporation Limited | Non-linear function computing device and method |
US11039806B2 (en) * | 2018-12-20 | 2021-06-22 | Canon Medical Systems Corporation | Apparatus and method that uses deep learning to correct computed tomography (CT) with sinogram completion of projection data |
-
2023
- 2023-08-11 CN CN202311010910.3A patent/CN116720554B/zh active Active
Patent Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109997154A (zh) * | 2017-10-30 | 2019-07-09 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
WO2019094440A1 (en) * | 2017-11-08 | 2019-05-16 | General Vibration Corporation | Coherent phase switching and modulation of a linear actuator array |
CN109993684A (zh) * | 2017-12-30 | 2019-07-09 | 英特尔公司 | 机器学习和深度学习处理中的压缩 |
US10997510B1 (en) * | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
CN108803525A (zh) * | 2018-06-28 | 2018-11-13 | 浙江大学 | 一种混沌敏捷高精度的丙烯聚合生产过程最优软测量仪表 |
CN110659015A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 使用分段线性逼近的深度神经网络架构 |
CN110851911A (zh) * | 2018-07-28 | 2020-02-28 | 华中科技大学 | 终端状态计算模型训练方法、控制序列搜索方法及装置 |
CN109613826A (zh) * | 2018-12-17 | 2019-04-12 | 重庆航天职业技术学院 | 一种分数阶拱形mems谐振器的反振荡自适应控制方法 |
CN109726063A (zh) * | 2018-12-19 | 2019-05-07 | 北京航空航天大学 | 一种基于指令行为对Verilog实现的MIPS处理器的自动化评判方法 |
CN111383161A (zh) * | 2018-12-28 | 2020-07-07 | 英特尔公司 | 基于硬件预排序和并行的可重配置聚类阵列的bvh构建的统一架构 |
CN109543813A (zh) * | 2019-01-23 | 2019-03-29 | 江西理工大学 | 一种离散时间动态反馈辅助winner-take-all竞争方法 |
CN110598857A (zh) * | 2019-05-14 | 2019-12-20 | 河北工业大学 | 一种显示Izhikevich神经元模型的方法 |
CN110688088A (zh) * | 2019-09-30 | 2020-01-14 | 南京大学 | 一种面向神经网络的通用非线性激活函数计算装置和方法 |
CN111061992A (zh) * | 2019-11-28 | 2020-04-24 | 南京大学 | 一种基于抛物线的函数拟合方法及其装置 |
WO2022001722A1 (zh) * | 2020-06-29 | 2022-01-06 | 湖南毂梁微电子有限公司 | 一种用于计算正弦或余弦函数的实现方法及装置 |
WO2022156475A1 (zh) * | 2021-01-20 | 2022-07-28 | 华为技术有限公司 | 神经网络模型的训练方法、数据处理方法及装置 |
CN113624637A (zh) * | 2021-08-13 | 2021-11-09 | 北京有色金属与稀土应用研究所有限公司 | 一种以重量差减法测定银及金银合金中银含量的方法 |
CN113705139A (zh) * | 2021-09-22 | 2021-11-26 | 南京若吉电子有限公司 | 一种基于fpga的禁忌学习神经元电路实现方法和系统 |
CN113971458A (zh) * | 2021-10-13 | 2022-01-25 | 常州大学 | 一种基于无乘法器实现的神经元电路 |
CN114429094A (zh) * | 2021-12-31 | 2022-05-03 | 南京师范大学 | 一种实现s型激活函数的电路 |
CN114567396A (zh) * | 2022-02-28 | 2022-05-31 | 哲库科技(北京)有限公司 | 无线通信方法、非线性函数的拟合方法、终端及设备 |
CN114932909A (zh) * | 2022-06-01 | 2022-08-23 | 吉林大学 | 一种基于互补滤波实现加速度校正的坡度估算方法 |
CN115130411A (zh) * | 2022-07-14 | 2022-09-30 | 电子科技大学 | 一种基于fpga和dac的实时可重构通用忆阻器仿真方法 |
CN115658008A (zh) * | 2022-09-21 | 2023-01-31 | 浙江大学 | 一种资源复用型超越函数运算实现方法 |
CN115640493A (zh) * | 2022-10-28 | 2023-01-24 | 成都医学院 | 基于fpga的分段线性分数阶运算ip核 |
CN115587321A (zh) * | 2022-12-09 | 2023-01-10 | 中国科学院苏州生物医学工程技术研究所 | 一种脑电信号识别分类方法、系统及电子设备 |
CN116384455A (zh) * | 2023-03-20 | 2023-07-04 | 电子科技大学 | 一种非均匀分段线性化激活函数硬件实现方法 |
Non-Patent Citations (5)
Title |
---|
"FPGA implementation of piecewise linear spiking neuron and simulation of cortical neurons";Lin Xianghong等;《 Microprocessors and Microsystems》;第91卷;第1-13页 * |
"FPGA Implementation of Range Addressable Activation Function for Lattice-Ladder Neuron";Dalius Navakauskas等;《Elektronika ir Elektrotechnika》;第22卷(第2期);第92-95页 * |
"基于FPGA技术的双磁控忆阻Shinriki振荡器对称行为分析";闵富红等;《电子与信息学报》;第43卷(第11期);第3384-3392页 * |
"基于双曲函数的双忆阻器混沌电路多稳态特性分析";王珠林等;《电子学报》;第46卷(第2期);第486-494页 * |
"面向EDA课程设计的数字神经元电路实现";朱栋等;《实验室科学》;第25卷(第3期);第25-29页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116720554A (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
JPH05216627A (ja) | 乗算器および乗算方法 | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
Ortega-Zamorano et al. | High precision FPGA implementation of neural network activation functions | |
CN111325332A (zh) | 卷积神经网络的处理方法和装置 | |
CN116720554B (zh) | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 | |
CN111882050B (zh) | 基于fpga的用于提高bcpnn速度的设计方法 | |
CN110414083B (zh) | 一种Chay模型电子神经元产品和仿真平台 | |
CN110825346B (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN110458277B (zh) | 适用于深度学习硬件加速器的可配置精度的卷积硬件结构 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113031912A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN111626399A (zh) | 卷积神经网络计算装置、数据计算方法 | |
CN111258633A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110515588B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110688087B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN210006029U (zh) | 数据处理器 | |
CN111258542B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110515586B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
Park et al. | Digital neuron: A hardware inference accelerator for convolutional deep neural networks | |
CN112906863A (zh) | 一种神经元加速处理方法、装置、设备及可读存储介质 | |
WO2020108486A1 (zh) | 数据处理装置、方法、芯片及电子设备 | |
CN110647307A (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 |