Skip to content

iCon Behavioral Control Interface

Overview

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 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 0b0000011
Fall 4 0b0000100
Active 9 0b0001001
Pass 17 0b0010001
Fail 36 0b0100100

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 use 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.

Name the output 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.

Combine Control adds another layer of logic to the output. In the example below, this Stim2 output fires when either it is triggered directly or Stim1 is triggered.

iCon I/O Combine Controls

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.

iCon I/O Right-Click Menu

If you create an I/O that you want to move or copy to a different physical location on the iCon, right-click and use the "Swap with...", "Move to...", or "Copy to..." options. The possible targets for the swap, move, or copy will be highlighted. You can also select a target on a different module within the same iCon.

Click Make Group to combine several inputs or outputs into one entity that share the same settings.

Group Input Options

In this case, Hal Output Port is enabled, so each output in the group gets its own output link automatically.

Group Output Links

The groups can also be accessed in Pynapse as one entity, simplifying programming.

WordIn / WordOut

All input 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. You can choose which bits to include in the word, and whether they are inverted or not, by clicking the bits to cycle the options.

Icon Description
Bit disabled
Bit enabled
Bit inverted

In this example, bits 0 and 1 are enabled (1 = True), bits 2 and 3 are inverted (0 = True), and bits 4-7 are ignored.

WordIn Bits

WordOut has a similar bit mask structure.

WordOut Bits

You can optionally use the OutWord API parameter to set all raw output states with a single integer. You can also control all of the output bits from a gizmo link via "Hal Input". See iL24 outputs for more information.

Pynapse Integration

The iCon can be directly controlled by Pynapse. The same input/output settings are available from within the Pynapse user interface.

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.