【技术实现步骤摘要】
一种显示Izhikevich神经元模型的方法
本专利技术的技术方案涉及用于系统生物学的建模或仿真的数字计算或数据处理或方法,具体地说是一种显示Izhikevich神经元模型的方法。
技术介绍
为了模拟生物神经元发放脉冲的特性,研究人员从不同的应用角度和方法提出了多种模型,比较典型的有H-H神经元模型、IF神经元模型和Izhikevich神经元模型。H-H神经元模型参量最为丰富,可以很精确的模拟真实神经元对电流脉冲的反应,但是执行起来成本非常高,不适合长时间和大规模的网络仿真。IF神经元模型是线性方程,对计算的要求相对较低,但是不能够展现出神经元的大部分基本性质。而Izhikevich神经元模型结合了H-H神经元模型和IF神经元模型的优点,既能够很好的展现真实神经元特性又耗时短、成本低,所以Izhikevich神经元模型是比较理想的脉冲神经元模型。使用传统软件处理信息,例如仿真软件MATLAB,由于其存在并行程度低和速度慢的缺陷,许多需要进行现场实时处理的复杂数据信息得不到及时处理,另外用软件实现所需计算机体积庞大,不 ...
【技术保护点】
1.一种显示Izhikevich神经元模型的方法,其特征在于:使用四阶龙格库塔法将Izhikevich神经元模型离散化,通过FPGA硬件建模,并在示波器上对Izhikevich神经元模型进行显示和验证,具体步骤如下:/n第一步,使用四阶龙格库塔法将Izhikevich神经元模型离散化:/n采用经典的四阶龙格库塔公式将Izhikevich神经元模型离散化,得到结果如下:/n
【技术特征摘要】
1.一种显示Izhikevich神经元模型的方法,其特征在于:使用四阶龙格库塔法将Izhikevich神经元模型离散化,通过FPGA硬件建模,并在示波器上对Izhikevich神经元模型进行显示和验证,具体步骤如下:
第一步,使用四阶龙格库塔法将Izhikevich神经元模型离散化:
采用经典的四阶龙格库塔公式将Izhikevich神经元模型离散化,得到结果如下:
上述公式中,v表示神经元膜电位,u表示神经元膜恢复变量,v1、u1、v2、u2、v3、u3、v4、u4都是使用四阶龙格库塔法离散化Izhikevich神经元模型过程中为计算v和u产生的中间量,I表示外加的电流值,a、b是常数,其中2的整数次幂使用移位操作来代替,由此完成使用四阶龙格库塔法将Izhikevich神经元模型离散化;
第二步,浮点数转化为定点数:
采用Q24格式为定点数据格式,即选择定点数据字长为30位,其中符号位1位,整数位5位,小数位24位,所采用的Q24格式如下所示:
该格式小数点后面有24位,它的正数最大值是011111_1111_1111_1111_1111_1111_1111,近似于十进制的31.999999046,负数的最大值是100000_0000_0000_0000_0000_0000_0000,近似于十进制的-31.999999046,任意给定一个十进制实数x∈(-32,32),转换为Q24格式数据x1的计算公式为x1=[x×224];同样任意给定一个Q24格式数据x1,转换为十进制实数x的计算公式为x=[x1÷224],由此将浮点数转化为定点数;
第三步,在QuartusII13.0软件中使用verilogHDL语言编写状态机:
将上述第一步所得到的公式(6)、公式(7)、公式(10)和公式(11)通过在QuartusII13.0软件中使用verilogHDL语言编写状态机来实现运算,并且运算过程中数据采用上述第二步所定义的定点数据格式,在计算机上操作的具体步骤是:
第(3.1)步,打开QuartusII13.0软件,在弹出的页面中选择CreateaNewProject,点击Next进入工程目录设置页面,设置工程名称为Izhikevich_Rugekutta,设置完成后点击Next进入器件型号设置页面,在该页面的上半部分DeviceFamily选择CycloneIVE系列,下半部分Availabledevices选择EP4CE10F17C8型号的FPGA,点击Next进入仿真设置页面,在Simulation一行中的ToolName选择Modelsim-Altera,在Format一行中选择VerilogHDL,直接点击Finish,完成工程目录、名称、使用器件及仿真软件的设置;
第(3.2)步,点击工具栏New按钮,在弹出的页面中选择VerilogHDLFile,点击ok进入编写程序界面;
第(3.3)步,编写乘法模块用来代替运算过程中的乘法计算,首先定义模块的名称为signed_mult;其次定义模块中所用到的所有参量名称及类型,包括,两个30位有符号输入类型的输入量a和b,即inputsigned[29:0]a,b,一个30位既是输出类型又是有符号网线类型的输出量out,即output[29:0]out;wiresigned[29:0]out,一个60位有符号网线类型的中间变量out_mult,即wiresigned[59:0]out_mult,最后使用assign声明语句实现组合逻辑,out_mult为输入量a和b相乘的结果,即assignout_mult=a×b,out为out_mult最高位与25位到53位拼接的结果,即assignout={out_mult[59],out_mult[52:24]};
第(3.4)步,在乘法模块上面重新定义一个新的名称为Izhikevich_Rugekutta的模块,先定义模块所用到的所有参量名称及其类型,包括,一个输入类型的时钟信号clk,一个输入类型的复位信号rst_n,两个14位既是输出类型又是有符号网线类型的输出量outv和outu,并且使outv和outu分别等于v和u的高14位,十个30位有符号寄存器类型的中间变量v、v1、v2、v3、v4、u、u1、u2、u3、u4和一个5位无符号寄存器类型的中间变量state,五个状态常量包括localparamIdle=5'b00001、Start=5'b00010、Clear=5'b00100、Stop=5'b01000和Final=5'b10000,二十个有符号网线类型的变量包括wiresignedv×v、v1×v1、v2×v2、v3×v3、v×v1、v×v2、v×v3、a×b、(a×b)×v、a×u、(a×b)×v1、a×u1、(a×b)×v2、a×u2、(a×b)×v3、a×u3、sumv、e×sumv、sumu和e×sumu,七个有符号网线类型的常量包括wiresignedp、e、o、a、b、c、d和I,根据上述步骤二的定点数据格式,使用assign声明语句进行赋值,即assignp=0.3=30'sh00_4CCCC8、o=1.4=30'sh01_666666、a=0.02=30'sh00_051EB8、b=0.2=30'sh00_333333、c=-0.65=30'sh3F_59999D、d=0.08=30'sh00_147AE1和I=0.3=30'sh00_4CCCC8;
第(3.5)步,在上述第(3.4)步定义参量的基础上,调用第(3.3)步的编写的乘法器模块来计算第(3.4)步中二十个有符号网线类型的变量v×v、v1×v1、v2×v2、v3×v3、v×v1、v×v2、v×v3、a×b、(a×b)×v、a×u、(a×b)×v1、a×u1、(a×b)×v2、a×u2、(a×b)×v3、a×u3、sumv、e×sumv、sumu、e×sumu,调用的格式为signed_multvsq(v×v,v,v),其中signed_mult是被调用乘法模块的名称,vsq是自己定义的计算模块的名称,按照此调用格式依次计算v1×v1、v2×v2、v3×v3、v×v1、v×v2、v×v3、a×b、(a×b)×v、a×u、(a×b)×v1、a×u1、(a×b)×v2、a×u2、(a×b)×v3、a×u3、sumv、e×sumv、sumu、e×sumu,其中assignsumv<=v1>>>8+v2>>>7+v3>>>7+v4>>>8,sunu<=u1>>>8+u2>>>7+u3>>>7+u4>>>8;
第(3.6)步,采用一段式有限状态机,将整个状态机写到1个always模块里面,在该模块中既采用同步时序描述状态转移,又描述状态的输入和输出,具体操作步骤如下:
(Ⅰ)以时钟信号clk的上升沿或复位信号rst_n的下降沿为触发,采用if-else语句判断复位信号rst_n是否为低电平,具体处理如下:
当复位信号rst_n是低电平时,则对v和u赋初始值如下:v<=-0.65<=30'sh3F_59999B,u<=-0.13<=30'sh3F_DEB853,对v1、v2、v3、v4、u1、u2、u3、u4进行清零操作,得到v1=v2=v3=v4=u1=u2=u3=u4<=32'sh00_000000,使state指向状态Idle,
当复位信号rst_n不是低电平时,则进行以下(Ⅱ);
(Ⅱ)判断v的值是否大于0.3,当大于时,则令v<=-0.65,u<=u+0.08,否则进入以下(Ⅲ);
(Ⅲ)使用case语句判断state的状态,即case(state),当state<=Idle时,进行上述第一步的公式(6)和公式(7)式中的v1和u1的计算,state指向下一个状态Start即state<=Start,当state<=Start时,进行上述第一步的公式(6)和公式(7)式中的v2和u2的计算,state指向下一个状态Stop,当state<=Stop时,进行上述第一步的公式(6)和公式(7)式中的v3和u3的计算,state指向下一个状态Clear,当state<=Clear时,进行上述第一步的公式(6)和公式(7)式中的v4和u4的计算,state指向下一个状态Final,当state<=Final时,进行上述第一步的公式(10)式和公式(11)式中的v和u的计算,state重新指回初始状态Idle,如果state不是上述这五个状态,则使用default语句置成高阻态即defaultstate<=5'bxxxxx,自此状态机完成了一次运算,得到了一组v和u数据,只要有时钟信号上升沿产生,状态机就会一直循环运算,得到多组v和u数据;
第(3.7)步,点击保存按钮,将程序保存到工程目录下,保存的名称必须和主模块名称一致,即Izhikevich_Rugekutta;
至此,完成在QuartusII13.0软件中使用verilogHDL语...
【专利技术属性】
技术研发人员:郭磊,王衍昌,满梦华,武焕涛,
申请(专利权)人:河北工业大学,
类型:发明
国别省市:天津;12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。