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

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

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

2.算法运行软件版本

vivado2019.2

3.部分核心程序

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

复制代码
`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2020/07/21 07:25:33
// Design Name: 
// Module Name: SNN_IM
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:

module SNN_tops(
             input i_clk,
             input i_rst,
             output  signed[31:0]o_v1,
             output  signed[31:0]o_u1,
             output  signed[31:0]o_vL1,
             output  signed[31:0]o_v2,
             output  signed[31:0]o_u2,
             output  signed[31:0]o_vL2,
             output  signed[31:0]o_v3,
             output  signed[31:0]o_u3,
             output  signed[31:0]o_vL3
    );
 
//神经元1 
IM_neuro IM_neuro_u1(
             .i_clk(i_clk),
             .i_rst(i_rst),
             .Isyn (32'd40000),
             .o_v  (o_v1),
             .o_u  (o_u1),
             .o_vL (o_vL1)
          );
//神经元2     
IM_neuro IM_neuro_u2(
             .i_clk(i_clk),
             .i_rst(i_rst),
             .Isyn (32'd50000),
             .o_v  (o_v2),
             .o_u  (o_u2),
             .o_vL (o_vL2)
          ); 
    
//神经元3
IM_neuro IM_neuro_u3(
             .i_clk(i_clk),
             .i_rst(i_rst),
             .Isyn (32'd60000),
             .o_v  (o_v3),
             .o_u  (o_u3),
             .o_vL (o_vL3)
          );
    
    
endmodule
05_107m

4.算法理论概述

脉冲神经网络(Spiking Neural Network,SNN)是第三代人工神经网络,它更接近生物神经元的工作方式。其中,Izhikevich - Memristive(IM)神经元模型是一种结合了忆阻器(Memristor)特性和 Izhikevich 神经元动力学的模型,在神经形态计算和复杂神经动力学模拟等领域具有重要的应用价值。

Izhikevich 神经元模型的基本方程为:

其中v是神经元的膜电位,u是恢复变量,用于控制神经元的不应期等特性。a、b是模型参数,不同的参数组合可以模拟出不同类型的神经元放电行为,如规则发放、快速发放、发放后抑制等。是外部输入电流,它对神经元的膜电位变化起到驱动作用。

其中c和d是重置参数,与神经元的恢复特性有关。这种发放机制使得 Izhikevich 神经元能够产生类似于生物神经元的脉冲序列。

IM 神经元模型将忆阻器引入到 Izhikevich 神经元模型中,用忆阻器来调节神经元的输入电流或者神经元内部的一些参数。具体来说,忆阻器可以放置在输入通路中,使得输入电流经过忆阻器后再进入神经元。

IM 神经元模型作为一种结合了忆阻器和 Izhikevich 神经元动力学的模型,具有复杂的动力学行为和潜在的应用价值。通过对其原理的深入理解,包括神经元动力学方程的修正、忆阻器与神经元的协同作用、参数对放电模式的影响以及在神经形态计算中的应用等方面,我们可以更好地利用这个模型来开发高效的神经形态计算系统和复杂的信息处理应用。随着技术的不断发展,IM 神经元模型有望在人工智能、脑机接口等众多领域发挥重要作用。

5.算法完整程序工程

OOOOO

OOO

O

相关推荐
仲南音1 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20202 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy2 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia2 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20202 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安3 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议