利用在线模拟可编程芯片实现神经元动力学(源码)
摘要:本文利用在线模拟可编程芯片即FPAA模拟实现神经元动力学。在计算机研究领域中,人工智能是重要的研究内容。人工神经网络是人工智能的重要手段,其具有非线性动力学特征,具备解决非线性问题,一定的学习以及系统拟合能力。硬件仿真相对于软件仿真能够满足更为复杂的生物神经元的要求。在线模拟可编程芯片不仅有经济、高效、低耗能、现场可在线编程等优点,同时具有可重构的特点,能够更高效地运行人工神经网络的计算。本文针对FitzHugh-Nagumo神经元动力学方程,利用FPAA实现对神经元动力学行为的硬件模拟。通过和Matlab模拟结果的对比,证实硬件模拟取得了较好的效果。关键字:在线模拟可编程芯片;FitzHugh-Nagumo方程;神经元动力学;硬件模拟Implementation of Neural Dynamics based on Field Programmable Analog Array Student majoring in computer science and technology DING Li-xuan Tutor XU Yan Abstract:This study intends to use the Field Programmable Analog Array which can also be called FPAA to implement the neuronal dynamics. In computer science, the artificial intelligence plays an important role. Artificial neural network is an important means of artificial intelligence and it has the characteristics of nonlinear dynamics, which has the ability to solve the nonlinear problems, to learn and to fit the system. The hardware is more flexible to achieve the complex biological neuronal emulation than s
*好棒文|www.hbsrm.com +Q: %3^5`1^9`1^6^0`7^2#
oftware. The FPAA chip is not only cost-effective, low power consumption and online programming, but also has the characteristics of reconfiguration. So it can provide a more efficient and economic way to achieve artificial intelligence. This study uses the FPAA chips to implement the hardware simulation of the dynamic behavior of neurons based on FitzHugh-Nagumo equation. Through the comparison with the results of MATLAB simulation, it is proved that the hardware simulation has achieved good results. 随着计算机技术的发展,人们对计算机计算性能的要求越来越高,人工智能体现出其重要性。随着人工智能的快速发展,人工神经网络的研究也逐渐进入大众视野[1]。目前,人工智能已经应用在模式识别、语音识别、医疗体系以及信号处理等多方面领域中[2]。在目前的人工智能领域之中,大部分神经网络的实现都是通过软件的方法[3]。但是神经系统具有高维、强耦合以及复杂非线性动力学特征,许多软件模拟并不能体现其特性[4]。随着硬件技术的不断发展,利用硬件技术对神经元的实现引起了众多科研工作者的注意。硬件的仿真实现相比于软件的仿真模拟能够实现神经系统的实时运算,并且极大程度的提高了其计算速度及其并行程度。同时,动态可重构技术极大地促进了可重构技术,在一定程度上简化了硬件操作的复杂性,并且使得硬件资源得到了更充分的利用。因此,利用具有可重构、快速高效、经济性强等特点的在线模拟可编程芯片对神经元乃至整个神经系统的仿真模拟引领了人工智能领域的一股科研热潮,更大程度上促进了人工智能乃至生物神经领域的发展。1.选题背景1.1选题目的及意义人工智能是计算机科学的一个分支,起源于二十世纪四十年代初期。其机制就是通过模拟生物神经系统的工作方式以及信息处理机制来实现对计算机计算速度的提升以及提高非线性系统处理能力[3]。近些年来,随着生物神经的研究逐渐深入,科学家们能够通过神经元以及神经网络的生物特性研究生物神经之间的信息传导,从而能够将其应用至各个领域之中,促进人工智能发展。但随着研究的深入,一些仿真模拟软件存在性能运算速度上的问题,限制神经元乃至神经网络非线性动力学的研究,因此,硬件电路模拟神经元是必然的发展趋势[4]。在目前的发展阶段主要利用多电极阵列进行脑神经系统信息的采集,但是随着数据量的不断扩大,其计算能力受到了极大的挑战,利用具有相关性分析的硬件能够提高其计算能力,因此现场可编程门阵列即FPGA在神经网络领域发挥出其重要的作用[5]。同时在数字可编程器件发展的重要阶段,可编程模拟芯片也得到了快速的发展,并且相比于FPGA,这些芯片具有芯片内部互连且允许高层描述等功能[6]。因此,利用FPAA芯片实现对神经元的设计模拟,不仅对生物神经系统等领域有促进作用,同时对人工智能也有十分重大的意义,促进了人工智能硬件化的发展。1.2发展研究状况20世纪是电子硬件发展的主要时期,在60年代神经网络的硬件实现开始兴起,其中最著名的便是感知机与ADALINE神经网络模型的实现[2]。美国物理学家Hopfied提出了人工神经网络,促进了人工智能这一领域的发展[1];刘易斯利用一些离散晶体管和相关组件研究了基于Hodgkin-Huxley方程的电子膜模型;Ronge模拟了神经系统模型;W.J.Karplus等人最早研究电耳蜗模型;罗伊实现一种类似于刘易斯的电子膜模型,他主要使用场效应晶体管作为可调导体;哈蒙构造了一个简单的神经元模型,利用产生一个动作电位的刺激脉冲响应相似的方式实现神经元[7]。从20世纪80年代开始兴起的人工神经网络的热潮一直持续到今天,并且人工智能的兴起促进了人们生活水平的极大提高,同时更促进了科研工作的发展。 现场可编程门阵列即FPGA技术最早主要应用于雷达、通讯以及图像识别等领域,并且FPGA在生命科学中的应用也非常广泛,例如 Oliver 和Brown等人利用FPGA进行 DNA 和蛋白质序列的计算和分析[8]。并且随着数字电路以及人工智能技术的发展,人工神经网络的硬件设计也经常用到FPGA 技术。 FPGA对生物神经元及神经元网络的建模研究开始于本世纪初,它在神经系统建模等方面的工作有很重大的影响,并且现场可编程门阵列技术已经开始广泛的投入商用。随着硬件技术的发展,一种模拟可编程器件诞生,尤其以美国Anadigm公司开发的FPAA为代表,但在目前的发展来看,该芯片的使用量较少,还未大规模投入商用。2.开发平台及应用技术本次实验利用Matlab进行软件的仿真模拟,并且在Anadigm Designer2进行硬件电路的仿真,并将电路代码烧录至FPAA芯片中进行硬件仿真。Matlab在数值计算应用方面首屈一指,能够对神经元非线性方程FitzHugh-Nagumo方程有较好的体现形式,同时,Anadigm Designer2则是一款针对FPAA芯片而设计的EDA工具,具有图形化界面以及能够将复杂的电路设计变成简单方便的切实有用的电路模拟[9]。FPAA作为现场可编程芯片,具有可重构以及现场可编程的特点,大大简化了模拟电路的设计。2.1 Matlab简介Matlab的名字是由Matrix与Laboratory组成,其意义指的是“矩阵工厂”,是一个数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境[9]。Matlab应用领域十分宽泛,其中包括工程计算、控制设计、图像处理等方面。近些年,随着神经网络的快速发展,人们逐渐在Matlab中开发出神经网络工具包。由于Matlab具有程序可读性强、程序简单等优点,科研工作者利用Matlab在数值计算方面的强大功能,极大地简化了神经网络模型的模拟与编程,提高了开发效率[10]。2.2 Anadigm Designer2简介Anadigm Designer2是由美国Anadigm公司针对其开发的FPAA芯片专门研发的一款EDA工具,该软件提供了FPAA不同型号的模拟芯片,除此之外,该EDA工具还提供了FPAA芯片内部模拟元器件,并为用户提供了图形化界面,用户友好度极高。同时,该EDA工具具有自身生成C代码能力,能够在一定程度上面生成C代码用以控制硬件。并且,在Anadigm Designer2这个EDA工具中具有不同的虚拟信号波以及模拟示波器,能够真正模拟硬件工作状态。Anadigm Designer2能够极大地简化电路工程师的工作,使其从繁复的电路设计中解放出来[11]。2.3 FPAA简介FPAA即为现场可编程模拟阵列,是一种模拟可编程器件。它的出现为模拟电路在数字可编程器件发展的重要时期重新注入了新的生命。FPAA不仅具有模拟电路的简洁、经济性高、速度快等特点,同时具有现场可编程能力,并且能够为用户提供简单便捷的电路设计方法。FPAA的核心是CAB即可重构模拟模块以及PIN即可编程互连网络,同时FPAA还包括可编程电阻阵列即PRA、可编程电容阵列即PCA、配置数据存储器以及输入输出模块等部分。其中CAB主要负责其核心算法功能,包括加减法、乘除法以及积分、微分等运算[11]。FPAA相比于FPGA具有低能耗、经济性高以及便捷操作等特点,因此,本次毕业设计选用美国Anadigm公司的AN231E04,其结构图如图所示: 图2-1 AN231E04结构示意图其特点包括:动态可重构;具有7个可配置的I/O单元,两个专用的输出单元格;全差分结构;低输入通过偏移斩波稳定放大器;256字节查找表(LUT)的线性化和任意信号产生;典型信号的带宽:DC-2MH;电压:-3.3V至+3.3V;模拟信号处理;RFID IF(基带滤波);模拟系统外围设备的实时软件控制;智能传感器;自适应滤波和控制;自适应DSP前端;自适应工业控制和自动化;自校准系统;补偿老化系统组件;远程系统的动态校准;超低频信号调理;定制的模拟信号处理等。3. FitzHugh-Nagumo方程及其Matlab模拟神经元作为神经网络的基本组成单位,对其的研究是研究人工神经网络的第一步。神经元的电位变化是神经网络传递信息的基础,具有十分复杂的非线性动力学[12]。3.1 FitzHugh-Nagumo方程在生物神经学领域中,我们知道神经元具有静态电位和动作电位两种,当神经元受到一定的刺激,便会发生电位的转换,并且其动作电位的变换状态跟外界的刺激有关。当我们把外界刺激模拟成电流时,随着电流的逐渐增强,神经元会呈现Hopf分岔特性,即表现出由小幅度的近似简谐的振荡逐渐变成了大幅度振荡。而且振荡的规律,例如振幅和周期,主要由电流的大小以及系统控制参数来确定的,因此提出了FitzHugh-Nagumo模型[13],简称为FHN模型,公式如下: (1) (2)其中:x代表的是膜电位,y代表的是恢复变量,z代表的是外界刺激电流,其余a、b、c表示各个参数,通过实验检测以及阅读文献,将参数设置为a=0.7,b=0.8,c=3。 FHN方程是Henderson--Hasselbalch(HH)方程,演化而来,描述了神经元放电行为的动力学特征。该方程最初是在二十世纪五六十年代由R.FitzHugh和 J.S.Nagumo分别提出的,然后又通过Koch 等人研究了FHN 神经元模型的动力学方程组;K.Moaddy 等人利用非标准差分法即NSFD研究了耦合的分数阶神经元模型的同步问题;Sato和Doi基于FHN方程模型研究了神经元在周期脉冲电刺激的响应特性,并且发现了FHN 方程在周期电脉冲序列刺激下的分岔结构[14]。 在神经元动力学中,对其分岔的研究是神经元放电的动力学机制中最重要的一部分,在理论神经科学中,研究对控制神经元的放电活动是其最有发展前景以及研究价值的内容之一,并且对其的研究在临床方面也有很重要的作用。FHN方程简洁明了,能够反映神经元放电活动的主要特征,广泛地用来研究初次神经元的放电活动,选择合适的参数,能够实现真实神经元的基本输入输出特性,显示出兴奋、振荡以及双稳态等不同动力学行为特征。因此,研究 FHN 模型的动力学行为在不论人工智能体系中还是生物神经科学中都具有十分重要意义。 对神经元的非线性动力学的研究应用对计算机领域、电子电气、生物科学等领域具有划时代的意义,极大的促进了人工智能的发展,尤其是在硬件领域,对神经元的模拟能够快速有效,经济实用地促进人工神经网络的进步,同时提升科研工作者对神经元动力学的理解。在最近的这一段时间,文献[13]利用AN231E04芯片对FHN模型进行模拟,Emil等人利用AN221E04芯片对FHN模型进行了模拟,并且他们利用不同的方法,设计不同的电路图,设置不同的参数均出现了符合神经元动力学的波形图。由此可见,利用硬件对FHN模型的模拟是真实有效的,能够方便快捷地重现神经元动力学特征,出现合理波形图。3.2 Matlab模拟FitzHugh-Nagumo方程3.2.1 FHN方程Matlab分析 根据上述FHN方程,其动力学特征随着z的变化而随之变化,通过Matlab编程获得膜电位x随着时间t变化的波形图、恢复变量y随着时间t变化的波形图以及恢复变量y随着膜电位x变化而变化的的波形图(x-y波形图又称为相图)如图: 图3-1 z=0.1时 x-t图图3-2 z=0.1时 y-t图 图3-3 z=0.1时 x-y图 当z为0.1时, 其波形图是图3-1、图3-2以及图3-3,显示当有小电压刺激时,膜电位以及恢复变量随着时间有一个小振荡,随后保持不变,表示的是有一个小螺线的动作电位。图3-4 z=0.33时 x-t图图3-5 z=0.33时 y-t图图3-6 z=0.33时 x-y图 当z为0.33时,其波形图是图3-4、图3-5以及图3-6,显示当稍大一点的小电压刺激时,膜电位以及恢复变量随着时间有一个较明显的振荡,幅度增大,表示的是有一个大螺线的动作电位。图3-7 z=0.337时 x-t图图3-8 z=0.337时 y-t图图3-9 z=0.337时 x-y图 当z为0.337时,其波形图是图3-7、图3-8以及图3-9,显示当有一个更大一点电压刺激时,其膜电位和恢复变量的振荡趋于稳定,表示的是双稳态结构。图3-10 z=0.34时 x-t图图3-11 z=0.34时 y-t图图3-12 z=0.34时 x-y图 当z为0.34时,其波形图是图3-10、图3-11以及图3-12,显示出当电压增强到一定的程度时,膜电位以及恢复变量具有周期性的稳定振荡,表示的是不稳定的振动状态,呈现出单稳态的极限周期振荡,最终形成一个极限环。由以上系列图可以得知,当z这个电流的刺激接近于零时,该FHN方程所表示的神经元动力学模型处于兴奋状态,有一个特殊的平衡点;随着z的增加,达到一定的阈值之后,该模型处于神经元动作电位的状态;当z持续增加,该模型处于一个其特殊的稳定状态,即双稳态;当z增加到一定程度时,该模型又处于小幅振动状态。这种行为模式符合神经元动力学。y作为神经元的恢复变量随着x膜电位变化,膜电位随着外界刺激电压的变化逐渐增强,并且呈现出稳定的振荡模式。3.2.2 FHN方程Matlab的代码实现 利用Matlab来进行生物神经元特性的仿真是目前常用的手段之一,由于Matlab具有解分数阶微分方程强大的数学计算功能,使用该软件进行FHN方程的模拟简单便捷。其核心函数是updatePlot以及fhn(t,x)如下: function updatePlot(app) z=app.NumericEditField.Value; x0=[0,0]; t0=0:0.01:200; [t,x]=ode45(@fhn,t0,x0); X=x(:,1); Y=x(:,2); plot(app.UIAxes2,t,X); xlim(app.UIAxes2,[0 200]); ylim(app.UIAxes2,[-2 2]); plot(app.UIAxes3,X,Y); ylim(app.UIAxes3,[-2 2]); function dx=fhn(t,x) dx(1)=3*(x(1)-x(2)+z-x(1)^3/3); dx(2)=(x(1)-0.8*x(2)+0.7)/3; dx=dx(:); 这两个函数实现了FHN方程,并且将x-t图、x-y图绘制出来,其中[t,x]=ode45(@fhn,t0,x0);这句话表示的是求解微分方程,而函数dx=fhn(t,x)主要描述了FHN方程模型。 同时,为了增强程序的可操作性,能够更直观地观察FHN方程的波形图,利用Matlab2016a最新的功能,将该程序完善,提供了可视化界面,如下图: 图3-13 可视化界面其中,先确定是手动输入数值还是旋钮输入,然后进行z值的确定,例如通过左下角的旋钮确定z的值或者手动确定z的值,然后点击绘图能够直接呈现x-t图以及x-y图,能够方便简洁的直接操作,改变z的值,来观察FHN方程所体现的神经元动力学特征,而不需要通过在程序中改变z的值来完成,整个过程主要通过函数DrawButtonPushed(app)以及函数updatePlot(app)来实现。4.电路设计 相比于以往的EDA工具,AnadigmDesigner2(简称AD2)更具有针对性,是美国Anadigm公司专门针对FPAA研发的一款EDA工具,同时,由于其具有图形化界面,能够使用户能便捷的操作,并且,该软件针对用户友好等方面考虑,能够在一定程度上自动生成C语言代码,简化了硬件电路的代码设计,只需要用户根据自己所需调整参数与电压,连接电路。而且,在AD2中,有自带的示波器以及信号刺激,能够及时的验证电路设计正确与否。4.1电路设计根据FHN方程,在电路设计中需要使用到两个AN231E04芯片,五个GainHold,即反相放大器,主要作用是将输入信号反相放大后输出,可以用作积分器或微分器,两个乘法器,两个加法器,还有一个反相求和器。 a.运算放大器,这个元器件是一个具有很高放大倍数的电路单元,在电路的设计中,其通常结合反馈电路来完成某种功能,其通常用来完成微分以及积分等功能。在本次电路设计中,其主要功能是用来进行微分,其另一个功能是用来进行反相,如下图所示:图4-1 运算放大器b.三位加法器,是一个具有三位参数的加法器,这个器件主要进行三位输入加法,其用于方程y的实现。如下图所示:图4-2 三位加法器c.二位加法器,是一个具有两位参数的加法器,这个器件主要针对两个输入进行加法,用来组成求解方程x的一个重要部分,即将输入刺激z与反相和进行运算。如下图所示:图4-3 二位加法器d.三位反相加法器,其主要作用是将输入进行反相后再相加,主要完成模拟信号的负数求和运算。在本次实验中,主要进行x-y-x3/3的运算。如下图所示:图4-4 三位反相加法器将以上所示的这些元器件连接,组成能够工作的电路,具体连接示意图如下图所示: 图4-5 FHN方程电路设计其中,FPAA1中的两个乘法器用来实现;在FPAA2中,利用一个3位运算的加法器实现了,即;在FPAA2中,利用一个2位运算的加法器以及一个3位运算的反相加法器实现了,即。并且,在FPAA2中的两个外界输入端口一个输入电流刺激,一个输入参数。4.2 参数设置使用AD2这个针对性极强以及图形化设计的EDA工具,最重要的步骤除了电路的连接之外,还需要调整各个元件的参数以及时钟,因为每个元件的参数大小以及芯片的时钟是否吻合都将会影响到每一步的结果,最终造成结果偏差重大。在AD2中,由于电源电压与理想状态有一定的差别,因此各个参数值需要根据上文中所描述的的参数成比例缩放。根据FHN方程,若(幅度),该幅度指的是其求得膜电位的震荡幅度,和外界电压刺激呈正相关;(频率),该频率指的是外界电压频率,则得到方程如下: (3) (4) 根据方程的参数设计确定了元器件初始参数,由于FPAA1中只需要进行的乘法运算,因此FPAA1中的各项元器件不需要进行参数的设置。FPAA2中的各项元器件进行主要的运算功能,因此每一个参数的设置都十分重要,而且输入刺激属于微小信号量,因此参数的10-3数字量都会产生十分重大的作用。 初始设计参数时,只是简单地根据理论值理想化地设计,即将FPAA2中的两输入加法器,简称为SumIntergrate1的输入参数确定为3和1;将三输入反相加法器,简称为SumInv的输入参数定为3、1、3;将三输入加法器,简称为SumIntergrate2的输入参数定为1/3,1/3以及0.8/3。这些参数的设定就是根据理论设置a=0.7、b=0.8、c=3以及FHN方程关系式所设定。利用AD2自带的示波器功能,设置这些初始设定的参数值得到的波形图如下图所示,其中红线代表膜电位的变化,绿线代表恢复变量的变化,黄蓝双线代表外界输入:图4-6 当z=0.1V时 呈现的初始波形图图4-7 当z=0.34V时 呈现的初始波形图图4-6表示的是刺激电压为0.1V时,膜电位和恢复变量随着时间的变化图;图4-7表示的是刺激电压为0.34V时,膜电位和恢复变量随着时间的变化图。在上述两幅图的电路参数设计中,均采用原始数据,即每一个输入系数原始方程相关。通过上图可以看出,完全没有体现出神经元的动力学特征,既没有小幅单峰振荡,也没有随着电压刺激的增大而产生变化,因此改变参数是十分必要的事情。 通过观察,发现由于在AD2中设计电路时,其振动幅度是Matlab仿真得出幅度的倍,频率不变,因此,在每个元件的参数设计中,需要根据公式(3)、(4)成比例缩放倍,得出适用于该电路的参数值。即通过公式(3)、(4)设置,带入公式,求出每个系数,将其按比例设置在元器件参数中,得到如下结果:图4-8 当z=0.1V时 修改参数后波形图图4-9当z=0.34V时修改参数后波形图图4-8显示的是刺激电压为0.1V时,其膜电位以及恢复变量随着时间变化的波形图;图4-9显示的是刺激电压为0.34V时,其膜电位以及恢复变量随着时间变化的波形图。通过对比参数修改之前的波形图,可以得到,当刺激电压为0.1V时,出现一个小振幅的振荡,因此可以得出,是一个正确的推想。但是,同时也可以得出,其小幅度的振荡持续时间不长即呈现一定规律的振荡。因此,通过观察公式,可以推断,在求解膜电位的电路中,参数设置出现问题。即两位加法器的参数以及三位反相加法器的参数设置存在问题,通过观察,可以合理判断出,在电压刺激处于小电压时呈现出高电压的行为模式,因此可以得出,参数设置偏大,应适当将参数调小,得到下图:图4-10 当z=0.1V时 三次修改参数后波形图图4-11 当z=0.34V时 三次修改参数后波形图图4-10显示的是刺激电压为0.1V时,其膜电位以及恢复变量随着时间变化的波形图;图4-11显示的是刺激电压为0.34V时,其膜电位以及恢复变量随着时间变化的波形图。通过观察上图,并将其与Matlab理论模拟图相比,其在小电压时呈现出正常的振动趋势,但是当其处于相对于大电压时,应该呈现出稳定规律的振动时,其振动规律依然符合小电压规律,只是幅度相对增大而已,由此基本可以断定,针对膜电压方程的修改趋势基本确定,但是恢复变量则呈现出滞后现象,因此需要调节恢复变量方程系数,即三位加法器的各项参数,需要将参数成比例扩大。并且在日后的验证中显示,以上推断正确。虽然基本参数趋势确定,但是由于本次实验属于微小信号量刺激,因此参数的设计至关重要,并且需要足够的耐心进行微调。同时,在模拟神经元的实验中,芯片的时钟设计十分重要,直接决定了各个电路是否能够进行正常的运算。在时钟设计中,考虑到神经元的工作特性以及电路计算的先后顺序,我把两个FPAA芯片设计成不同的时钟,即将FPAA1设计为16000kHZ,并且将FPAA2设计为4000kHZ,呈现出正确的波形图如下:图4-12 波形图1图4-13 波形图2图4-14 波形图3图4-15 波形图4由于AD2软件自身限制,我们将电流刺激设置的为具有正弦波形的交流电,将交流电赫兹保持为1HZ,尽可能模拟符合直流电要求,并始终将参数a控制在0.7mA。在波形图1中可见,z=0.1,其x输出波形以及y输出波形符合Matlab仿真结果;当z=0.3时,x、y波形图符合Matlab中z=0.33仿真模拟结果;当z=0.32时,x、y波形图符合Matlab中z=0.337仿真模拟结果;当 z=0.35时,x、y波形图符合Matlab中z=0.337仿真模拟结果,由此可以推断电路连接基本合理。5硬件实现5.1实物电路连接通过Matlab模拟以及电路设计之后,将电路应用起来才是整个实验的最终目的。在本次实验中涉及到三个实验设备,一个是数字源表,一个是Anadigm开发板,还有一个是示波器。 将电路模拟的代码烧录到Anadigm开发板上面,并且连接好电路,并将其连接到示波器中,看其工作状态是否合理,整体连接图如下:图5-1 整体设计连接图 其中,图中最左边的仪器是Keithley2601B系列的多功能数字源表,可以用作万用表也可以充当学生电源,给开发板提供任何电压以及电流的设置,其中最高电压可以提供到40V,电流最大值为3A?,具有4象限源,且其单通道型号具有40W功率输出。在本次实验中,由于整个实验是微小信号量的刺激,因此,使用的电压范围在100mV到500mV之间;上图中间是Anadigm开发版,有一个PIC32的微型控制器,4个相互连接FPAA芯片,在本次实验中,使用到两个FPAA芯片,只需将J8、J9跳线帽去掉以及J1模块中ACT3以及ACT4跳线帽去掉即可实现只用两个FPAA,其具体实现图如图5-1-2;实验设备中最重要的一个设备是示波器,如图5-1-1,实验过程中使用的是Tektronix MDO3034型号的示波器,具有频谱分析、任意函数发生器、逻辑分析、协议分析和数字电压测量以及计数等功能,在本次实验中主要使用其频谱分析的功能。 下图显示的是电路设计的实物连接图:图5-2 电路设计实物图 根据芯片管脚特征,对应设计好的电路图将对应管脚连接,并且关闭所有芯片默认的连接方式,其实物连接图如上图所示。其具体连接示意图如图5-3以及图5-4所示: 图5-3 芯片与FPAA1对应示意图图5-4 芯片与FPAA2对应示意图 其中,根据图5-3所示,FPAA1管脚号为15和16对应的是芯片中的IO5P以及IO5N引脚;其管脚号为19和20对应的是芯片中的引脚为IO7P以及IO7N;根据图5-4所示,FPAA2管脚号为03和04,对应的是芯片中的O1P和O1N引脚;其管脚号为08和09对应的芯片中的引脚为I2N以及I2P;其管脚号为11和12对应的芯片中的引脚为I3N以及I3P;其管脚号为23和24对应的芯片中的引脚为I4N以及I4P。根据电路连接图,FPAA2中03号和04号管脚对应O1P以及O1N引脚,即输出的高低电平引脚,将其与FPAA1中15号和16号管脚相连,即与IO5P与IO5N相连,输出x值;FPAA2中08号和09号管脚对应的是I2N和I2P,表示输入的高低电平管脚,从此处输入z刺激信号,由于电源提供的设备只有一个输出口,将该输入与a参数输入并联,即FPAA2中24号以及23号管脚,对应I4P以及I4N;FPAA1中19号和20号管脚对应开发板中IO7P和IO7N,通过此引脚将FPAA1中进行的乘法运算结果x3输出到FPAA2中的11号和12号管脚,即对应I3N以及I3P引脚,继续进行运算,完成FHN方程组的电路实现。5.2实物电路验证根据电路设计图将实物连接好,并且接上刺激信号,通过示波器显示对比Matlab模拟图形。但是由于Keithley数字源表只能提供一个电源,并不能完全实现两个不同的电刺激信号, 因此将上文所提出的a和z刺激信号设置成为一样,呈现出不同的动力学特征,同时由于本实验模拟的是微小信号量刺激,导线电阻、电阻以及电容所带的误差,以及接通电源所产生的电感都将对最终的结果造成一定的影响。以下将通过一组不同的波形图以及其特征对比验证实验,以下图形中,细黄线波形代表的x随t变化图,细蓝线波形代表的是y随t变化图:图5-5 当a=z=0.1时 x-y波形图图5-6 当a=z=0.1时 x-t、y-t波形图图5-7 当a=z=0.1时 Matlab模拟x-y波形图图5-8 当a=z=0.3时 x-y波形图图5-9 当a=z=0.3时 x-t、y-t波形图图5-10 当a=z=0.3时 Matlab模拟x-y波形图图5-11 当a=z=0.32时 x-y波形图图5-12 当a=z=0.32时 x-t、y-t波形图图5-13 当a=z=0.32时 Matlab模拟x-y波形图图5-14 当a=z=0.35时 x-y波形图图5-15 当a=z=0.35时 x-t、y-t波形图图5-16 当a=z=0.35时 Matlab模拟x-y波形图图5-17 当a=z=0.5时 x-y波形图图5-18 当a=z=0.5时 x-t、y-t波形图图5-19 当a=z=0.5时 Matlab模拟x-y波形图 以上一系列图中,硬件仿真出的x-y波形图中每格代表2V。通过示波器显示,我们可以看出,从0.1V的电刺激信号到0.5V的电刺激信号x-y波形图的细微差别,随着刺激信号的逐渐增强,x-y图整体上移,代表的是膜电位以及恢复变量的逐渐增强。同时,我们可以得出一个结论,随着刺激的增强,膜电位和恢复变量的不仅逐渐增强,且逐渐形成一个有规律的周期性振荡。由于设备的限制,没有充足的刺激信号,因此将两个刺激电源设置成一个不能很好的体现神经元动力学特征,但通过对比Matlab模拟波形图,可以得到这个电路真实可用的结论,如下图: 图5-20 不同电压下相图对比 其中,蓝色代表的是0.1V刺激时,x-y波形图,深橘色代表的是0.3V刺激时,x-y波形图,浅橘色代表的是0.32V刺激时,x-y波形图,紫色代表的是0.35V刺激时,x-y波形图,绿色代表的是0.5V刺激时,x-y波形图。从上图中我们可以得知,随着刺激的增强,从起点0开始,膜电位以及恢复变量逐渐增强,图像中表示为波形图向上平移,代表膜电位以及恢复变量的逐渐增强。因此,可以得出结论,本次毕业设计的神经元FHN方程电路设计真实有效。 本文的结果为用硬件实现大规模神经元互联的网络奠定了基础。6创新性以及后续发展计划本次实验的创新性主要体现在芯片的选取中,利用FPAA的AN231E04型芯片进行神经元的实现,并且使用该芯片进行神经元的模拟在国内尚未见报。后续工作将利用FPAA芯片实现两个神经元之间的耦合,并且直至实现至多个神经元之间的互连,同时考虑到成本问题,尽可能设计电路突破现在大部分利用两个FPAA芯片实现一个神经元,利用一个芯片集成一个神经元的电路设计。整个实验的发展最终在最理想的情况下,集成成为一块电路,并可将该电路刻在一块硅片上实现完成具有神经元非动力学特征并且具有神经网络功能的芯片,真正实现神经元特征硬件化。7总结随着科学技术的发展,人们对计算机的要求越来越高,继而引领了人工智能的热潮。由于软件模拟仿真在性能上面的限制,人们逐渐将目光转移到硬件领域。随着在线模拟可编程芯片的发展,利用该芯片进行神经元非线性动力学的研究成为了一个新的研究热点。在实验过程中,利用一种新型芯片FPAA进行硬件的模拟,并且通过Matlab实现了了神经元动力学FHN方程,软件模拟了神经元动力学,然后通过Anadigm Designer2这个针对FPAA设计的EDA工具进行了模拟电路的设计与测试,最后通过FPAA芯片进行了最后的硬件实践。由于第一次利用硬件进行神经元的模拟,经验不足,导致仿真效果没有达到预计效果明显,但是我也在这次毕业设计中学习到了很多。最重要的是,这次毕业设计锻炼了我的自学能力与查阅文献的能力,提高了自己的综合素质和动手能力,并且让我了解了科技发展的前沿。总之,在这个工智能、机器学习高速发展的时代,我们应该紧随时代的脚步,充实自己,为社会贡献自己的力量。致谢参考文献[1]王蓓. 神经元电路设计实现的研究[D].贵州大学,2008.[2]闫明. 基于FPGA的神经网络硬件实现[D].中国海洋大学,2008. [3]刘培龙. 基于FPGA的神经网络硬件实现的研究与设计[D].电子科技大学,2012.[4]杨康乐. 神经元网络FPGA仿真系统构建的研究[D].天津大学,2012.[5]刘培龙,黄乐天,林凌鹏. 基于FPGA的神经元相关性分析的设计与实现[J]. 微电子学与计算机,2012,05:119-123.2005(02):16-17.[6] Emil Dimitrov Manolov, Mihail Hristov Tzanov and Filip Todorov Koparanov. FPAA Implementation and Investigation of Analog Neurons[J]. ANNUAL JOURNAL OF ELECTRONICS,2009,ISSN 1313-1842[7] S. Prange, “Emulation of biology-oriented neural networks,” in Proc.Int. Conf. On Parallel Processing in Neural Systems and Computers(ICNC), M. Eckmiller, Ed., Dusseldorf, 1985.R. Nicole, “Title of paper with only first word capitalized,” J. Name Stand. Abbrev., inpress.[8]夏飞. 生物序列分析算法硬件加速器关键技术研究[D].国防科学技术大学,2011.[9]黄小洁. 基于MATLAB的数学实验系统的实现及应用[D].南昌大学,2012.[10]高宁. 基于BP神经网络的农作物虫情预测预报及其MATLAB实现[D].安徽农业大学,2003.[11]任晋华. 低功耗开关电流型FPAA及应用设计[D].南京航空航天大学,2013.[12]刘少珍. 非线性神经元系统的动力学研究[D].南京航空航天大学,2013.[13]Zhao J, Kim Y B. Circuit implementation of FitzHugh-Nagumo neuron model using Field Programmable Analog Arrays[C]. Midwest Symposium on Circuits and Systems. 2007:772-775.[14]周思思. 神经元的混沌同步分析与控制[D].天津大学,2008.附录大学学院信息科技学院计算机科学与技术姓名论文题目一、对待毕业实习的态度及实习期间遵守纪律情况优良(15—11分)一般(10—6分)较差(5—0)二、观察、收集、整理、查阅资料及运用数据的水平优良(30—21分)一般(20—11分)较差(10—0分)三、学生的独立工作能力和动手能力优良(20—16分)一般(15—11分)较差(10—0分)四、毕业论文写作的规范化程度优良(15—11分)一般(10—6分)较差(5—0分)五、毕业论文(设计)总体评价优良(20—16分)一般(15—6分)较差(5—0分)审查意见、成绩及能否提交答辩:教务处制表大学学院信息科技学院计算机科学与技术姓名论文题目一、论文选题的价值与合理性优秀(15—11分)一般(10—6分)较差(5—0)二、论文的难度、工作量大小和创新性优秀(30—21分)一般(20—11分)较差(10—0分)三、数据资料分析、归纳、概括及运算的能力优秀(20—16分)一般(15—11分)较差(10—0分)四、文字表达水平、文章的逻辑性优秀(15—11分)一般(10—6分)较差(5—0分)五、论文写作的规范化程度优秀(20—16分)一般(15—6分)较差(5—0分)评阅意见、成绩及能否提交答辩:教务处制表大学本科生毕业论文(设计)答辩及综合评分表(由答辩小组填写)学院信息科技学院计算机科学与技术姓名论文题目一、内容的科学性、应用性和创新性优秀(30—21分)一般(20—11分)较差(10—0)二、论文写作水平及知识面掌握程度优秀(30—21分)一般(20—11分)较差(10—0分)三、语言表达能力、逻辑思维能力、回答问题的正确性优秀(40—31分)一般(30—11分)较差(10—0分)论文答辩意见及成绩:答辩小组负责人(签名): 年 月 日本科生毕业论文(设计)综合评定成绩(由答辩小组填写)毕业论文(设计)评阅成绩30%毕业论文(设计)答辩成绩40%综合评定成绩100%注:综合评定成绩等级:优秀(90-100),良好(80-89),中等(70-79),及格(60-69),不及格(60分以下)。答辩小组负责人(签名): 年 月 日
目录
摘要 3
关键字 3
Abstract 3
Key words 3
1.选题背景 4
1.1选题目的及意义 4
1.2发展研究状况 4
2.开发平台及应用技术 4
2.1 Matlab简介 5
2.2 Anadigm Designer2简介 5
2.3 FPAA简介 5
3. FitzHughNagumo方程及其Matlab模拟 6
3.1 FitzHughNagumo方程 6
3.2 Matlab模拟FitzHughNagumo方程 7
3.2.1 FHN方程Matlab分析 7
3.2.2 FHN方程Matlab的代码实现 14
4.电路设计 15
4.1电路设计 15
4.2 参数设置 17
5硬件实现 22
5.1实物电路连接 22
5.2实物电路验证 25
6创新性以及后续发展计划 31
7总结 32
致谢 32
参考文献 32
利用在线模拟可编程芯片实现神经元动力学
计算机科学与技术学生 丁丽璇
引言
*好棒文|www.hbsrm.com +Q: %3^5`1^9`1^6^0`7^2#
oftware. The FPAA chip is not only cost-effective, low power consumption and online programming, but also has the characteristics of reconfiguration. So it can provide a more efficient and economic way to achieve artificial intelligence. This study uses the FPAA chips to implement the hardware simulation of the dynamic behavior of neurons based on FitzHugh-Nagumo equation. Through the comparison with the results of MATLAB simulation, it is proved that the hardware simulation has achieved good results. 随着计算机技术的发展,人们对计算机计算性能的要求越来越高,人工智能体现出其重要性。随着人工智能的快速发展,人工神经网络的研究也逐渐进入大众视野[1]。目前,人工智能已经应用在模式识别、语音识别、医疗体系以及信号处理等多方面领域中[2]。在目前的人工智能领域之中,大部分神经网络的实现都是通过软件的方法[3]。但是神经系统具有高维、强耦合以及复杂非线性动力学特征,许多软件模拟并不能体现其特性[4]。随着硬件技术的不断发展,利用硬件技术对神经元的实现引起了众多科研工作者的注意。硬件的仿真实现相比于软件的仿真模拟能够实现神经系统的实时运算,并且极大程度的提高了其计算速度及其并行程度。同时,动态可重构技术极大地促进了可重构技术,在一定程度上简化了硬件操作的复杂性,并且使得硬件资源得到了更充分的利用。因此,利用具有可重构、快速高效、经济性强等特点的在线模拟可编程芯片对神经元乃至整个神经系统的仿真模拟引领了人工智能领域的一股科研热潮,更大程度上促进了人工智能乃至生物神经领域的发展。1.选题背景1.1选题目的及意义人工智能是计算机科学的一个分支,起源于二十世纪四十年代初期。其机制就是通过模拟生物神经系统的工作方式以及信息处理机制来实现对计算机计算速度的提升以及提高非线性系统处理能力[3]。近些年来,随着生物神经的研究逐渐深入,科学家们能够通过神经元以及神经网络的生物特性研究生物神经之间的信息传导,从而能够将其应用至各个领域之中,促进人工智能发展。但随着研究的深入,一些仿真模拟软件存在性能运算速度上的问题,限制神经元乃至神经网络非线性动力学的研究,因此,硬件电路模拟神经元是必然的发展趋势[4]。在目前的发展阶段主要利用多电极阵列进行脑神经系统信息的采集,但是随着数据量的不断扩大,其计算能力受到了极大的挑战,利用具有相关性分析的硬件能够提高其计算能力,因此现场可编程门阵列即FPGA在神经网络领域发挥出其重要的作用[5]。同时在数字可编程器件发展的重要阶段,可编程模拟芯片也得到了快速的发展,并且相比于FPGA,这些芯片具有芯片内部互连且允许高层描述等功能[6]。因此,利用FPAA芯片实现对神经元的设计模拟,不仅对生物神经系统等领域有促进作用,同时对人工智能也有十分重大的意义,促进了人工智能硬件化的发展。1.2发展研究状况20世纪是电子硬件发展的主要时期,在60年代神经网络的硬件实现开始兴起,其中最著名的便是感知机与ADALINE神经网络模型的实现[2]。美国物理学家Hopfied提出了人工神经网络,促进了人工智能这一领域的发展[1];刘易斯利用一些离散晶体管和相关组件研究了基于Hodgkin-Huxley方程的电子膜模型;Ronge模拟了神经系统模型;W.J.Karplus等人最早研究电耳蜗模型;罗伊实现一种类似于刘易斯的电子膜模型,他主要使用场效应晶体管作为可调导体;哈蒙构造了一个简单的神经元模型,利用产生一个动作电位的刺激脉冲响应相似的方式实现神经元[7]。从20世纪80年代开始兴起的人工神经网络的热潮一直持续到今天,并且人工智能的兴起促进了人们生活水平的极大提高,同时更促进了科研工作的发展。 现场可编程门阵列即FPGA技术最早主要应用于雷达、通讯以及图像识别等领域,并且FPGA在生命科学中的应用也非常广泛,例如 Oliver 和Brown等人利用FPGA进行 DNA 和蛋白质序列的计算和分析[8]。并且随着数字电路以及人工智能技术的发展,人工神经网络的硬件设计也经常用到FPGA 技术。 FPGA对生物神经元及神经元网络的建模研究开始于本世纪初,它在神经系统建模等方面的工作有很重大的影响,并且现场可编程门阵列技术已经开始广泛的投入商用。随着硬件技术的发展,一种模拟可编程器件诞生,尤其以美国Anadigm公司开发的FPAA为代表,但在目前的发展来看,该芯片的使用量较少,还未大规模投入商用。2.开发平台及应用技术本次实验利用Matlab进行软件的仿真模拟,并且在Anadigm Designer2进行硬件电路的仿真,并将电路代码烧录至FPAA芯片中进行硬件仿真。Matlab在数值计算应用方面首屈一指,能够对神经元非线性方程FitzHugh-Nagumo方程有较好的体现形式,同时,Anadigm Designer2则是一款针对FPAA芯片而设计的EDA工具,具有图形化界面以及能够将复杂的电路设计变成简单方便的切实有用的电路模拟[9]。FPAA作为现场可编程芯片,具有可重构以及现场可编程的特点,大大简化了模拟电路的设计。2.1 Matlab简介Matlab的名字是由Matrix与Laboratory组成,其意义指的是“矩阵工厂”,是一个数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境[9]。Matlab应用领域十分宽泛,其中包括工程计算、控制设计、图像处理等方面。近些年,随着神经网络的快速发展,人们逐渐在Matlab中开发出神经网络工具包。由于Matlab具有程序可读性强、程序简单等优点,科研工作者利用Matlab在数值计算方面的强大功能,极大地简化了神经网络模型的模拟与编程,提高了开发效率[10]。2.2 Anadigm Designer2简介Anadigm Designer2是由美国Anadigm公司针对其开发的FPAA芯片专门研发的一款EDA工具,该软件提供了FPAA不同型号的模拟芯片,除此之外,该EDA工具还提供了FPAA芯片内部模拟元器件,并为用户提供了图形化界面,用户友好度极高。同时,该EDA工具具有自身生成C代码能力,能够在一定程度上面生成C代码用以控制硬件。并且,在Anadigm Designer2这个EDA工具中具有不同的虚拟信号波以及模拟示波器,能够真正模拟硬件工作状态。Anadigm Designer2能够极大地简化电路工程师的工作,使其从繁复的电路设计中解放出来[11]。2.3 FPAA简介FPAA即为现场可编程模拟阵列,是一种模拟可编程器件。它的出现为模拟电路在数字可编程器件发展的重要时期重新注入了新的生命。FPAA不仅具有模拟电路的简洁、经济性高、速度快等特点,同时具有现场可编程能力,并且能够为用户提供简单便捷的电路设计方法。FPAA的核心是CAB即可重构模拟模块以及PIN即可编程互连网络,同时FPAA还包括可编程电阻阵列即PRA、可编程电容阵列即PCA、配置数据存储器以及输入输出模块等部分。其中CAB主要负责其核心算法功能,包括加减法、乘除法以及积分、微分等运算[11]。FPAA相比于FPGA具有低能耗、经济性高以及便捷操作等特点,因此,本次毕业设计选用美国Anadigm公司的AN231E04,其结构图如图所示: 图2-1 AN231E04结构示意图其特点包括:动态可重构;具有7个可配置的I/O单元,两个专用的输出单元格;全差分结构;低输入通过偏移斩波稳定放大器;256字节查找表(LUT)的线性化和任意信号产生;典型信号的带宽:DC-2MH;电压:-3.3V至+3.3V;模拟信号处理;RFID IF(基带滤波);模拟系统外围设备的实时软件控制;智能传感器;自适应滤波和控制;自适应DSP前端;自适应工业控制和自动化;自校准系统;补偿老化系统组件;远程系统的动态校准;超低频信号调理;定制的模拟信号处理等。3. FitzHugh-Nagumo方程及其Matlab模拟神经元作为神经网络的基本组成单位,对其的研究是研究人工神经网络的第一步。神经元的电位变化是神经网络传递信息的基础,具有十分复杂的非线性动力学[12]。3.1 FitzHugh-Nagumo方程在生物神经学领域中,我们知道神经元具有静态电位和动作电位两种,当神经元受到一定的刺激,便会发生电位的转换,并且其动作电位的变换状态跟外界的刺激有关。当我们把外界刺激模拟成电流时,随着电流的逐渐增强,神经元会呈现Hopf分岔特性,即表现出由小幅度的近似简谐的振荡逐渐变成了大幅度振荡。而且振荡的规律,例如振幅和周期,主要由电流的大小以及系统控制参数来确定的,因此提出了FitzHugh-Nagumo模型[13],简称为FHN模型,公式如下: (1) (2)其中:x代表的是膜电位,y代表的是恢复变量,z代表的是外界刺激电流,其余a、b、c表示各个参数,通过实验检测以及阅读文献,将参数设置为a=0.7,b=0.8,c=3。 FHN方程是Henderson--Hasselbalch(HH)方程,演化而来,描述了神经元放电行为的动力学特征。该方程最初是在二十世纪五六十年代由R.FitzHugh和 J.S.Nagumo分别提出的,然后又通过Koch 等人研究了FHN 神经元模型的动力学方程组;K.Moaddy 等人利用非标准差分法即NSFD研究了耦合的分数阶神经元模型的同步问题;Sato和Doi基于FHN方程模型研究了神经元在周期脉冲电刺激的响应特性,并且发现了FHN 方程在周期电脉冲序列刺激下的分岔结构[14]。 在神经元动力学中,对其分岔的研究是神经元放电的动力学机制中最重要的一部分,在理论神经科学中,研究对控制神经元的放电活动是其最有发展前景以及研究价值的内容之一,并且对其的研究在临床方面也有很重要的作用。FHN方程简洁明了,能够反映神经元放电活动的主要特征,广泛地用来研究初次神经元的放电活动,选择合适的参数,能够实现真实神经元的基本输入输出特性,显示出兴奋、振荡以及双稳态等不同动力学行为特征。因此,研究 FHN 模型的动力学行为在不论人工智能体系中还是生物神经科学中都具有十分重要意义。 对神经元的非线性动力学的研究应用对计算机领域、电子电气、生物科学等领域具有划时代的意义,极大的促进了人工智能的发展,尤其是在硬件领域,对神经元的模拟能够快速有效,经济实用地促进人工神经网络的进步,同时提升科研工作者对神经元动力学的理解。在最近的这一段时间,文献[13]利用AN231E04芯片对FHN模型进行模拟,Emil等人利用AN221E04芯片对FHN模型进行了模拟,并且他们利用不同的方法,设计不同的电路图,设置不同的参数均出现了符合神经元动力学的波形图。由此可见,利用硬件对FHN模型的模拟是真实有效的,能够方便快捷地重现神经元动力学特征,出现合理波形图。3.2 Matlab模拟FitzHugh-Nagumo方程3.2.1 FHN方程Matlab分析 根据上述FHN方程,其动力学特征随着z的变化而随之变化,通过Matlab编程获得膜电位x随着时间t变化的波形图、恢复变量y随着时间t变化的波形图以及恢复变量y随着膜电位x变化而变化的的波形图(x-y波形图又称为相图)如图: 图3-1 z=0.1时 x-t图图3-2 z=0.1时 y-t图 图3-3 z=0.1时 x-y图 当z为0.1时, 其波形图是图3-1、图3-2以及图3-3,显示当有小电压刺激时,膜电位以及恢复变量随着时间有一个小振荡,随后保持不变,表示的是有一个小螺线的动作电位。图3-4 z=0.33时 x-t图图3-5 z=0.33时 y-t图图3-6 z=0.33时 x-y图 当z为0.33时,其波形图是图3-4、图3-5以及图3-6,显示当稍大一点的小电压刺激时,膜电位以及恢复变量随着时间有一个较明显的振荡,幅度增大,表示的是有一个大螺线的动作电位。图3-7 z=0.337时 x-t图图3-8 z=0.337时 y-t图图3-9 z=0.337时 x-y图 当z为0.337时,其波形图是图3-7、图3-8以及图3-9,显示当有一个更大一点电压刺激时,其膜电位和恢复变量的振荡趋于稳定,表示的是双稳态结构。图3-10 z=0.34时 x-t图图3-11 z=0.34时 y-t图图3-12 z=0.34时 x-y图 当z为0.34时,其波形图是图3-10、图3-11以及图3-12,显示出当电压增强到一定的程度时,膜电位以及恢复变量具有周期性的稳定振荡,表示的是不稳定的振动状态,呈现出单稳态的极限周期振荡,最终形成一个极限环。由以上系列图可以得知,当z这个电流的刺激接近于零时,该FHN方程所表示的神经元动力学模型处于兴奋状态,有一个特殊的平衡点;随着z的增加,达到一定的阈值之后,该模型处于神经元动作电位的状态;当z持续增加,该模型处于一个其特殊的稳定状态,即双稳态;当z增加到一定程度时,该模型又处于小幅振动状态。这种行为模式符合神经元动力学。y作为神经元的恢复变量随着x膜电位变化,膜电位随着外界刺激电压的变化逐渐增强,并且呈现出稳定的振荡模式。3.2.2 FHN方程Matlab的代码实现 利用Matlab来进行生物神经元特性的仿真是目前常用的手段之一,由于Matlab具有解分数阶微分方程强大的数学计算功能,使用该软件进行FHN方程的模拟简单便捷。其核心函数是updatePlot以及fhn(t,x)如下: function updatePlot(app) z=app.NumericEditField.Value; x0=[0,0]; t0=0:0.01:200; [t,x]=ode45(@fhn,t0,x0); X=x(:,1); Y=x(:,2); plot(app.UIAxes2,t,X); xlim(app.UIAxes2,[0 200]); ylim(app.UIAxes2,[-2 2]); plot(app.UIAxes3,X,Y); ylim(app.UIAxes3,[-2 2]); function dx=fhn(t,x) dx(1)=3*(x(1)-x(2)+z-x(1)^3/3); dx(2)=(x(1)-0.8*x(2)+0.7)/3; dx=dx(:); 这两个函数实现了FHN方程,并且将x-t图、x-y图绘制出来,其中[t,x]=ode45(@fhn,t0,x0);这句话表示的是求解微分方程,而函数dx=fhn(t,x)主要描述了FHN方程模型。 同时,为了增强程序的可操作性,能够更直观地观察FHN方程的波形图,利用Matlab2016a最新的功能,将该程序完善,提供了可视化界面,如下图: 图3-13 可视化界面其中,先确定是手动输入数值还是旋钮输入,然后进行z值的确定,例如通过左下角的旋钮确定z的值或者手动确定z的值,然后点击绘图能够直接呈现x-t图以及x-y图,能够方便简洁的直接操作,改变z的值,来观察FHN方程所体现的神经元动力学特征,而不需要通过在程序中改变z的值来完成,整个过程主要通过函数DrawButtonPushed(app)以及函数updatePlot(app)来实现。4.电路设计 相比于以往的EDA工具,AnadigmDesigner2(简称AD2)更具有针对性,是美国Anadigm公司专门针对FPAA研发的一款EDA工具,同时,由于其具有图形化界面,能够使用户能便捷的操作,并且,该软件针对用户友好等方面考虑,能够在一定程度上自动生成C语言代码,简化了硬件电路的代码设计,只需要用户根据自己所需调整参数与电压,连接电路。而且,在AD2中,有自带的示波器以及信号刺激,能够及时的验证电路设计正确与否。4.1电路设计根据FHN方程,在电路设计中需要使用到两个AN231E04芯片,五个GainHold,即反相放大器,主要作用是将输入信号反相放大后输出,可以用作积分器或微分器,两个乘法器,两个加法器,还有一个反相求和器。 a.运算放大器,这个元器件是一个具有很高放大倍数的电路单元,在电路的设计中,其通常结合反馈电路来完成某种功能,其通常用来完成微分以及积分等功能。在本次电路设计中,其主要功能是用来进行微分,其另一个功能是用来进行反相,如下图所示:图4-1 运算放大器b.三位加法器,是一个具有三位参数的加法器,这个器件主要进行三位输入加法,其用于方程y的实现。如下图所示:图4-2 三位加法器c.二位加法器,是一个具有两位参数的加法器,这个器件主要针对两个输入进行加法,用来组成求解方程x的一个重要部分,即将输入刺激z与反相和进行运算。如下图所示:图4-3 二位加法器d.三位反相加法器,其主要作用是将输入进行反相后再相加,主要完成模拟信号的负数求和运算。在本次实验中,主要进行x-y-x3/3的运算。如下图所示:图4-4 三位反相加法器将以上所示的这些元器件连接,组成能够工作的电路,具体连接示意图如下图所示: 图4-5 FHN方程电路设计其中,FPAA1中的两个乘法器用来实现;在FPAA2中,利用一个3位运算的加法器实现了,即;在FPAA2中,利用一个2位运算的加法器以及一个3位运算的反相加法器实现了,即。并且,在FPAA2中的两个外界输入端口一个输入电流刺激,一个输入参数。4.2 参数设置使用AD2这个针对性极强以及图形化设计的EDA工具,最重要的步骤除了电路的连接之外,还需要调整各个元件的参数以及时钟,因为每个元件的参数大小以及芯片的时钟是否吻合都将会影响到每一步的结果,最终造成结果偏差重大。在AD2中,由于电源电压与理想状态有一定的差别,因此各个参数值需要根据上文中所描述的的参数成比例缩放。根据FHN方程,若(幅度),该幅度指的是其求得膜电位的震荡幅度,和外界电压刺激呈正相关;(频率),该频率指的是外界电压频率,则得到方程如下: (3) (4) 根据方程的参数设计确定了元器件初始参数,由于FPAA1中只需要进行的乘法运算,因此FPAA1中的各项元器件不需要进行参数的设置。FPAA2中的各项元器件进行主要的运算功能,因此每一个参数的设置都十分重要,而且输入刺激属于微小信号量,因此参数的10-3数字量都会产生十分重大的作用。 初始设计参数时,只是简单地根据理论值理想化地设计,即将FPAA2中的两输入加法器,简称为SumIntergrate1的输入参数确定为3和1;将三输入反相加法器,简称为SumInv的输入参数定为3、1、3;将三输入加法器,简称为SumIntergrate2的输入参数定为1/3,1/3以及0.8/3。这些参数的设定就是根据理论设置a=0.7、b=0.8、c=3以及FHN方程关系式所设定。利用AD2自带的示波器功能,设置这些初始设定的参数值得到的波形图如下图所示,其中红线代表膜电位的变化,绿线代表恢复变量的变化,黄蓝双线代表外界输入:图4-6 当z=0.1V时 呈现的初始波形图图4-7 当z=0.34V时 呈现的初始波形图图4-6表示的是刺激电压为0.1V时,膜电位和恢复变量随着时间的变化图;图4-7表示的是刺激电压为0.34V时,膜电位和恢复变量随着时间的变化图。在上述两幅图的电路参数设计中,均采用原始数据,即每一个输入系数原始方程相关。通过上图可以看出,完全没有体现出神经元的动力学特征,既没有小幅单峰振荡,也没有随着电压刺激的增大而产生变化,因此改变参数是十分必要的事情。 通过观察,发现由于在AD2中设计电路时,其振动幅度是Matlab仿真得出幅度的倍,频率不变,因此,在每个元件的参数设计中,需要根据公式(3)、(4)成比例缩放倍,得出适用于该电路的参数值。即通过公式(3)、(4)设置,带入公式,求出每个系数,将其按比例设置在元器件参数中,得到如下结果:图4-8 当z=0.1V时 修改参数后波形图图4-9当z=0.34V时修改参数后波形图图4-8显示的是刺激电压为0.1V时,其膜电位以及恢复变量随着时间变化的波形图;图4-9显示的是刺激电压为0.34V时,其膜电位以及恢复变量随着时间变化的波形图。通过对比参数修改之前的波形图,可以得到,当刺激电压为0.1V时,出现一个小振幅的振荡,因此可以得出,是一个正确的推想。但是,同时也可以得出,其小幅度的振荡持续时间不长即呈现一定规律的振荡。因此,通过观察公式,可以推断,在求解膜电位的电路中,参数设置出现问题。即两位加法器的参数以及三位反相加法器的参数设置存在问题,通过观察,可以合理判断出,在电压刺激处于小电压时呈现出高电压的行为模式,因此可以得出,参数设置偏大,应适当将参数调小,得到下图:图4-10 当z=0.1V时 三次修改参数后波形图图4-11 当z=0.34V时 三次修改参数后波形图图4-10显示的是刺激电压为0.1V时,其膜电位以及恢复变量随着时间变化的波形图;图4-11显示的是刺激电压为0.34V时,其膜电位以及恢复变量随着时间变化的波形图。通过观察上图,并将其与Matlab理论模拟图相比,其在小电压时呈现出正常的振动趋势,但是当其处于相对于大电压时,应该呈现出稳定规律的振动时,其振动规律依然符合小电压规律,只是幅度相对增大而已,由此基本可以断定,针对膜电压方程的修改趋势基本确定,但是恢复变量则呈现出滞后现象,因此需要调节恢复变量方程系数,即三位加法器的各项参数,需要将参数成比例扩大。并且在日后的验证中显示,以上推断正确。虽然基本参数趋势确定,但是由于本次实验属于微小信号量刺激,因此参数的设计至关重要,并且需要足够的耐心进行微调。同时,在模拟神经元的实验中,芯片的时钟设计十分重要,直接决定了各个电路是否能够进行正常的运算。在时钟设计中,考虑到神经元的工作特性以及电路计算的先后顺序,我把两个FPAA芯片设计成不同的时钟,即将FPAA1设计为16000kHZ,并且将FPAA2设计为4000kHZ,呈现出正确的波形图如下:图4-12 波形图1图4-13 波形图2图4-14 波形图3图4-15 波形图4由于AD2软件自身限制,我们将电流刺激设置的为具有正弦波形的交流电,将交流电赫兹保持为1HZ,尽可能模拟符合直流电要求,并始终将参数a控制在0.7mA。在波形图1中可见,z=0.1,其x输出波形以及y输出波形符合Matlab仿真结果;当z=0.3时,x、y波形图符合Matlab中z=0.33仿真模拟结果;当z=0.32时,x、y波形图符合Matlab中z=0.337仿真模拟结果;当 z=0.35时,x、y波形图符合Matlab中z=0.337仿真模拟结果,由此可以推断电路连接基本合理。5硬件实现5.1实物电路连接通过Matlab模拟以及电路设计之后,将电路应用起来才是整个实验的最终目的。在本次实验中涉及到三个实验设备,一个是数字源表,一个是Anadigm开发板,还有一个是示波器。 将电路模拟的代码烧录到Anadigm开发板上面,并且连接好电路,并将其连接到示波器中,看其工作状态是否合理,整体连接图如下:图5-1 整体设计连接图 其中,图中最左边的仪器是Keithley2601B系列的多功能数字源表,可以用作万用表也可以充当学生电源,给开发板提供任何电压以及电流的设置,其中最高电压可以提供到40V,电流最大值为3A?,具有4象限源,且其单通道型号具有40W功率输出。在本次实验中,由于整个实验是微小信号量的刺激,因此,使用的电压范围在100mV到500mV之间;上图中间是Anadigm开发版,有一个PIC32的微型控制器,4个相互连接FPAA芯片,在本次实验中,使用到两个FPAA芯片,只需将J8、J9跳线帽去掉以及J1模块中ACT3以及ACT4跳线帽去掉即可实现只用两个FPAA,其具体实现图如图5-1-2;实验设备中最重要的一个设备是示波器,如图5-1-1,实验过程中使用的是Tektronix MDO3034型号的示波器,具有频谱分析、任意函数发生器、逻辑分析、协议分析和数字电压测量以及计数等功能,在本次实验中主要使用其频谱分析的功能。 下图显示的是电路设计的实物连接图:图5-2 电路设计实物图 根据芯片管脚特征,对应设计好的电路图将对应管脚连接,并且关闭所有芯片默认的连接方式,其实物连接图如上图所示。其具体连接示意图如图5-3以及图5-4所示: 图5-3 芯片与FPAA1对应示意图图5-4 芯片与FPAA2对应示意图 其中,根据图5-3所示,FPAA1管脚号为15和16对应的是芯片中的IO5P以及IO5N引脚;其管脚号为19和20对应的是芯片中的引脚为IO7P以及IO7N;根据图5-4所示,FPAA2管脚号为03和04,对应的是芯片中的O1P和O1N引脚;其管脚号为08和09对应的芯片中的引脚为I2N以及I2P;其管脚号为11和12对应的芯片中的引脚为I3N以及I3P;其管脚号为23和24对应的芯片中的引脚为I4N以及I4P。根据电路连接图,FPAA2中03号和04号管脚对应O1P以及O1N引脚,即输出的高低电平引脚,将其与FPAA1中15号和16号管脚相连,即与IO5P与IO5N相连,输出x值;FPAA2中08号和09号管脚对应的是I2N和I2P,表示输入的高低电平管脚,从此处输入z刺激信号,由于电源提供的设备只有一个输出口,将该输入与a参数输入并联,即FPAA2中24号以及23号管脚,对应I4P以及I4N;FPAA1中19号和20号管脚对应开发板中IO7P和IO7N,通过此引脚将FPAA1中进行的乘法运算结果x3输出到FPAA2中的11号和12号管脚,即对应I3N以及I3P引脚,继续进行运算,完成FHN方程组的电路实现。5.2实物电路验证根据电路设计图将实物连接好,并且接上刺激信号,通过示波器显示对比Matlab模拟图形。但是由于Keithley数字源表只能提供一个电源,并不能完全实现两个不同的电刺激信号, 因此将上文所提出的a和z刺激信号设置成为一样,呈现出不同的动力学特征,同时由于本实验模拟的是微小信号量刺激,导线电阻、电阻以及电容所带的误差,以及接通电源所产生的电感都将对最终的结果造成一定的影响。以下将通过一组不同的波形图以及其特征对比验证实验,以下图形中,细黄线波形代表的x随t变化图,细蓝线波形代表的是y随t变化图:图5-5 当a=z=0.1时 x-y波形图图5-6 当a=z=0.1时 x-t、y-t波形图图5-7 当a=z=0.1时 Matlab模拟x-y波形图图5-8 当a=z=0.3时 x-y波形图图5-9 当a=z=0.3时 x-t、y-t波形图图5-10 当a=z=0.3时 Matlab模拟x-y波形图图5-11 当a=z=0.32时 x-y波形图图5-12 当a=z=0.32时 x-t、y-t波形图图5-13 当a=z=0.32时 Matlab模拟x-y波形图图5-14 当a=z=0.35时 x-y波形图图5-15 当a=z=0.35时 x-t、y-t波形图图5-16 当a=z=0.35时 Matlab模拟x-y波形图图5-17 当a=z=0.5时 x-y波形图图5-18 当a=z=0.5时 x-t、y-t波形图图5-19 当a=z=0.5时 Matlab模拟x-y波形图 以上一系列图中,硬件仿真出的x-y波形图中每格代表2V。通过示波器显示,我们可以看出,从0.1V的电刺激信号到0.5V的电刺激信号x-y波形图的细微差别,随着刺激信号的逐渐增强,x-y图整体上移,代表的是膜电位以及恢复变量的逐渐增强。同时,我们可以得出一个结论,随着刺激的增强,膜电位和恢复变量的不仅逐渐增强,且逐渐形成一个有规律的周期性振荡。由于设备的限制,没有充足的刺激信号,因此将两个刺激电源设置成一个不能很好的体现神经元动力学特征,但通过对比Matlab模拟波形图,可以得到这个电路真实可用的结论,如下图: 图5-20 不同电压下相图对比 其中,蓝色代表的是0.1V刺激时,x-y波形图,深橘色代表的是0.3V刺激时,x-y波形图,浅橘色代表的是0.32V刺激时,x-y波形图,紫色代表的是0.35V刺激时,x-y波形图,绿色代表的是0.5V刺激时,x-y波形图。从上图中我们可以得知,随着刺激的增强,从起点0开始,膜电位以及恢复变量逐渐增强,图像中表示为波形图向上平移,代表膜电位以及恢复变量的逐渐增强。因此,可以得出结论,本次毕业设计的神经元FHN方程电路设计真实有效。 本文的结果为用硬件实现大规模神经元互联的网络奠定了基础。6创新性以及后续发展计划本次实验的创新性主要体现在芯片的选取中,利用FPAA的AN231E04型芯片进行神经元的实现,并且使用该芯片进行神经元的模拟在国内尚未见报。后续工作将利用FPAA芯片实现两个神经元之间的耦合,并且直至实现至多个神经元之间的互连,同时考虑到成本问题,尽可能设计电路突破现在大部分利用两个FPAA芯片实现一个神经元,利用一个芯片集成一个神经元的电路设计。整个实验的发展最终在最理想的情况下,集成成为一块电路,并可将该电路刻在一块硅片上实现完成具有神经元非动力学特征并且具有神经网络功能的芯片,真正实现神经元特征硬件化。7总结随着科学技术的发展,人们对计算机的要求越来越高,继而引领了人工智能的热潮。由于软件模拟仿真在性能上面的限制,人们逐渐将目光转移到硬件领域。随着在线模拟可编程芯片的发展,利用该芯片进行神经元非线性动力学的研究成为了一个新的研究热点。在实验过程中,利用一种新型芯片FPAA进行硬件的模拟,并且通过Matlab实现了了神经元动力学FHN方程,软件模拟了神经元动力学,然后通过Anadigm Designer2这个针对FPAA设计的EDA工具进行了模拟电路的设计与测试,最后通过FPAA芯片进行了最后的硬件实践。由于第一次利用硬件进行神经元的模拟,经验不足,导致仿真效果没有达到预计效果明显,但是我也在这次毕业设计中学习到了很多。最重要的是,这次毕业设计锻炼了我的自学能力与查阅文献的能力,提高了自己的综合素质和动手能力,并且让我了解了科技发展的前沿。总之,在这个工智能、机器学习高速发展的时代,我们应该紧随时代的脚步,充实自己,为社会贡献自己的力量。致谢参考文献[1]王蓓. 神经元电路设计实现的研究[D].贵州大学,2008.[2]闫明. 基于FPGA的神经网络硬件实现[D].中国海洋大学,2008. [3]刘培龙. 基于FPGA的神经网络硬件实现的研究与设计[D].电子科技大学,2012.[4]杨康乐. 神经元网络FPGA仿真系统构建的研究[D].天津大学,2012.[5]刘培龙,黄乐天,林凌鹏. 基于FPGA的神经元相关性分析的设计与实现[J]. 微电子学与计算机,2012,05:119-123.2005(02):16-17.[6] Emil Dimitrov Manolov, Mihail Hristov Tzanov and Filip Todorov Koparanov. FPAA Implementation and Investigation of Analog Neurons[J]. ANNUAL JOURNAL OF ELECTRONICS,2009,ISSN 1313-1842[7] S. Prange, “Emulation of biology-oriented neural networks,” in Proc.Int. Conf. On Parallel Processing in Neural Systems and Computers(ICNC), M. Eckmiller, Ed., Dusseldorf, 1985.R. Nicole, “Title of paper with only first word capitalized,” J. Name Stand. Abbrev., inpress.[8]夏飞. 生物序列分析算法硬件加速器关键技术研究[D].国防科学技术大学,2011.[9]黄小洁. 基于MATLAB的数学实验系统的实现及应用[D].南昌大学,2012.[10]高宁. 基于BP神经网络的农作物虫情预测预报及其MATLAB实现[D].安徽农业大学,2003.[11]任晋华. 低功耗开关电流型FPAA及应用设计[D].南京航空航天大学,2013.[12]刘少珍. 非线性神经元系统的动力学研究[D].南京航空航天大学,2013.[13]Zhao J, Kim Y B. Circuit implementation of FitzHugh-Nagumo neuron model using Field Programmable Analog Arrays[C]. Midwest Symposium on Circuits and Systems. 2007:772-775.[14]周思思. 神经元的混沌同步分析与控制[D].天津大学,2008.附录大学学院信息科技学院计算机科学与技术姓名论文题目一、对待毕业实习的态度及实习期间遵守纪律情况优良(15—11分)一般(10—6分)较差(5—0)二、观察、收集、整理、查阅资料及运用数据的水平优良(30—21分)一般(20—11分)较差(10—0分)三、学生的独立工作能力和动手能力优良(20—16分)一般(15—11分)较差(10—0分)四、毕业论文写作的规范化程度优良(15—11分)一般(10—6分)较差(5—0分)五、毕业论文(设计)总体评价优良(20—16分)一般(15—6分)较差(5—0分)审查意见、成绩及能否提交答辩:教务处制表大学学院信息科技学院计算机科学与技术姓名论文题目一、论文选题的价值与合理性优秀(15—11分)一般(10—6分)较差(5—0)二、论文的难度、工作量大小和创新性优秀(30—21分)一般(20—11分)较差(10—0分)三、数据资料分析、归纳、概括及运算的能力优秀(20—16分)一般(15—11分)较差(10—0分)四、文字表达水平、文章的逻辑性优秀(15—11分)一般(10—6分)较差(5—0分)五、论文写作的规范化程度优秀(20—16分)一般(15—6分)较差(5—0分)评阅意见、成绩及能否提交答辩:教务处制表大学本科生毕业论文(设计)答辩及综合评分表(由答辩小组填写)学院信息科技学院计算机科学与技术姓名论文题目一、内容的科学性、应用性和创新性优秀(30—21分)一般(20—11分)较差(10—0)二、论文写作水平及知识面掌握程度优秀(30—21分)一般(20—11分)较差(10—0分)三、语言表达能力、逻辑思维能力、回答问题的正确性优秀(40—31分)一般(30—11分)较差(10—0分)论文答辩意见及成绩:答辩小组负责人(签名): 年 月 日本科生毕业论文(设计)综合评定成绩(由答辩小组填写)毕业论文(设计)评阅成绩30%毕业论文(设计)答辩成绩40%综合评定成绩100%注:综合评定成绩等级:优秀(90-100),良好(80-89),中等(70-79),及格(60-69),不及格(60分以下)。答辩小组负责人(签名): 年 月 日
目录
摘要 3
关键字 3
Abstract 3
Key words 3
1.选题背景 4
1.1选题目的及意义 4
1.2发展研究状况 4
2.开发平台及应用技术 4
2.1 Matlab简介 5
2.2 Anadigm Designer2简介 5
2.3 FPAA简介 5
3. FitzHughNagumo方程及其Matlab模拟 6
3.1 FitzHughNagumo方程 6
3.2 Matlab模拟FitzHughNagumo方程 7
3.2.1 FHN方程Matlab分析 7
3.2.2 FHN方程Matlab的代码实现 14
4.电路设计 15
4.1电路设计 15
4.2 参数设置 17
5硬件实现 22
5.1实物电路连接 22
5.2实物电路验证 25
6创新性以及后续发展计划 31
7总结 32
致谢 32
参考文献 32
利用在线模拟可编程芯片实现神经元动力学
计算机科学与技术学生 丁丽璇
引言
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/2210.html