Skip to content

iCon Behavioral Control Interface


The iCon is a behavioral control interface designed to support easy or complex behavioral experiments. It has interchangeable analog and digital modules to fit the needs of any experimental paradigm. It can control most third-party behavioral chambers. The iCon connects directly to any TDT RZ processor with a DSP-M or optical quad DSP card and is controlled with TDT's Synapse software — resulting in high-bandwidth, precision control of behavioral hardware with real-time signal monitoring and full integration with neural recordings.

The iCon is available with two (iCon2) or four (iCon4) module slots. It is configurable with the following modules:

See the Hardware Manual for information on hardware setup and technical specifications.

Rig Setup

When attached to a DSPM card, the iCon is automatically detected and populated in the Synapse Rig Editor. By default, each iCon is its own object in the Synapse Processing Tree.

Icon detected, Processing Tree with iCon

By default, all iCon submodules are attached to a single iCon object in the Processing Tree. You may wish to logically split modules from their parent iCon and control them independently. For example, if you are running four separate cages with a single iCon4 that has four iH8 modules, you would want them available as individual objects in the Processing Tree for independent control.

Icon configured as four virtual iCons, Processing Tree with four virtual iCons

Logic Input Processor

The iHn inputs, iL24 inputs, iRn inputs, and iMn and iS9 touch sensor inputs are all digital signals (logic TTL) that go through an input processor. The iMn analog inputs first go through an additional analog input processor, see iMn Input Processor below for more details.

Logic Input Options

Logic Input Processor

Debounce is the amount of time the input has to settle before its new state is used. This is useful for lever presses or hardware button presses which can 'bounce' on contact and trigger several rapid artificial events before making solid contact.

You can optionally save epoch timestamp events for each input. An integer code for the event type is stored with the timestamp. See Epoc Storage below for more information.

Duration Testing

The inputs can use built-in duration testing. In this example, the button has to be pressed for 600 ms to get to the 'Active' state, and another 400 ms for it to 'Pass'.

Time to Active not reached by Input.
Pass and Fail not activated.

Time to Active reached by Input, so 'Active' trigger fires.
Time to Pass was not reached by Input, so the 'Fail' trigger fires when Input is released.

Time to Active reached by Input, so 'Active' trigger fires.
Time to Pass also reached by Input, so 'Pass' trigger fires.

Epoc Storage

Epoc events are triggered on the 'rise' event of the input and a timestamp and value of 3 is stored in the data tank. If the input is true for more than 2 samples then the 'fall' event is also timestamped and stored, with a value of 4.

The full state of the input, including duration test results, is captured in the integer code:

b5 b4 b3 b2 b1 b0
Fail Pass Active Fall Rise True

Example values of the epoc event:

Event Value Binary Representation
Rise 3 0x0000011
Fall 4 0x0000100
Active 9 0x0001001
Pass 17 0x0010001
Fail 36 0x0100100

Connect the result of the input processor to other gizmos by enabling the Hal Output Port. You can connect any of these bits, or the integer (word) value, to the output port.

iMn Input Processor

The iMn analog inputs uses an additional input processor before the Logic Input Processor. The entire input processor for the iMn is shown below.

iMn Input Processor

The raw and processed analog signal is available as a Hal output link to optionally view and save the signal. This is useful for debugging the analog processing.

See the iMn Synapse Manual for more information.

Logic Output Processor

Logic Output Options

All outputs are digital signals (logic TTL) that are either turned on/off, triggered for a single sample, or strobed high for a fixed duration.

Set the Name of the output to something that makes sense for your experiment, e.g. 'Reward'.

You can optionally save epoch timestamp events for each output. A timestamp is saved when the output turns on. If the output is high for more than 2 samples then the offset is stored as well.

Triggered Pulse - output stays high for a fixed amount of time. If Duration is 0, this is a single sample. If Duration is greater than 0, use the OutDur API parameter to dynamically set the duration.

The output can be controlled by a Hal Input Port link, setting the OutEnab API parameter, or by clicking the output on the Runtime Monitor.

iMn Output Processor

The iMn uses the signal from the logic output processor to generate an analog waveform. See the iMn Synapse Manual for more information.

Design Interface

Each iCon module's I/O is assigned through buttons on the user interface that match the physical location on the module. If you create an I/O that you want to move to a different physical location on the iCon, right-click and use the "Swap with..." or "Move to..." options. The possible targets for the swap or move will be highlighted. You can also select a target on a different module within the same iCon.

WordIn / WordOut

All inputs states (true, pass, fail, etc) are packed into an integer that is available with the InBits API parameter for each input. The WordIn settings let you pack the raw input states (true/false only, directly from hardware before any processing) into an integer and make it available as an output link that other gizmos can connect to.

The OutWord API parameters lets you set all raw output states with a single integer. The WordOut settings let you optionally control all iHn outputs or iL24 outputs with a single gizmo input.

Pynapse Integration

The iCon can be directly controlled by Pynapse. The same input/output settings are available from within the Pynapse user interface. In this case the WordIn / WordOut are not available.

Runtime Interface

When Runtime Monitor is checked, a user interface appears at runtime.

The iCon Tab shows you the state of the inputs/outputs, and lets you manually trigger the inputs/outputs by clicking them.