eNI — Neural Interface Platform
1,024 Channels · 30 kHz EEG · Spike Sorting · BCI Ready
A high-density neural signal acquisition and processing platform. Acquires EEG, EMG, ECoG, LFP, and spike trains from up to 1,024 channels simultaneously, applies real-time hardware-accelerated filtering and spike sorting, and delivers structured data to eAI for on-device BCI decoding.
How It Works
Step-by-step flow — from initialization to output.
Configure the Acquisition Pipeline
Select the signal modality (EEG, EMG, ECoG, LFP, spikes) and configure the channel map, sample rate, and hardware filter parameters. eNI supports mixed-modality acquisition — EEG and EMG simultaneously on different channel groups.
eni_config_t cfg = {
.modality = ENI_MOD_EEG | ENI_MOD_EMG,
.eeg_channels = 256,
.emg_channels = 64,
.eeg_fs = 30000, // 30 kHz
.emg_fs = 100000, // 100 kHz
.ref = ENI_REF_AVERAGE,
};
eni_t eni = eni_open(&cfg);Apply Hardware Filters
eNI's FPGA/DSP pipeline applies notch filters (50/60 Hz), bandpass filters, and common-average referencing in hardware — before the data reaches the CPU. This removes the most expensive processing from the software stack.
// Configure hardware filter chain eni_filter_notch(eni, ENI_NOTCH_60HZ); eni_filter_bandpass(eni, 0.5f, 300.0f); // 0.5–300 Hz for EEG eni_filter_car(eni, ENI_CAR_GLOBAL); // Common-average reference
Run Spike Sorting
For extracellular recordings, eNI's hardware spike sorter detects action potentials, extracts waveform features, and clusters them into single-unit activity — all in real time, without CPU involvement.
// Enable hardware spike sorter
eni_spike_config_t sc = {
.threshold_uv = -50.0f, // -50 µV threshold
.window_ms = 1.5f, // 1.5 ms waveform window
.n_clusters = 4, // Up to 4 units per channel
};
eni_spike_enable(eni, &sc);Stream Data to eAI via EIPC
eNI packages filtered signals and spike events into EIPC messages and sends them to the eAI inference task. The EIPC transport adds HMAC-SHA256 integrity and AES-256 encryption — critical for medical-grade data.
// eNI streams to eAI via EIPC
void eni_stream_task(void *arg) {
for (;;) {
eni_frame_t frame;
eni_read(eni, &frame, ENI_WAIT_FOREVER);
eipc_send(eai_port, &frame, sizeof(frame));
}
}Decode Intent with eAI
eAI receives the neural data frame, runs the BCI decoder model, and outputs the decoded motor intent or gesture class. The result is sent via EIPC to the actuator (robotic arm, cursor, stimulator).
// eAI BCI decoder (receives from eNI via EIPC)
void eai_bci_task(void *arg) {
for (;;) {
eni_frame_t frame;
eipc_recv(eni_port, &frame, EOS_WAIT_FOREVER);
eai_tensor_t out = eai_infer_sync(bci_model, frame.eeg);
int intent = eai_argmax(out);
eipc_send(arm_port, &intent, sizeof(intent));
}
}Usage Examples
Real-world scenarios showing eNI in action.
Decoding 64-channel ECoG signals to control a robotic arm with < 10 ms end-to-end latency.
// Motor BCI pipeline: ECoG → eNI → EIPC → eAI → arm
#include <eni/eni.h>
#include <eai/model.h>
#include <eipc/eipc.h>
void bci_pipeline_init(void) {
// Configure eNI for 64-channel ECoG
eni_config_t cfg = {
.modality = ENI_MOD_ECOG,
.eeg_channels = 64,
.eeg_fs = 30000,
};
eni_t eni = eni_open(&cfg);
eni_filter_bandpass(eni, 70.0f, 200.0f); // High-gamma band
// Load motor decoder
eai_model_t decoder = eai_model_load("motor_decoder_v3.eai",
EAI_BACKEND_NPU);
// Stream: eNI → eAI → robotic arm
eni_stream_to_eai(eni, decoder, arm_actuator_port);
}Features
The shape of eNI at a glance.
1,024 Simultaneous Channels
Acquire EEG, EMG, ECoG, LFP, and spike trains from up to 1,024 channels at once.
Hardware Spike Sorter
FPGA-based spike detection, waveform extraction, and clustering — no CPU cycles consumed.
Mixed-Modality Acquisition
EEG and EMG simultaneously on different channel groups with independent sample rates.
Hardware Filter Chain
Notch (50/60 Hz), bandpass, and common-average referencing applied in hardware before CPU.
< 1 ms End-to-End Latency
From electrode to EIPC message in under 1 millisecond — critical for closed-loop BCI.
Medical-Grade Isolation
Patient isolation per IEC 60601-1. Galvanic isolation on all electrode inputs.
Impedance Measurement
Built-in electrode impedance measurement for signal quality monitoring.
Configurable Reference
Global common-average, local bipolar, or custom reference montage.
Role in the EoS Ecosystem
Why eNI matters — and what breaks without it.
eNI is the sensory nervous system of the EoS ecosystem. It bridges the biological world — neurons, muscles, brains — with the digital world of EoS. Without eNI, EoS cannot acquire the high-density biosignals needed for BCI prosthetics, seizure detection, cognitive load monitoring, or neural-controlled interfaces. eNI is the only component in the EoS stack that operates at the boundary between biology and silicon, making it indispensable for the entire eHealth365 and BCI product line.
Depends On
Enables / Powers
Open source on GitHub
MIT licensed and developed in the open. Issues, discussions, and pull requests welcome.
In the EoS stack
eNI is highlighted in the layer below.
Pairs well with
Sibling components that eNI commonly works alongside.
Technical Specifications
| Max Channels | 1,024 simultaneous (EEG + EMG + ECoG mixed) |
| EEG Sample Rate | Up to 30 kHz per channel |
| EMG Sample Rate | Up to 100 kHz per channel |
| ADC Resolution | 24-bit |
| Input Noise | < 1 µVrms (0.5–300 Hz bandwidth) |
| CMRR | > 120 dB |
| Latency | < 1 ms electrode to EIPC message |
| Safety | IEC 60601-1 patient isolation; galvanic isolation on all inputs |
| Interface | SPI / LVDS to host processor; EIPC to eAI |
| License | MIT (software); hardware schematics under CERN-OHL-S |

