How to Present TTL Signals Through the Parallel Port (Windows and Mac)

Inquisit can trigger external devices such as EEG's and pidgeon feeders by sending these devices TTL (Transistor-Transistor Logic) signals through the computer's LPT (parallel) port. Inquisit allows precise control over the the duration and state of the signals, as well as syncronization of signals with visual and audio stimuli presented on a trial.

A TTL signal is a simple 8 bit value that is physically represented as the sequence of high and low voltage states in pins 2 through 9 of the parallel port at a given point in time.

In Inquisit's scripting language, parallel port signals are defined and presented much the same way as visual and audio stimuli. as the signal is represented as an 8 character sequence of 0's and 1's, with 0 corresponding to low and 1 corresponding to high. Port signals are defined within Inquisit using the port element, which can contain 1 or more items that define a specific 8-bit sequence. For example, the following port stimulus consists of a single 8 bit sequence "10101010":

<port mysignal>
/ port = lpt1
/ subport = data
/ items = ("10101010")
</port>

The port attribute specifies which of the two parallel ports to use, LPT1 or LPT2.

The subport attribute specifies whether to use the Data or Control register of the parallel port.

The items attribute specifies a sequene of 8 bits to send to the port.

This port signal can then be presented along with other trial stimuli:

<trial mytrial>
...
/ stimulusframes = [1 = mypicture, mysignal] <br/> ... </trial>

The standard parallel port consists of three address registers commonly referred to as the Data, Status and Control registers. The Data and Control registers are capable of sending output signals. Inquisit supports writing to either the Data and Control registers by defining the subport attribute of the port element. The Status register, on the other hand, supports input signals. Inquisit supports reading from Status register (see inputdevice for details).

TTL signals are specified as a sequence of 8 bits (i.e., a byte of information). The following charts show the mappings between each binary digit specified in the item (e.g., "01001001"), the bit, and their respective DB25 pins for signals send to the Data and Control registers, respectively:

Data Register

Item Bit DB25 Pin
1 7 9
2 6 8
3 5 7
4 4 6
5 3 5
6 2 4
7 1 3
8 0 2

Control Register

1 7 not used
2 6 not used
3 5 not used
4 4 not used
5 3 17
6 2 16 (logic reversed)
7 1 14
8 0 1

Inquisit's parallel port triggering is a generic mechanism for sending any 8-bit TTL signal to any external device capable of receiving. The duration and content of the signals sent by an experiment depends upon the specific device that is listening for those signals. Consult the documentation for your device to understand what kind of signals it expects.

Inquisit includes a parallel port monitoring tool that allows ad hoc sending of TTL signals to the Data and Control registers of either of two parallel ports (LPT1 or LPT2).

Inquisit can also read signals from the parallel port sent from other devices using the pretrialsignal and posttrialsignal commands.

Parallel Port Support for Mac

Although parallel ports have long been sole province of Windows-based PCs, Inquisit extends support to the Mac OS X operating system. A parallel port can be connected to to your Mac Pro, Macbook Pro, or iMac, using Mac's Thunderbolt connector protocal. Specifically, a ExpressCard PCIe parallel port card can be connected to a Thunderbolt to PCIe adapter (e.g. Sonnet Echo Pro ExpressCard PCIe 2.0 Thundebolt Adapter), which can then be plugged into a Mac's Thunderbolt port. Additionally, a standard PCI or PCIe parallel port card can be plugged in directly to the PCI or PCIe slot on a Mac Pro's motherboard.

Importantly, Inquisit is compatible with single function parallel port cards only. Multi-function cards such as those with multiple parallel ports or a mix of parallel and serial ports are not supported.