Un modèle de neurone LIF électronique au niveau transistor, ses synapses, et trois démos de calcul neuromorphique simulées (additionneur en rate coding, WTA doux, multiplexeur).An electronic LIF neuron model at transistor level, its synapses, and three simulated neuromorphic computation demos (rate-coding adder, soft WTA, multiplexer).
PourquoiWhy
Explorer le calcul neuromorphique au niveau transistor : un MOS sous le seuil a une dépendance exponentielle analogue à celle de certains mécanismes de transport ionique.To explore neuromorphic computing at transistor level: a sub-threshold MOSFET has an exponential dependence analogous to that of some ion transport mechanisms.
CommentHow
Modèles MOS sub-threshold idéalisés et BS170 réel pour le reset, simulations ngspice pilotées en Python, Monte-Carlo sur les paramètres du modèle.Idealized sub-threshold MOS models and a real BS170 for the reset, ngspice simulations driven from Python, Monte-Carlo on the model parameters.
RésultatsResults
Résultats simulés (SPICE), pas encore mesurés : courbe f-I de la forme attendue, trois démos qui fonctionnent dans les conditions simulées (diaphonie du MUX ~10 %), et un Monte-Carlo qui montre que le mismatch peut réduire un tirage au silence.Simulated (SPICE) results, not yet measured: f-I curve of the expected shape, three demos that work under the simulated conditions (MUX crosstalk ~10 %), and a Monte-Carlo showing that mismatch can silence a draw.
Projet perso de l'été 2026 : une petite bibliothèque de primitives neuromorphiques (modèle de neurone LIF électronique, deux synapses, trois démos de calcul) pensée pour des MOS discrets BS170 / BS250 polarisés sous le seuil.
État du projet : les résultats présentés sont actuellement issus de simulations SPICE (ngspice, scripts Python) ; la validation expérimentale sur PCB constitue l'étape suivante. Les transistors sub-threshold sont des modèles idéalisés : seul le reset utilise le modèle d'un BS170 réel.
L'idée
L'analogie de Mead : chaque élément du neurone a son équivalent dans le circuit.Mead's analogy: each element of the neuron has a counterpart in the circuit.Le modèle LIF (Lapicque) : un circuit RC qui intègre le courant, un seuil, un reset. Trois paramètres : τ_m, V_th, V_reset.The LIF model (Lapicque): an RC circuit integrating the current, a threshold, a reset. Three parameters: τ_m, V_th, V_reset.
Carver Mead a observé qu'un MOS polarisé sous son seuil a un courant exponentiel en VGS, ce qui donne une dépendance exponentielle analogue à celle de certains mécanismes de transport ionique. Plutôt que de simuler un modèle de neurone sur un microcontrôleur, l'idée est de construire un circuit analogique dont le comportement suit celui du modèle LIF (ici, pour l'instant, en simulation) : le condensateur joue le rôle de la membrane, la fuite celui de la fuite ionique.
Méthode
La chaîne de simulation : tout est scripté, donc chaque courbe du projet se régénère.The simulation chain: everything is scripted, so every curve in the project can be regenerated.
Le modèle de neurone
Modèle de neurone LIF de type axon-hillock de Mead : intégration sur C_mem, deux inverseurs sub-threshold pour la bascule, reset par BS170.Mead axon-hillock LIF neuron model: integration on C_mem, two sub-threshold inverters for the switching, BS170 reset.Neurone axon-hillock au niveau transistor. Mp/Mn : MOS sub-threshold (SUBTH_PMOS / SUBTH_NMOS), reset par BS170 (rouge).Axon-hillock neuron at transistor level. Mp/Mn: sub-threshold MOSFETs (SUBTH_PMOS / SUBTH_NMOS), reset by the BS170 (red).
Un axon-hillock de Mead : Cmem = 100 pF en parallèle d'une fuite de 200 MΩ (τ = 20 ms), deux inverseurs CMOS sub-threshold en cascade, et un BS170 qui remet la membrane à zéro. Il a fallu corriger 4 bugs avant d'obtenir des spikes en simulation, dont une résistance parasite de 100 MΩ cachée dans le modèle SPICE du BS170 utilisé, qui empêchait Vm d'atteindre le seuil.
La courbe f-I simulée a la forme attendue (rhéobase simulé de 9 à 10 nA contre 7,5 nA en théorie). L'écart vient de l'hypothèse Vth = VDD/2 : le seuil dynamique relevé en simulation est de 2,08 V, bien au-dessus du seuil statique simulé (1,01 V). Une explication plausible, non vérifiée, est un kickback capacitif du transistor de reset. Avec ce seuil, l'écart avec la théorie passe de −21/−35 % à +10/+18 %.
I_inj (nA)
f_sim (Hz)
f théorie, V_th = 1,5 Vf theory, V_th = 1.5 V
ÉcartGap
f théorie, V_th = 2,075 Vf theory, V_th = 2.075 V
ÉcartGap
10
8,47
36,07
−76,5 %
—
—
15
46,73
72,13
−35,2 %
42,50
+10,0 %
20
80,86
106,38
−24,0 %
68,36
+18,3 %
25
107,39
140,18
−23,4 %
93,26
+15,2 %
30
137,19
173,80
−21,1 %
117,82
+16,4 %
Mismatch (Monte-Carlo sur les paramètres du modèle)
Ce sont des tirages sur les paramètres du modèle SPICE, pas une dispersion mesurée sur des composants réels : les écarts-types sont des hypothèses.
Avec σ(VT0) = 150 mV (hypothèse pour des MOS discrets) sur 30 tirages : dispersion simulée de f de 14 à 19 %, et à 10 nA, 14 tirages sur 30 ne spikent plus.
En faisant aussi varier I0, κ et le paramètre VTO du modèle du transistor de reset (un seuil dont la dispersion réelle est forte, de l'ordre de 0,8 à 3 V d'après la fiche technique) : 2 tirages sur 30 restent silencieux sur toute la gamme simulée. Ce sont ceux dont le VTO de reset est le plus bas (< 1,5 V dans ce modèle). Hypothèse probable : le reset conduit trop tôt et vide la membrane. À vérifier expérimentalement ; si c'est confirmé, il faudra trier les BS170 réels.
Hypothèse (à vérifier) pour les 2 tirages silencieux du Monte-Carlo étendu : un reset au V_TO trop bas viderait la membrane en continu.Hypothesis (to be checked) for the 2 silent draws of the extended Monte-Carlo: a reset with too low a V_TO would drain the membrane continuously.
Synapses et interface
Les deux synapses : un seul transistor chacune. L'excitatrice injecte du courant, l'inhibitrice court-circuite la membrane.The two synapses: a single transistor each. The excitatory one injects current, the inhibitory one shorts the membrane.Le monostable peak-and-hold : la diode charge C_hold au passage du spike, R_hold le décharge lentement. Le shaper convertit v_hold en v_pre (PMOS) ou v_gate (NMOS).The peak-and-hold monostable: the diode charges C_hold when the spike passes, R_hold discharges it slowly. The shaper converts v_hold into v_pre (PMOS) or v_gate (NMOS).Principe (non à l'échelle) : un spike de 0,17 µs devient un plateau exploitable de l'ordre de 1 ms.Principle (not to scale): a 0.17 µs spike becomes a usable plateau of about 1 ms.Interface neurone → synapse : sans monostable, la charge injectée par spike est ~7000× trop faible.Neuron → synapse interface: without the monostable, the charge injected per spike is ~7000× too small.
Excitatrice (PMOS) : ~15 pC par spike dans le modèle, courant moyen linéaire avec la fréquence (R² = 1,0 en simulation).
Inhibitrice par shunt (NMOS) : elle tire la membrane vers la masse. Au-dessus de ~70 Hz d'inhibition, le modèle de neurone est réduit au silence dans cette simulation : c'est le mécanisme utilisé pour le WTA doux.
Le problème d'interface : le spike simulé dure 0,17 µs et monte à 2,03 V, trop court pour une synapse (~2 fC par spike au lieu de ~15 pC). Pas question de tricher avec un I0 énorme : j'ai ajouté un monostable à maintien de charge (diode + condensateur + résistance, τ ≈ 1 ms), et la charge par spike passe à ~92 pC.
Les trois démos (simulées)
Additionneur en rate coding : un calcul neuromorphique simulé, pas un additionneur numérique classique. f3 = 0,62·(f1+f2) − 23, R² = 0,98 sur le balayage simulé. Le modèle de neurone de sortie spike plus que ne le prédit son courant moyen : on peut l'interpréter comme une excitabilité tirée par les fluctuations, ce que je n'ai pas testé au-delà de la simulation.
Mécanisme de compétition de type soft Winner-Take-All (WTA doux) : à I1 = I2, rapport f1/f2 = 1,000. Il monte de façon continue de 0,18 à 2,5 avec ΔI : ce n'est pas une bascule dure (rien dans le montage ne prévoyait mieux).
Multiplexeur 2:1 par shunting : une preuve de concept fonctionnelle en simulation, pas une implémentation neuromorphique complète d'un multiplexeur. Sorties simulées à 56,6 Hz (canal A) et 19,4 Hz (canal B), diaphonie résiduelle ~10 %, bascule en ~72 ms. Il a fallu un shunt 50× plus fort, et la simulation a révélé un seuil de transmission synaptique (≳ 20 nA).
Démo 1 (simulée), additionneur en rate coding (calcul neuromorphique, pas un additionneur numérique) : deux modèles de neurone d'entrée excitent un troisième via deux synapses.Demo 1 (simulated), rate-coding adder (neuromorphic computation, not a digital adder): two input neuron models excite a third one through two synapses.Démo 2 (simulée), compétition de type soft Winner-Take-All : N1 et N2 excitent N_inh, qui les inhibe en retour par un shunt partagé (rouge). Le rapport f₁/f₂ monte de 0,18 à 2,5 avec ΔI : un WTA « doux ».Demo 2 (simulated), soft Winner-Take-All competition: N1 and N2 excite N_inh, which inhibits them back through a shared shunt (red). The f₁/f₂ ratio goes from 0.18 to 2.5 with ΔI: a "soft" WTA.Démo 3 (simulée), preuve de concept de multiplexeur 2:1 : C ferme le canal A, et ferme N_tonic. N_tonic (« not C ») ferme le canal B tant que C est silencieux. Y ≈ A si C = 0, Y ≈ B si C = 1.Demo 3 (simulated), 2:1 multiplexer proof of concept: C closes channel A and silences N_tonic. N_tonic ("not C") closes channel B while C is silent. Y ≈ A if C = 0, Y ≈ B if C = 1.Les 8 phases du projet : les phases 0 à 5 sont faites en simulation, la validation Nengo et la synthèse restent à faire.The 8 project phases: phases 0 to 5 are done in simulation, the Nengo validation and the write-up are still to do.
Et ensuite
Les résultats ci-dessus sont issus de simulations SPICE ; la validation expérimentale sur PCB constitue l'étape suivante : caractériser des BS170 / BS250 réels (la seule étape qui ne se fait pas en simulation), vérifier l'hypothèse sur les tirages silencieux, valider les démos avec Nengo, puis faire le montage physique.
Personal project, summer 2026: a small library of neuromorphic primitives (electronic LIF neuron model, two synapses, three computation demos) designed for discrete BS170 / BS250 MOSFETs biased below threshold.
Project status: the results shown here currently come from SPICE simulations (ngspice, Python scripts); experimental validation on a PCB is the next step. The sub-threshold transistors are idealized models: only the reset uses the model of a real BS170.
The idea
L'analogie de Mead : chaque élément du neurone a son équivalent dans le circuit.Mead's analogy: each element of the neuron has a counterpart in the circuit.Le modèle LIF (Lapicque) : un circuit RC qui intègre le courant, un seuil, un reset. Trois paramètres : τ_m, V_th, V_reset.The LIF model (Lapicque): an RC circuit integrating the current, a threshold, a reset. Three parameters: τ_m, V_th, V_reset.
Carver Mead observed that a MOSFET biased below its threshold has a current that is exponential in VGS, an exponential dependence analogous to that of some ion transport mechanisms. Rather than simulating a neuron model on a microcontroller, the idea is to build an analog circuit whose behaviour follows the LIF model (here, for now, in simulation): the capacitor plays the membrane, the leak plays the ionic leak.
Method
La chaîne de simulation : tout est scripté, donc chaque courbe du projet se régénère.The simulation chain: everything is scripted, so every curve in the project can be regenerated.
The neuron model
Modèle de neurone LIF de type axon-hillock de Mead : intégration sur C_mem, deux inverseurs sub-threshold pour la bascule, reset par BS170.Mead axon-hillock LIF neuron model: integration on C_mem, two sub-threshold inverters for the switching, BS170 reset.Neurone axon-hillock au niveau transistor. Mp/Mn : MOS sub-threshold (SUBTH_PMOS / SUBTH_NMOS), reset par BS170 (rouge).Axon-hillock neuron at transistor level. Mp/Mn: sub-threshold MOSFETs (SUBTH_PMOS / SUBTH_NMOS), reset by the BS170 (red).
A Mead axon-hillock: Cmem = 100 pF in parallel with a 200 MΩ leak (τ = 20 ms), two sub-threshold CMOS inverters in cascade, and a BS170 that resets the membrane. It took 4 bug fixes before getting spikes in simulation, including a 100 MΩ parasitic resistor hidden in the SPICE model of the BS170 used, which kept Vm from reaching threshold.
The simulated f-I curve has the expected shape (simulated rheobase of 9 to 10 nA vs 7.5 nA in theory). The gap comes from assuming Vth = VDD/2: the dynamic threshold measured in simulation is 2.08 V, well above the simulated static threshold (1.01 V). A plausible, unverified explanation is capacitive kickback from the reset transistor. With this threshold the gap to theory goes from −21/−35 % to +10/+18 %.
I_inj (nA)
f_sim (Hz)
f théorie, V_th = 1,5 Vf theory, V_th = 1.5 V
ÉcartGap
f théorie, V_th = 2,075 Vf theory, V_th = 2.075 V
ÉcartGap
10
8,47
36,07
−76,5 %
—
—
15
46,73
72,13
−35,2 %
42,50
+10,0 %
20
80,86
106,38
−24,0 %
68,36
+18,3 %
25
107,39
140,18
−23,4 %
93,26
+15,2 %
30
137,19
173,80
−21,1 %
117,82
+16,4 %
Mismatch (Monte-Carlo on model parameters)
These are draws on the SPICE model parameters, not a dispersion measured on real components: the standard deviations are assumptions.
With σ(VT0) = 150 mV (an assumption for discrete MOSFETs) over 30 draws: simulated spread of f of 14 to 19 %, and at 10 nA, 14 draws out of 30 stop spiking.
Also varying I0, κ and the VTO parameter of the reset transistor model (a threshold whose real spread is large, around 0.8 to 3 V according to the datasheet): 2 draws out of 30 stay silent over the whole simulated range. They are the ones with the lowest reset VTO (< 1.5 V in this model). Probable hypothesis: the reset conducts too early and drains the membrane. To be verified experimentally; if confirmed, real BS170s will need sorting.
Hypothèse (à vérifier) pour les 2 tirages silencieux du Monte-Carlo étendu : un reset au V_TO trop bas viderait la membrane en continu.Hypothesis (to be checked) for the 2 silent draws of the extended Monte-Carlo: a reset with too low a V_TO would drain the membrane continuously.
Synapses and interface
Les deux synapses : un seul transistor chacune. L'excitatrice injecte du courant, l'inhibitrice court-circuite la membrane.The two synapses: a single transistor each. The excitatory one injects current, the inhibitory one shorts the membrane.Le monostable peak-and-hold : la diode charge C_hold au passage du spike, R_hold le décharge lentement. Le shaper convertit v_hold en v_pre (PMOS) ou v_gate (NMOS).The peak-and-hold monostable: the diode charges C_hold when the spike passes, R_hold discharges it slowly. The shaper converts v_hold into v_pre (PMOS) or v_gate (NMOS).Principe (non à l'échelle) : un spike de 0,17 µs devient un plateau exploitable de l'ordre de 1 ms.Principle (not to scale): a 0.17 µs spike becomes a usable plateau of about 1 ms.Interface neurone → synapse : sans monostable, la charge injectée par spike est ~7000× trop faible.Neuron → synapse interface: without the monostable, the charge injected per spike is ~7000× too small.
Excitatory (PMOS): ~15 pC per spike in the model, mean current linear with frequency (R² = 1.0 in simulation).
Shunting inhibitory (NMOS): pulls the membrane to ground. Above ~70 Hz of inhibition the neuron model goes silent in this simulation: this is the mechanism used for the soft WTA.
The interface problem: the simulated spike lasts 0.17 µs and reaches 2.03 V, too short for a synapse (~2 fC per spike instead of ~15 pC). No cheating with a huge I0: I added a charge-holding monostable (diode + capacitor + resistor, τ ≈ 1 ms), and the charge per spike goes up to ~92 pC.
The three demos (simulated)
Rate-coding adder: a simulated neuromorphic computation, not a classical digital adder. f3 = 0.62·(f1+f2) − 23, R² = 0.98 on the simulated sweep. The output neuron model spikes more than its mean current predicts: this can be read as fluctuation-driven excitability, which I have not tested beyond simulation.
Soft Winner-Take-All (soft WTA) competition mechanism: at I1 = I2, f1/f2 = 1.000. It rises smoothly from 0.18 to 2.5 with ΔI: it is not a hard switch (nothing in the circuit would give better).
2:1 multiplexer by shunting: a functional proof of concept in simulation, not a complete neuromorphic implementation of a multiplexer. Simulated outputs at 56.6 Hz (channel A) and 19.4 Hz (channel B), ~10 % residual crosstalk, switches in ~72 ms. It needed a 50× stronger shunt, and the simulation revealed a synaptic transmission threshold (≳ 20 nA).
Démo 1 (simulée), additionneur en rate coding (calcul neuromorphique, pas un additionneur numérique) : deux modèles de neurone d'entrée excitent un troisième via deux synapses.Demo 1 (simulated), rate-coding adder (neuromorphic computation, not a digital adder): two input neuron models excite a third one through two synapses.Démo 2 (simulée), compétition de type soft Winner-Take-All : N1 et N2 excitent N_inh, qui les inhibe en retour par un shunt partagé (rouge). Le rapport f₁/f₂ monte de 0,18 à 2,5 avec ΔI : un WTA « doux ».Demo 2 (simulated), soft Winner-Take-All competition: N1 and N2 excite N_inh, which inhibits them back through a shared shunt (red). The f₁/f₂ ratio goes from 0.18 to 2.5 with ΔI: a "soft" WTA.Démo 3 (simulée), preuve de concept de multiplexeur 2:1 : C ferme le canal A, et ferme N_tonic. N_tonic (« not C ») ferme le canal B tant que C est silencieux. Y ≈ A si C = 0, Y ≈ B si C = 1.Demo 3 (simulated), 2:1 multiplexer proof of concept: C closes channel A and silences N_tonic. N_tonic ("not C") closes channel B while C is silent. Y ≈ A if C = 0, Y ≈ B if C = 1.Les 8 phases du projet : les phases 0 à 5 sont faites en simulation, la validation Nengo et la synthèse restent à faire.The 8 project phases: phases 0 to 5 are done in simulation, the Nengo validation and the write-up are still to do.
Next
The results above come from SPICE simulations; experimental validation on a PCB is the next step: characterizing real BS170 / BS250 (the only step that can't be done in simulation), checking the hypothesis on the silent draws, validating the demos with Nengo, then building the physical circuit.