基于FPGA的SNN脉冲神经网络之LIF神经元verilog实现,包含testbench

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

(完整程序运行后无水印)

2.算法运行软件版本

vivado2019.2

3.部分核心程序

(完整版代码包含详细中文注释和操作步骤视频)

复制代码
............................................................
//Vtn * exp(-dt/tao) 
reg signed[15:0]d1_Vtn;
always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
     begin
     d1_Vtn <= 16'd0;
     end
else begin
     d1_Vtn <= i_Vtn;
     end
end

wire signed[31 : 0] P;
mult_gen_0 Vexp (
  //.CLK(i_clk),    // input wire CLK
  .A(d1_Vtn),        // input wire [15 : 0] A
  .B(o_exp),        // input wire [15 : 0] B
  //.SCLR(i_rst),  // input wire SCLR
  .P(P)        // output wire [31 : 0] P
);
assign o_dat1=P[27:12];

//sum sitn*Wij

reg signed[31:0]sw1j;
reg signed[31:0]sw2j;
reg signed[31:0]sw3j;
always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
     begin
     sw1j <= 32'd0;
     sw2j <= 32'd0;
     sw3j <= 32'd0;
     end
else begin
     sw1j <= $signed(i_stn1)*$signed(i_W1j);
     sw2j <= $signed(i_stn2)*$signed(i_W2j);
     sw3j <= $signed(i_stn3)*$signed(i_W3j);
     end
end

 
reg signed[15:0]d1_dat;
always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
     begin
     d1_dat <= 16'd0;
     end
else begin
     d1_dat <= sw1j+sw2j+sw3j;
     end
end
    
assign o_dat2=  d1_dat;   
assign o_Vtn1=  o_dat1 + o_dat2;    

 
       
endmodule
05_107m

4.算法理论概述

LIF(Leaky Integrate - and - Fire)神经元是一种常见的脉冲神经元模型。它模拟了生物神经元的基本特性,主要包括对输入信号的积分和脉冲发放机制。从概念上理解,LIF 神经元就像一个带有漏电特性的容器,输入信号不断往这个容器中 "注水"(积分),当水位(膜电位)达到一定高度(阈值)时,就会产生一个脉冲,然后水位(膜电位)又会被重置。

膜电位动态方程

离散时间形式的膜电位更新公式

脉冲发放条件和复位机制

输入 - 输出关系示例

与简单的线性神经元模型相比,LIF 神经元具有脉冲发放的非线性特性。线性神经元模型的输出通常是输入的线性组合,而 LIF 神经元的输出是脉冲序列,其发放与否取决于膜电位是否达到阈值。与更复杂的生物神经元模型(如 Hodgkin - Huxley 模型)相比,LIF 神经元是一种简化模型。Hodgkin - Huxley 模型考虑了多种离子通道的动态变化,而 LIF 神经元只关注膜电位的积分和脉冲发放,在计算复杂度上较低,更适合于大规模神经网络的模拟和应用。

5.算法完整程序工程

OOOOO

OOO

O

相关推荐
XINVRY-FPGA10 小时前
XCZU47DR-2FFVG1517I Xilinx FPGA AMD ZynqUltraScale+ RFSoC
人工智能·嵌入式硬件·fpga开发·信息与通信·信号处理·射频工程·fpga
forgeda15 小时前
如何将FPGA设计的验证效率提升1000倍以上(3)
fpga开发·在线调试·硬件断点
千宇宙航1 天前
闲庭信步使用图像验证平台加速FPGA的开发:第六课——测试图案的FPGA实现
图像处理·计算机视觉·fpga开发
顾北川_野1 天前
Android ttyS2无法打开该如何配置 + ttyS0和ttyS1可以
android·fpga开发
霖001 天前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
千宇宙航2 天前
闲庭信步使用图像验证平台加速FPGA的开发:第七课——获取RAW图像
图像处理·计算机视觉·fpga开发
hahaha60162 天前
xilinx fpga芯片的结温
fpga开发
北城笑笑2 天前
FPGA 47 ,MIG 内存接口生成器深度解析( FPGA 中的 MIG 技术 )
fpga开发·fpga
HIZYUAN2 天前
AG32嵌入式系统如何实现加密与固件升级(一)
stm32·单片机·嵌入式硬件·mcu·fpga开发·创业创新
hhh123987_2 天前
以太网基础③ARP 协议的原理与 FPGA 实现
fpga开发