

Spiking Pattern Detector is an application of a neuromorphic processing core, implementing a 4-neuron Spiking architecture with fixed-point precision (Q8.8). The system generates an event when the temporal spike response of an input signal matches a user-defined pattern.
The core employs a discretised Leaky Integrate-and-Fire Model with a one-to-one neuron–synapse mapping. Synaptic weights are static, and the design operates without online learning (e.g. STDP).
This architecture serves as a foundation for exploring event-driven computation systems, including:
| Name | Bit Width | Access | Description |
|---|---|---|---|
| Synapse_mem | 64 | R | Stores the values of 4 synaptic weights |
| neuron_state | 64 | R/W | Stores values of membrane potentials for 4 neurons |
| Spike_out | 4 | W | Stores a vector where the nth bit indicates whether the nth neuron spiked or not. |
| Name | Bit Width | Type | Description |
|---|---|---|---|
| s_i | 1 | Input | External spike input vector |
| s_we | 1 | Control | Synapse memory read/write select ( 0 - write, 1 - read) |
| n_we | 1 | Control | Neuron state memory read/write select ( 0 - write, 1 - read) |
| address | 2 | Control | Address bus for synapse/neuron state memory |
| weight | 16 | Data | Bus to transmit synaptic weight data |
| Vsyn | 16 | Data | Internal synaptic current vector |
| mem_current | 16 | Data | Membrane potential vector for current neuron in computation cycle |
| mem_next | 16 | Data | Updated membrane potential vector for current neuron in computation cycle |
| s_o | 1 | Output | Internal spike output vector |
The core neuron model is based on the Leaky Integrate-and-Fire (LIF) formulation, a first-order approximation of neuronal membrane spiking behaviour.
In continuous time, the membrane potential evolves according to:
$ \tau \frac{dV(t)}{dt} = -V(t) + I(t) $
where:
When $V(t)$ exceeds a threshold $V_{th}$, the neuron emits a spike and the membrane potential is reset, similar to real biological neurons.
For digital hardware implementation, the model is discretised in time:
$ V[n+1] = \alpha V[n] + I[n] $
where:
In this design:
For demonstration purposes, the clock frequency has been deliberately set low (2 Hz) to make internal processing observable and to provide insight into system behaviour (e.g. a robotic reflex response).
Due to the state-dependent dynamics of the neurons, the spike response depends on both historical membrane state and current input values. You can experiment with different signals encoded using On-Off Keying (OOK), where logic ‘1’ corresponds to a high input level and ‘0’ to a low level, to observe how input sequences affect spike responses. Higher clock frequencies enable more responsive system behaviour.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | input-switch-N1 | green-led | red-led-p1 |
| 1 | input-switch-N2 | actuator | red-led-p2 |
| 2 | input-switch-N3 | red-led-s1 | red-led-p3 |
| 3 | input-switch-N4 | red-led-s2 | red-led-p4 |
| 4 | input-switch-pulse | red-led-s3 | |
| 5 | input signal | red-led-s4 | |
| 6 | |||
| 7 |