IO Card

We use the multifunction IO card Sensoray s626. Each card had 6 programmable counters/timers, 16 AD channels, 4 DA channels, and a good number of DIOs. For managing the resources of the s626 card, or potentially of multiple cards, we use the class S626sManager.

Single robot mode

For a single robot, one needs only 1 S626 Board is necessary. The initialization of the board is performed with the call s626sManager::init("S626single.txt"). This file S626single.txt holds the following information:

1 // Number of Boards
0 // PCI bus board 0
0 // Slot board 0 (Device number)
0 // Board for interrupt timer (-1 for none)
0 // Board for timer
1 // Channel for timer Xa + Xb

After initialization of the robot, we have then the following allocation of the Counter channels:

J5 J4
Chan. # Function Chan. # Function
1A 0 Interrupt Timer 1B 3 TR Counter
2A 1 Timer low 2B 4 Timer High
3A 2 Shoulder Encoder 3B 5 Elbow Encoder

Dual robot mode

For running two robot, two S626 Board is necessary, mostly due to the necessity to have 8 DA output channels. One could duplicate the set up from the single robot setup. However, to only have to connect two of the 4 Counter ports (24 pin) in the breakout box, I usually tend to rearrange the counters, and timers somewhat. For the dual setup, I initialize the two S626cards with the following text file:

2 // Number of Boards
4 // PCI bus board 0
5 // Slot board 0 (Device number)
4 // PCI bus board 1
7 // Slot board 1 (Device number)
0 // Board for interrupt time (-1 for none)
0 // Board for timer
1 // Channel for timer Xa + Xb

Then I initialize the robots and the TR counter, so that I end up with the following allocation:

Board 0:

J5 J4
Chan. # Function Chan. # Function
1A 0 Interrupt Timer 1B 3  
2A 1 Timer low 2B 4 Timer High
3A 2   3B 5  

Board 1:

J5 J4
Chan. # Function Chan. # Function
1A 0   1B 3 TR Counter
2A 1 Shoulder right 2B 4 Shoulder Left
3A 2 Elbow right 3B 5 Elbow Left

However, the text files used for initialization of Boards and robots make the allocation of functions to channels quite versatile and you can easily fit the setup your needs. Remember that the breakout box has to be wired accordingly.

Breakout Box

J4 and J5 (24 pin ribbon cable connectors) have to be connected to the breakout box in both single and double robot mode. Furthermore J1 (50 pin ribbon connector) from one or both boards, which carries the DA, needs to be connected. J1 also carries the 16 AD channels, providing you with increased flexibility to add frocetransducers, EMG, etc.

The pinouts for J1, J4, and J5 can be found in the instruction in the s626 manual.

We utilize one of the counter channels to count the TTL pulse coming from the scanner. The TTL pulses indicate the beginning of each image acquisition. This way, the behavioral paradigm can be synchronized with the the fMRI data acquisition. The counter can deal with TTL pulses as short as 5 microsec.