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

ops/2025/1/13 10:13:27/

目录

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)
beginif(i_rst)begind1_Vtn <= 16'd0;end
else begind1_Vtn <= i_Vtn;end
endwire 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*Wijreg signed[31:0]sw1j;
reg signed[31:0]sw2j;
reg signed[31:0]sw3j;
always @(posedge i_clk or posedge i_rst)
beginif(i_rst)beginsw1j <= 32'd0;sw2j <= 32'd0;sw3j <= 32'd0;end
else beginsw1j <= $signed(i_stn1)*$signed(i_W1j);sw2j <= $signed(i_stn2)*$signed(i_W2j);sw3j <= $signed(i_stn3)*$signed(i_W3j);end
endreg signed[15:0]d1_dat;
always @(posedge i_clk or posedge i_rst)
beginif(i_rst)begind1_dat <= 16'd0;end
else begind1_dat <= sw1j+sw2j+sw3j;end
endassign 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


http://www.ppmy.cn/ops/149063.html

相关文章

Spring——自动装配

假设一个场景&#xff1a; 一个人&#xff08;Person&#xff09;有一条狗&#xff08;Dog&#xff09;和一只猫(Cat)&#xff0c;狗和猫都会叫&#xff0c;狗叫是“汪汪”&#xff0c;猫叫是“喵喵”&#xff0c;同时人还有一个自己的名字。 将上述场景 抽象出三个实体类&…

Unity学习之UGUI(二)

六、Image 1、作用 图像控件&#xff0c;用于显示Sprite的关键组件&#xff0c;除了背景图等大图&#xff0c;一般都是使用Image来显示UI中的图片元素 2、主要参数 &#xff08;1&#xff09;Image Type——Sliced&#xff08;拉伸&#xff09; Sliced-切片模式&#xff0c…

uniapp 微信小程序内嵌h5实时通信

描述&#xff1a; 小程序webview内嵌的h5需要向小程序实时发送消息&#xff0c;有人说postMessage可以实现&#xff0c;所以试验一下&#xff0c;结果是实现不了实时&#xff0c;只能在特定时机后退、组件销毁、分享时小程序才能接收到信息&#xff08;小程序为了安全等考虑做了…

oracle jdk17新版变回OTN 商用收费了

历史版本 https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html 最新版 https://www.oracle.com/java/technologies/downloads/#java17 最新版页面有提示已经变回OTN JDK Development Kit 17.0.13 downloads The Oracle JDK 17 license changed in…

Vue3的reactive、ref、toRefs、toRef、toRaw 和 markRaw处理响应式数据区别

reactive reactive 用于创建一个响应式对象。它接受一个普通对象&#xff0c;并返回一个响应式对象&#xff08;Proxy实例&#xff09;。 import { reactive } from vue;// 创建一个reactive类型的响应式对象 const person reactive({name: panda,age: 18 });console.log(pe…

AI绘画:Midjourney和stable diffusion到底有什么区别?

Midjourney与Stable Diffusion的区别及选择指南 一、核心区别 二、应用场景与优势分析 三、如何选择&#xff1f; 四、AI配图 五、总结 Midjourney与Stable Diffusion的区别及选择指南 随着人工智能技术的飞速发展&#xff0c;AI绘画工具如雨后春笋般涌现&#xff0c;其中…

STM32Flash读写BUG,坑—————4字对齐

在 STM32 的 Flash 存储中&#xff0c;数据通常需要 4 字节对齐&#xff0c;这是由于其 Flash 存储的硬件设计和写入操作的限制决定的。 以下是更详细的原因与解释&#xff1a; 1. STM32 的 Flash 写入单位 STM32 的 Flash 通常以字&#xff08;Word&#xff0c;4 字节 32 位…

计算机网络安全 —— C# 使用谷歌身份验证器

一、Google Authenticator 基本概念 Google Authenticator是谷歌推出的一款动态口令工具&#xff0c;旨在决大家Google账户遭到恶意攻击的问题&#xff0c;在手机端生成动态口令后&#xff0c;在Google相关的服务登陆中除了用正常用户名和密码外&#xff0c;需要输入一次动态口…