
A discrete-time first-order kinetic (Markovian) synapse driving a leaky integrate-and-fire membrane.
Receptor state — r, the fraction of open post-synaptic receptors, follows
dr/dt = alpha*(1-r) - beta*r, integrated with the exact closed-form solution
(not forward Euler), so it is stable at any timestep:
r <- r*e^-(alpha+beta) + r_inf*(1 - e^-(alpha+beta))r <- r*e^-betaalpha = 25/256, beta = 56/256, r_inf = alpha/(alpha+beta) = 25/81Membrane — g = g_max * r with g_max = 255/256, I_syn = g * (E_rev - V),
and V integrates I_syn less a linear leak:
I_syn is signed, so it always pulls V toward E_revE_rev above V_threshold = excitatory; below = inhibitory, same pathV > V_threshold fires: spike asserts one cycle, V resets the following
cycle — keeps the crossing observable, and gives a one-cycle refractoryNumerics
r and derivatives unsigned Q0.16; V, E_rev, leak unsigned Q0.8r needs the extra width or a slow tau decays by < ½ LSB of Q0.8 and latchesrst_n low clears r, V, spike and the coefficient chain, so the part
comes out of reset at rest on the default coefficientsui[5:2] and uio_in are unused; uio_oe is tied high, so the bidir bus is
an output at all timesMAT_EXP_SPK, MAT_EXP_NSPK and B_SPK live in a 48-bit shift register.
ui[0] = cfg_din, ui[1] = cfg_shiftMAT_EXP_SPK, MAT_EXP_NSPK, B_SPKcfg_shift high freezes r/V/spike, so a load costs no model time and a
partial word never reaches a live updateMAT_EXP collapses r, zero B_SPK makes the
spike input inert), so it is free as the "never loaded" sentinelui[6] high holds V and forces the driving force to unityuo_out then reports the conductance waveform directlyuo_out = I_syn, Q0.8, unsigned — a negative current reads as 0uio_out = {V[7:1], spike}; bit 0 is the post-synaptic spikeV[0] never leaves the chip, so V reads back only to even Q0.8 codescd test
make -B
make exits 0 even when assertions fail — grep results.xml for failureui[7] high for the cycles a pre-synaptic spike is presentui[6] selects clamped (conductance) vs. unclamped (full dynamics)ui[1:0] at 0 to run on the default coefficientsui_in, so the bidir bus is output at all timesSuite covers: impulse response, continuous drive to steady state, rest
condition, unclamped firing, and the load port both ways — shifting in the
defaults must reproduce the unconfigured trace sample for sample, and
perturbing each of the three fields must move the part of the waveform it
governs. Plots land in test/output/.
None.
Destexhe, A., Mainen, Z. F., & Sejnowski, T. J. (1998). Kinetic models of synaptic transmission. In C. Koch & I. Segev (Eds.), Methods in Neuronal Modeling (2nd ed., pp. 1–25). MIT Press. — the first-order kinetic scheme this design implements.
Rotter, S., & Diesmann, M. (1999). Exact digital simulation of time-invariant linear systems with applications to neuronal modeling. Biological Cybernetics, 81(5–6), 381–402. — the exact discretization used instead of forward Euler.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | cfg_din | I_syn[0] | spike_out |
| 1 | cfg_shift | I_syn[1] | V[1] |
| 2 | I_syn[2] | V[2] | |
| 3 | I_syn[3] | V[3] | |
| 4 | I_syn[4] | V[4] | |
| 5 | I_syn[5] | V[5] | |
| 6 | voltage_clamp | I_syn[6] | V[6] |
| 7 | pre_spike | I_syn[7] | V[7] |