Jump to content

Contributions:RippleADC: Difference between revisions

From BCI2000 Wiki
Nluczak (talk | contribs)
Nluczak (talk | contribs)
Line 14: Line 14:
* 04/29/2025 - Initial version  
* 04/29/2025 - Initial version  
* 06/10/2025 - Added stimulation support
* 06/10/2025 - Added stimulation support
* 11/15/2025 - Added Luciano's Tool, added new important states, and improved Stimulation matrix configuration


===Source Code Revisions===
===Source Code Revisions===

Revision as of 03:35, 18 November 2025

Ripple Neural Interface Processor

RippleADC is a source module that allows for neural recording and stimulation using Ripple's Grapevine Neural Interface Processor. It supports high-channel-count recording and precise electrical stimulation capabilities. See the Ripple site for more information.


Detailed installation instructions

Versioning

Authors

  • Nicholas Luczak (luczak@neurotechcenter org)

Version History

  • 04/29/2025 - Initial version
  • 06/10/2025 - Added stimulation support
  • 11/15/2025 - Added Luciano's Tool, added new important states, and improved Stimulation matrix configuration

Source Code Revisions

  • Initial development: XXXX
  • Tested under: XXXX
  • Known to compile under: XXXX
  • Broken since: --

Source Parameters

These parameters can be found in the "Source" tab of the BCI2000 config window.

Figure 1. The default source parameters for the RippleADC

SourceCh

The total number of digitized and stored channels. This can be set manually or left as "auto" to detect all available channels.

SampleBlockSize

Samples per channel per digitized block. Together with the sampling rate, this parameter determines how often per second data are collected, processed, and feedback is updated.

SamplingRate

The sample rate of the system. Supported rates are:

  • 30,000 Hz (RAW)
  • 15,000 Hz (HiFreq)
  • 2,000 Hz (HiRes/EMG)
  • 1,000 Hz (LFP)

SourceChOffset

Offset for each channel in raw A/D units.

SourceChGain

Gain for each channel in physical units per raw A/D unit (typically µV).

ChannelNames

Names of each channel in the format "FrontendName_ChannelNumber".

SourceChList

List of channels to actually transmit (subset of available channels).

Stimulation Parameters

These parameters can be found in the "Stimulation" tab and in both the BCI2000 config window and the Ripple Stimulation Tool. Parameters are checked and will throw a warning if they exceed device's safety limits or capabilities in both BCI2000 and the Ripple Stimulation Tool.

Figure 2. Stimulation parameters for the RippleADC

StimEnable

Enable/disable stimulation functionality (0 or 1).

Step Size

This parameter defines the amplitude resolution of the stimulator in µA. It indicates the granularity with which the stimulation amplitude may be adjusted. The allowed values depend on the hardware and are typically fixed by the front-end.

Frequency

This parameter defines the frequency of stimulation pulses in Hz. It specifies how many biphasic pulses occur per second during stimulation. Controls the pulse rate within a stimulation train. Higher frequencies produce temporally denser stimulation. Unit: Hz

Amplitude

This parameter defines the stimulation amplitude in mA. It sets the magnitude of the delivered current for each pulse in the stimulation train. Primary determinant of stimulation intensity. Unit: mA

Duration

This parameter defines the total duration of the stimulation train in seconds. It specifies how long stimulation continues once triggered. Unit: s

Burst Length

This parameter defines the length of each stimulation burst in seconds. If burst-mode stimulation is used, pulses are grouped into bursts separated by silent periods.

Unit: s Significance: Controls how long each burst remains active before an interburst pause occurs.

Interburst Length

This parameter defines the silent interval between bursts in milliseconds. Sets the recovery or idle period between active bursts; used to generate patterned or duty-cycled stimulation.

Unit: ms

Pulse Width

This parameter defines the width of each stimulation phase in microseconds (µs). It corresponds to the duration of the main pulse phase. Affects charge delivery per pulse. Unit: µs

Interpulse Width

This parameter defines the interval of time between pulses in microseconds. Controls how tightly pulses are packed in time; together with Pulse Width and Frequency, shapes the temporal profile of stimulation. Unit: µs

Gap Until Next

This parameter defines the delay between this stimulation block and the next block in seconds. Unit: s Significance: Used in multi-step or sequential stimulation programs to introduce timing gaps before the next configured stimulation event.

StimulationTriggers

This parameter defines when stimulation is applied, what pulse is used, how many pulses are applied, and the source and destination locations of the stimulation. These parameters are defined in the rows of this matrix with labels

Device Parameters

DeviceInfo

This parameter cannot be edited and is automatically populated with information returned from the device, including:

  • Processor type
  • Firmware version
  • Network address
  • Available front ends

ConnectionSettings

Advanced TCP/IP connection settings for the Grapevine processor.

States

The states encode auxiliary information about the system status and stimulation events.

Timestamp

16-bit state containing the processor timestamp for each sample block.

StimulusCode

16-bit state that records the amplitude of active stimulation.

StimulusType

16-bit state that indicates stimulation status.

ConnectionStatus

8-bit state reporting the network connection quality.

Technical Details

Supported Front Ends

Front End Type Channels Supported Sampling Rates
Stimulation 32 HiRes (2kHz), HiFreq (15kHz)
Raw 32 LFP (1kHz), HiRes (2kHz), Raw (30kHz)

Stimulation Waveforms

Pulse parameters are converted to Ripple's stimulation command format as described in XippStimCmd.h.

Figure 3. Example monophasic stimulation waveform

Network Protocol

The module uses Ripple's xipplib library to communicate with the Grapevine processor over TCP/IP. All data is transmitted in real-time with timestamps for synchronization.

See also

User Reference:Filters, Contributions:ADCs