在 FPGA 上实现并行脉冲神经网络(Spiking Neural Net)

这个项目展示了如何在 FPGA 上实现一个并行的 脉冲神经网络(Spiking Neural Network, SNN),包括神经元模型、突触模型、学习机制等核心部分,在硬件中用 Verilog 语言进行建模与验证。

参数设置和模型输出示例如下所示:

https://people.ece.cornell.edu/land/courses/ece5760/DDA/NeuronIndex.htm

📌 项目背景与目标

脉冲神经网络是模仿生物神经元工作方式的神经网络,与传统人工神经网络不同,它在信息传递上使用**离散脉冲(spike)**进行交流,更接近生物神经系统的信息处理机制。该项目的核心目标是:

  • 使用 FPGA 实现快速的数值积分和时间步更新;

  • 在硬件上模拟具有生物学意义的神经元与突触行为;

  • 支持学习机制(如 STDP)来调整网络连接权重。

🧠 神经元模型:Izhikevich 动力学

该设计采用了 Eugene Izhikevich 提出的简化神经元模型作为基本单元。该模型使用两个状态变量:

  • v:膜电位

  • u:恢复变量

这两个状态按照特定微分方程进行更新,从而在硬件上模拟神经元"发放脉冲"的动态行为。该模型在硬件上的数值积分可借助快速 FPGA 并行计算实现。

🧩 主要模块说明

整个神经网络在 FPGA 上由多个 Verilog 模块组成,各模块均可配置参数并可用于扩展更复杂的网络:

🔹 1. 神经元本体(Soma)

模拟细胞体和脉冲发放机制;

使用固定时间常数和可配置参数(a, b, c, d, I);

每个神经元以 1/16 ms(每步 1/16 毫秒)为单位更新状态。

🔹 2. 脉冲传播延迟(Axon)

用于模拟脉冲在轴突中的传播延迟;

延迟范围可设为 1 到 64 个时间步。

🔹 3. 化学突触(Chemical Synapse)

由前突触放电控制的恒流源;

指数衰减时间常数可配置(如 4、8、16、32 等时间步);

突触权重可设置为抑制(negative)或兴奋(positive)。

🔹 4. 电突触(Electrical Synapse)

电流由突触之间的电导和膜电位差决定;

支持前向/反向整流或对称模式;

可配合偏置电流一起使用。

🔹 5. STDP 学习模块

基于脉冲时序的权重塑性(Spike-Timing Dependent Plasticity);

如果后突触脉冲紧随前突触,则权重增加(因果增强);

如果前后顺序相反,则权重减弱(非因果减弱);

学习时间常数与权重调整范围可配置。

🔌 示例网络结构

本项目提供了两个示例网络拓扑,用于演示神经元和突触之间的交互行为:

🧠 示例一:4 个神经元的拓扑

在这个级联结构中:

  • 神经元 1 的脉冲可传递给神经元 2、神经元 3(通过电突触)和指示灯;

  • 神经元 2、3 和 4 之间也有类似连接;

电突触将不同神经元的膜电位连接,使某些神经元在弱兴奋耦合下同步发放。

这个例子展示了如何在 FPGA 中用 Verilog 实现多个神经元之间的 双向与电性耦合。

🧠 示例二:带 STDP 学习的神经元对

另一个拓扑展示了三神经元结构:

  • 神经元 1 与神经元 3 之间通过 STDP 可学习突触连接;

初始时两者不同步;

随着脉冲传递和 STDP 权重调整,神经元 3 最终与神经元 1 同步。

这个例子模拟了生物大脑中突触可塑性的变化过程,使得在硬件上出现学习现象。

下图展示了初始的非同步电压(底部为神经元 1,顶部为神经元 3)、中间状态以及由上方 Verilog 模块生成的最终收敛状态。初始状态下,两个神经元均处于自发活动状态,但彼此之间的突触连接权重为零。通过调整赫布突触,在几千次脉冲后,神经元之间的耦合逐渐建立。在中间状态下,可以看到神经元 1 的每隔一次脉冲都会触发神经元 3 的一个脉冲,同时也可以看到由阈下耦合产生的微小电压。最终的平衡状态显示,神经元 1 的每次脉冲都会触发神经元 3 的一个脉冲。

参考

Ruben Guerrero-Rivera, et al, Programmable Logic Construction Kits for Hyper-Real-Time Neuronal Modeling, Neural Computation, Volume 18 , Issue 11 (November 2006) Pages: 2651 - 2679
https://hackaday.io/project/260-spiking-neural-net-in-parallel-fpga-hardware/details
https://people.ece.cornell.edu/land/courses/ece5760/DDA/NeuronIndex.htm
Eugene M. Izhikevich , Simple Model of Spiking Neurons, IEEE Transactions on Neural Networks (2003) 14:1569- 1572

项目代码

https://github.com/suisuisi/FPGATechnologyGroup/

🔍 项目意义

这个 FPGA SNN 项目将生物神经系统的行为映射到硬件逻辑中,通过可配置的 Verilog 模块实现:

  • 生物学水平的脉冲神经元模型;

  • 化学与电性突触连接;

  • 基于时序的权重调整机制;

  • 并行结构提高计算效率。

这样的实现不仅是神经网络模拟的实验平台,也为硬件加速的 SNN 研究提供了良好起点。

相关推荐
FONE_Platform18 小时前
能源化工行业全面预算解决方案:重塑双碳目标下的财务新动能
大数据·人工智能
前沿在线18 小时前
从“用系统”到“跑 Agent”:AI 钉钉 1.1 在重新定义企业操作系统 | 前沿在线
人工智能
智能相对论18 小时前
CES深度观察|AI硬件消费时代的“幕后英雄”走向台前
人工智能·百度
Terrence Shen18 小时前
【CUDA编程系列】之01
c++·人工智能·深度学习·机器学习
老吴学AI18 小时前
系列报告十:(Menlo)《2025: The State of Generative AI in the Enterprise》
人工智能·vibe coding
AI即插即用18 小时前
超分辨率重建 | CVPR 2024 DarkIR:轻量级低光照图像增强与去模糊模型(代码实践)
图像处理·人工智能·深度学习·神经网络·计算机视觉·超分辨率重建
喜欢吃豆18 小时前
深度解析:FFmpeg 远程流式解复用原理与工程实践
人工智能·架构·ffmpeg·大模型·音视频·多模态
ChaITSimpleLove18 小时前
AI时代编程范式:“游击战”与“阵地战”的灵活应用
人工智能·ai编程范式·战略思维·战术思维·灵活策略·游击战与阵地战
hacker70718 小时前
精进Excel图表:AI赋能,成为Excel图表高手
人工智能·信息可视化·excel