Maestro 3.x, the last version of Maestro for 32-bit Windows, is long obsolete and is no longer used in any research labs, AFAIK. For historical purposes, this page contains sections of the user guide specific to Maestro 3.x (or earlier) that no longer apply to Versions 4 and 5. This includes sections of the guide dedicated to the deprecated XYScope display and XYScope target definitions. Maestro 4 lacked hardware support for the XYScope, and Maestro 5 dropped XYScope-specific elements from the user interface.
Operating system: Windows 7, 32-bit version. Maestro 3.x is not supported on earlier Windows versions, nor on the 64-bit version of Windows 7.
RTX: IntervalZero's Real-Time Extension for Windows (32-bit) is required. Maestro's hardware controller runs as a process within the RTX subsystem. Maestro 3.x was built with the RTX2011 software development kit (SDK). The RTX 2011 runtime comes in different versions depending on the number of CPU cores supported. We strongly recommend the RTX 2011 Entry edition, which supports real-time processes running on up to 2 dedicated RTSS processors, with Windows processes running on any remaining cores. This edition should be adequate for a quad-core machine, with RTX configured to run on two cores and Windows on the other two. If you purchase a machine with more than 4 cores (which is overkill as far as running Maestro is concerned), you could go with an RTX 2011 Runtime edition that supports more RTX-dedicated cores, but this really is not necessary and will increase your costs. NOTE that the Solo runtime edition is not recommended, as Maestro may not perform adequately when it must share a single CPU with Windows processes.
Processor: 3GHz+ Intel processor with at least two and preferably four cores. This is pretty much the standard for Windows workstations purchased in 2011 or later. At least 4 cores are required if you plan to use Maestro (version 3.2.0 or later) with the EyeLink 10000+ eye tracker.
RAM: 2-4GB recommended. There's no point in installing more than 4GB, since 32-bit Windows cannot access the additional RAM. While Maestro does not use a lot of system memory, Windows certainly does! Also, Maestro's RTX-based hardware controller must run in the non-paged memory pool, and Microsoft recommends that this pool be kept to a small fraction (5% or less) of the total available system memory.
Hard disk space: 20 GB or more. Required files consume less than 5MB of disk space, but a large area should be reserved for storing files during an experiment. We recommend getting two hard drives, one for the operating system installation and the other for data storage.
*** Recommended plug-in hardware: The National Instruments PCIe-6363 multi-function IO card and the Intel Gigabit CT desktop network adapter. The PCIe-6363 handles analog input, analog output, and digital IO and event timestamping, while the Intel CT adapter provides the Maestro-RMVideo private Ethernet link. Each requires a PCI-Express x1 slot. Other legacy devices are still supported in Maestro 3, but we strongly recommend upgrading to these modern (as of mid-2011) cards. If you choose to use the supported legacy devices, you'll need a workstation with several open PCI slots and at least one ISA slot for the Lisberger Technologies' DIO timer board. If you have a functioning vector oscilloscope for displaying XYScope targets (unlikely!), you'll need the Detroit C6x or Dakar DSP card from Spectrum Signal Processing (however, these cards are no longer available!). Finally, if you will use Maestro with the EyeLink 1000+ eye tracker, you will need a second NIC for the private Ethernet connection to the EyeLink's "Host PC"; the Intel Gigabit CT will suffice for this purpose.
Message-signaled (MSI) vs line-based interrupts: Interrupts are enabled on Maestro's analog input device as well as the network adapter used for communications with RMVideo. Hardware line-based interrupts, or IRQs, are an extremely limited resource on a PC, and one of the most difficult issues to overcome when configuring a computer to run older versions of Maestro was getting device-exclusive IRQ access for both the AI device and the network card. This is no longer an issue in Maestro 3, so long as we use the PCIe-6363 and Intel Gigabit CT network card, which support the message-signaled interrupts.
*** About legacy device support: You will likely find it difficult to purchase a new workstation that can house any of the legacy devices. New Windows PCs lack ISA and conventional PCI slots, which have been replaced by the PCI-Express standard. And when you can find a motherboard that supports conventional PCI, you must ensure it conforms to earlier versions of the PCI specification that include support for 5V-only cards like the Detroit C6x or Dakar DSP cards. Newer motherboards comply with the PCI 2.3 specification, which drops support for 5V-only signaling. Maestro 4.x (see below) drops support for all legacy ISA and PCI boards (hence no support for the XYScope platform).
The primary thrust behind the development and release of Maestro 3.0 was to catch up with advances in Windows/RTX and peripheral hardware. Therefore, we strongly recommend that when you migrate to Maestro 3.0, you also invest in the current recommended peripherals:
PCIe-6363. See above.
Intel Gigabit CT Desktop Adapter. See above. While this adapter supports both MSI and MSI-eXtended modes, be sure to configure it in MSI mode only under RTX2011. In early testing we found that the RTX2011-supplied driver for this adapter, RtE1000.dll, failed frequently if the card was configured in MSI-X mode. 32-bit RTX supports other NICs -- consult the RTX documentation for a list (see document entitled "RTX Supported Network Interface Cards", and be sure to select an NIC that is supported by RTX2011 or earlier).
A second network card is required if you will use Maestro with the EyeLink 1000+ eye tracker. Any modern 100Mbps or 1Gbps network card will do here, as long as Windows 7 supports it.
Detroit C6x (optional). This PCI-based DSP card from Spectrum Signal Processing has been the primary XYScope controller in the Lisberger lab since 2000. It has one 200MHz processing node with a Texas Instruments' TMS320C6201 fixed-point DSP. In addition to its DSP~LINK3 bus interface with the rig's XY video output box, the Detroit motherboard provides the TMS320C6201 with several banks of high-speed RAM, including a bank of 512K x 32-bit global asynchronous SRAM that is shared with a PCI bus interface for communications with the host CPU. Note that the Detroit is out of production and is no longer supported by Spectrum.
Below is a list of various devices that were used in version of Maestro prior to 3.0. They are still supported -- although they have not been fully tested --in Maestro 3.x. All rely on obsolete peripheral buses -- the ISA and PCI standards. Support for these boards was discontinued in Maestro 4.0.
PCI-6070E (formerly PCI-MIO-16E1): A National Instruments 12-bit, 1.25M samples/sec multi-function data acquisition card for the PCI bus. Supports 16 single-ended or 8 differential input channels. The PCI-MIO-16E1 was the only supported AI device in Maestro 1.0 and 2.0. As of 2011, it is two generations out-of-date, more expensive to purchase than its modern replacements, and housed on the fast-disappearing PCI bus.
AT-AO-10: A 12-bit, 10-channel general-purpose AO board for the ISA bus from National Instruments. This was used a lot back in the hey-day of the optic bench targets Fiber1 and Fiber2. Those targets are no longer supported in Maestro 3, and the AT-AO-10 is long obsolete.
PD2-AO-8/16: A 16-bit, 8-channel general-purpose AO board for the PCI bus from United Electronic Industries. Intended as a PCI-based replacement for the AT-AO-10.
Lisberger Technologies' timer board: A 16-input, 16-output timestamping card for the ISA bus. Steve Lisberger designed and manufactured this card to meet Maestro's stringent demands for precise timing of action potentials. It was the "workhorse" DIO event timer for many years in the lab, but it is quite old and no longer available.
M62 DSP: A custom firmware program was developed to emulate the event timestamping and digital output capabilities of the Lisberger timer device on the PCI-based M62 DSP card from Innovative Integration. However, this solution was never adopted in our lab because we were able to continue to find new PCs with an ISA slot for the Lisberger card.
Dakar: The Dakar F5 Carrier board from Spectrum Signal Processing features an embedded TMS320C44 floating-point DSP and can support up to 7 additional C4x processing nodes in TIM40 modules. However, as employed in Maestro, only the baseboard is required. Since the Dakar's processor is significantly slower than that on the Detroit C6x, we recommend that it be used only if the video output box's clock can be set to 1MHz rather than 10MHz.
Other NICs: Theoretically, you should be able to use any network adapter that is officially supported by RTX 2011 We have successfully used these network adapters in past versions of Maestro: 3Com EtherLink 10/100 Mbps PCI Network Interface Card (model numbers 3C905B-TX-NM and 3C905C-TXM); Intel PRO/100+ Management Adapter (8255x chipset); Intel PRO/100 S Adapter (8255x). None of these older cards support message-signaled interrupts, however.
The XYScope video output box (sometimes called the "dotter board") houses the electronics which ultimately drive the X-deflection, Y-deflection, and trigger inputs on the large vector analog oscilloscope on which XYScope targets are displayed. The XYScope controller, implemented on the Detroit C6x DSP card from Spectrum Signal Processing, is responsible for computing dot positions for all targets animated and sending commands to draw every dot. A single "dot draw cycle" involves sending the X and Y coordinates of the dot's position to the video output box. Upon receipt, the video circuit updates the voltages on its X and Y outputs to move the scope's electron beam to the desired position, waits for a short time to allow the beam to settle at the new position, and then raises its trigger output briefly to turn on the beam and "paint" the dot. The controller writes the dot delay and duration parameters to registers in the video output box prior to starting a target animation sequence.
The Detroit C6x is connected to the video output box by a high-density 68-pin ribbon cable conforming to Spectrum's DSP-LINK3 specification. Because data transmission rates are high in order to draw a large number of dots at refresh rates as high as 2 ms, the ribbon cable can only be about 6-12 inches long. Thus, we have to position the video box very close to the Maestro PC. Also, since the Detroit's DSP-LINK3 connector is located on an interior edge of the board, we have to cut a hole in the PC casing and feed the ribbon cable through it to the video box.
Standard coaxial cables are used to connect the BNC outputs of the video box to the relevant inputs on the vector oscilloscope. Both differential and single-ended outputs are available for the X- and Y-deflection signals. Since proper impedance matching is required to maintain signal fidelity, each coaxial cable is generally back-terminated with a series 50-ohm resistor, matching the termination at the monitor end of the cable. This will halve the signal gain, however, which will reduce the maximum beam deflection possible. You will have to make adjustments with the scope's gain controls to get a maximum deflection that uses most of the screen real estate without going beyond its edges.
The introduction of the PCIe-6363 required the addition of a "signal mapper" circuit in the equipment rack. This simple circuit maps the relevant signal lines on the PCIe-6363's two 68-pin connectors to the existing 50-pin ribbon-style analog input connector of the Maestro 2.x-era analog IO interface, and the two 40-pin ribbon connectors for the current digital IO interface. The "signal mapper" circuit has allowed the lab to bring Maestro 3.0 online quickly, without having to redesign these existing AIO and DIO interfaces. [Note that the 50-pin analog output connector of the analog IO interface is no longer used, because Maestro 3.0 only makes use of two analog output (since the fiber optic targets have been deprecated), both of which are available on the 50-pin analog input connector.]
The relevant analog signals are accessible from BNC or banana-plug connectors on the front panel of the AIO interface. Analog inputs and outputs are buffered to protect the PCIe-6363 against electrical surges in the signal conditioning modules, and panel-accessible pots permit fine-tuning the DC offset and gain of the analog outputs. (The DC offset for the analog output driving the Chair servo must be adjusted from time to time to minimize position drift.)
The rack-mounted DIO backplane interface accepts the two 40-pin flat ribbon cables from the signal mapper, one carrying digital inputs and one carrying outputs. The connector pinouts remain compatible with the original DIO event timer board from Lisberger Technologies, so no changes had to be made in the interface to accommodate the PCIe-6363. Up to eight plug-in modules can be inserted into the backplane. A single "TTL input" module provides direct access to the 16 digital inputs; users route marker pulses and other external TTL signals to selected inputs on this module so that they can be timestamped by Maestro. The other modules are controlled by commands on a 16-bit digital output port and handle important functions such as: variable-length reward pulse delivery, the Plexon interface, marker pulse delivery, and the pulse stimulus generator.
The accompanying spreadsheet (above) shows the pinouts for the PCIe-6363's connectors and how the signals are employed in Maestro. In that spreadsheet, the 40-pin digital input connector is labelled "DIO J2", while the 40-pin digital output connector is labelled "DIO J3". The complete pinout for these two connectors is covered in the next section.
While users are strongly encouraged to adopt the recommended hardware configuration, Maestro 3 still supports some legacy hardware used by Maestro 2.x. That hardware includes separate boards for analog input, analog output, and the digital IO event timer. These boards were used with the current version of the DIO backplane interface and an older version of the analog IO interface. To guide those who need to use legacy hardware with Maestro 3, and as a reference for those still using Maestro 2, the spreadsheet below lists the connector pinouts for the older devices.
Digital IO. The spreadsheet lists the digital IO signals relevant to Maestro's DIO event timer function and where they can be found on each of the two legacy devices on which that function was implemented. The original DIO timer -- the SGL Timer from Lisberger Technologies -- is connected to the DIO backplane interface via two 40-pin flat ribbon cables, one for the inputs ("J2") and one for the outputs ("J3"). The current DIO backplane rack was designed in accordance with the SGL Timer's pinout. You will note that, to reduce crosstalk and noise, the individual digital input and output lines on each ribbon cable are alternated with lines connected to digital ground. The M62 Timer uses a DSP to emulate the functionality that is implemented in hardware on the SGL Timer. The M62 board from Innovative Integration has 32 general-purpose digital I/O channels accessible via connector JP14, and the firmware which implements the timestamping function programs the first 16 as inputs and the second 16 as outputs. Furthermore, it uses the OUT line of the on-chip timer 0 to implement the "Data Ready" pulse, available on connector JP31. The easiest way to convert an existing laboratory setup from the SGL Timer to the M62 Emulated Timer is to build an adapter which maps the M62's JP14 and JP31 connectors to the pin layout of the SGL Timer connectors. Doing so avoids possibly more complex and expensive changes to the external rig. The UCSF Dept of Physiology's electronics shop designed and built just such an adapter for the Lisberger lab. This adapter mounts directly onto the M62's JP14 and JP31 connectors, which are located near the middle of the board. On the opposite face of the adapter are the two SGL Timer-compatible 40-pin ribbon connectors for digital input and output. Two ribbon cables are routed out the back of the host computer to the digital I/O interface patch panel in the laboratory rig. For more information on this adapter, contact the lab.
Analog Output. Maestro 2.x used analog outputs to control the trajectories of the animal Chair and the translucent screen targets Fiber1 and Fiber2. As of Maestro 3, the latter two targets are no longer supported, and the only required analog output is the one that drives the Chair servo. There are two legacy AO board still supported in Maestro 3: the AT-AO-10 from National Instruments and the PD2-AO-8 from United Electronic Industries. The AT-AO-10 outputs have 12-bit resolution (+/-10V bipolar, LSB voltage increment = 4.883mV). To achieve the required resolution to control the mirror galvanometers governing the positions of Fiber1 and Fiber2, two AO channels (a "coarse" position signal and a "fine" position signal) were dedicated to each motion axis (horizontal and vertical). An external summing circuit formed a weighted sum (coarse + 10 x fine) of these two outputs to generate the position control signal for each galvo. The external summers are unnecessary when the PD2-AO-8 is used because its analog outputs have 16-bit resolution (LSB voltage increment = 305µV) -- although this was never tested in the field. The spreadsheet includes the relevant dedicated AO signals used by Maestro for each supported device. For complete pinouts, consult the appropriate user manual. Note that the AT-AO-10 has a 50-pin flat ribbon cable that was compatible with an older version of our analog IO interface, while the PD2-AO-8 has a 96-pin connector. Again, the easiest way to convert an existing laboratory setup from the AT-AO-10 to the newer PD2-AO-8 is to design an adapter which maps the relevant signals on the PD2-AO-8's 96-pin connector to the layout of the 50-pin I/O connector on the AT-AO-10. The Lisberger lab has designed a "mapping" adapter for use with the PD2-AO-8; contact the lab if interested.
Analog Input. Maestro 2.x used the PCI-6070E (formerly, PCI-MIO-16E1) multi-function data acquisition board as its analog input device. This card has a 68-pin female high-density I/O connector at the back end. Our laboratory used the National Instrument's 68M-50F MIO cable adapter (part # 184670-01) and a 50-pin ribbon cable to connect the PCI-6070E to the original version of the analog IO rack interface. [NOTE: It has been reported that you can get a PCI-6070E with a male 68-pin I/O connector instead of a female one. In this case, you will need the 68F-50M MIO cable adapter (part# 183139-01), NOT to be confused with the 68F-50M DIO adapter (part# 183139-02). Thanks for that, National Instruments!]
The spreadsheet lists only those signals required by Maestro, with pin numbers matching the 50-pin I/O connector pinout of the 6070E. Consult NI's E-Series User Manual for a complete description of the 68- and 50-pin connector pinouts. Most of the analog input channels are dedicated to recording specific behavioral or neuronal response signals, as indicated. The Fiber1/2 target position feedback signals HTPOS, VTPOS, HTPOS2, and VTPOS2 are available in Maestro 2 but not in Maestro 3, which dropped support for those targets. If an AI channel is "unassigned", then it may be used to record any arbitrary signal at the researcher's discretion. Note that Maestro always configures the PCI-6070E in non-referenced single-ended (NRSE) mode. Thus, the analog IO interface must ensure that the ground returns for all 16 channels are connected to the AISENSE pin rather than AIGND. AIGND itself is usually connected to rack ground. See the E-Series User manual for a detailed discussion of the NRSE, referenced single-ended (RSE), and differential (DIFF) modes of operation.
The TTL output DIO7 on the PCI-6070E is set high while Maestro 2.x is running. The signal was used in some rigs to automatically gate power to the light sources for optic-bench targets Fiber1/2 and REDLED1/2 -- so the researcher would not have to power them on/off manually. It is not available in Maestro 3.
What follows below is a brief technical description of Maestro's XYScope "dotter" board. In lab rigs, this device sits in a small enclosure (~12"x10"x5") directly on top of the Maestro PC, with a short high-density ribbon cable (the DSP-Link interface) connecting it to a Spectrum Signal Processing DSP card (either the Detroit C6x or the Dakar F5) installed in the computer. It has outputs to drive the large vector analog oscilloscope -- the so-called XYScope display -- as well as a second smaller scope that serves a monitor by which the researcher can view what stimuli are being presented to the subject during an experiment. The board was designed and constructed in-house by Ken McGary in the now defunct Electronics Shop of UCSF's Department of Physiology. The technical description was copied from the Electronic Shop's old website.
SGL Project 98-1
XY Video Output Board
(Spectrum DSP daughterboard)
KM 8/12/98
Introduction. This circuit board will obtain parallel digital data (16 bits per axis) to provide two high-speed analog outputs driving the X and Y inputs to one of several large-screen XY monitors.
Digital Input Circuitry. The Spectrum DSP-Link interface provides 32 data and 16 address bits, data and address strobes, read/write line, and interrupt lines to connected DSP-Link slave boards. Combinatorial logic provides address decoding and bus direction control, and a small synchronous state machine implemented in D-latches control the pixel timing control.
The Pixel Draw Sequence. The general pixel draw sequence is:
Write Brite-Up Timing Values
Write XY Position Values
Poll Status Bit Until Pixel Draw sequence is Done
IF timing values are the same for next pixel, return to (2) and do it again; ELSE return to (1) and do it again.
Brite-Up Timing. Two registers control the start and end timing of the brite-up pulse. The start value is written to a 4-bit register that sets the time from the XY data write to the beginning of the brite-up pulse. This is to allow for varying settling times on the different monitors, otherwise streaking and other video artifacts may be visible. The start time may be set from .1 to 1.5 us in 100 ns steps (500ns is a typical monitor settling time).
The end time value is stored in an 8-bit register, and controls the time from the XY data write to the end of the brite-up pulse. The brite-up pulse end time may be set to .1 - 25.5 microseconds in .1 m s increments. Both register values are loaded from the dsp-link bus into byte-wide latches previous to any XY data writes, then pre-loaded into down counters at the beginning of each pixel cycle.
Pixel Location Registers. To minimize the time required to write each new pixel, X and Y values are combined into one bus write cycle, thusly:
X video output level - 16 high-order data bits (D31-16).
Y video output level - 16 low-order data bits (D15-0).
The two highest-order address bits (A15-14) act as a "board select" decode. This board’s high-order address is 00.
Register Table.
After the DSTRB signal is received (indicating a stable address and data bus) and assuming a write cycle (R/W_ is low), the data is latched into the two DACs and the pixel write state machine sequence is initiated. As soon as the brite-up pulse is completed, the Pixel Status Bit (PIX_STAT) is cleared, indicating that another Pixel Draw cycle may be started. Two additional timing status bits are included in the status register (END_STAT and START_STAT).
The DSP-Link Standard bus access sequence is used. The DSP-Link bus is asynchronous to this board’s internal 20 MHz clock, so there will be a maximum pixel draw delay of 50 ns after the completion of the bus cycle.
A digital delay line with 25 ns taps (U22) is used to delay the falling edge of DSTRB, ensuring adequate setup and hold times for the data registers. DST_1 provides the clock for signal TIME_CP (U23A), which latches bus data into the Start and Duration Timer registers, and also for DAC_CK (U23B), which latches bus data into the X and Y DAC’s digital inputs. The inverted DAC_CK pulse (CNT_PL) also preloads the start and duration down counters in anticipation of the upcoming Pixel Draw cycle. Both pulses are ended by DST_3, which occurs 50 ns after DST_1.
The counter preload signal (CNT_PL) and starts the Pixel Draw sequence, generating PIX_STAT (U24A) which on the next 10MHz clock edge enables both start and duration counters (START_CE and END_CE). As soon as the preloaded start time has ended, the start timer’s ripple carry output (START_RC) begins the brite-up pulse (U25B, BRITE_UP). The entire Pixel Draw cycle is ended when the duration timer’s ripple carry (END_RC) occurs, clearing all state machine latches and the PIX_STAT status bit, indicating that another cycle may be started.
The DSP-LINK RESET signal will also clear the Pixel Draw state machine, and should be activated before the first cycle is started and on system power-up. An on-board timer (U26) also provide a power-up reset in case the DSP-Link bus is not connected when the board is powered up. This device also includes a watchdog timer which can be retriggered by either the board clock (10MHz) or by each pixel draw cycle (selected by jumper JWD). This watchdog timer prevents monitor phosphor damage if the timing cycle is somehow corrupted.
SCSI-type line termination is provided for all bus control as required by the DSP-LINK interface standard. This termination may be disabled by grounding the JTERM 2-pin header.
Video output circuitry. The only DAC on the market to provide the combination of 16-bit resolution and <200ns settling time is the AD768 from Analog Devices. Therefore, a pair of these IC's form the analog core of this circuit design. This D/A is a current-output device, producing 10mA full-scale for a nominal ladder reference current of 2.5mA (2.5V & 1000W series reference current resistor). A very high speed voltage-feedback op-amp (AD9631) is used as a differential amplifier for the DAC output buffer circuit. This amplifier’s feedback capacitor neutralizes the pole created by the DAC’s output capacitance and the amplifier’s input capacitance, as well as the circuit board trace parasitic capacitance, estimated at about 15 pF. The capacitor value may require adjustment during final circuit evaluation. With the DAC’s 10mA FS output, and a 100W feedback resistor, the buffer output is +/- 1V.
Another gain stage is used to drive the XY monitor’s coaxial cable, resulting in a +/-2.5V video signal. Since proper impedance matching is crucial to maintaining signal fidelity, the coaxial cable is back-terminated with a series 50W resistor, matching the termination at the monitor end of the cable. Note however that this results in a final monitor signal voltage only half that produced by the cable drive amplifier (+/-1.25V).
Circuitry is provided for both single-ended and differential video transmission. For initial system evaluation and debugging, single-ended 50W coax will be used (JPX and JPY). A shielded differential pair (twinax) may be configured by adding the inverting amplifiers’ outputs to a twisted-pair transmission line (JMX and JMY).
Power supply. A distributed power approach is used to reduce analog/digital noise coupling. A triple output (5V, +/-12V) supply is mounted external but immediately adjacent to the circuit board, and connected via heavy-gauge shielded, twisted pair cable. These power rails are then regulated and filtered locally for both analog and digital sections of the board. A split ground and power plane on the circuit board is joined near the power connector and DAC power pins. Ferrite bead/capacitor filters are used between both analog and digital regulator inputs and the power connector. In addition, each IC's power pin is capacitively bypassed to the ground plane, and some high-power high-speed IC's (oscillator, bus drivers, DAC) have additional ferrite power filters.
Power Supply Current Budget.
Analog +5V: DAC *2 = 80 mA; AD9631 * 6 = 25*6= 150 mA.
Analog –5V: DAC*2 = 150 mA; AD9631*6 = 150mA.
Digital +5V: Clock osc – 60mA; 74F74 x 3 = 45mA; 74F gates x 3 = 30 mA.
SCSI terminator: 280 mA
Monitor Interface. Since the three monitors being used all have different input signal requirements, customized interface boxes at each monitor will convert the nominal +/-1.25V video from the DSP-Link output to the specific signal configurations required by each monitor. This will eliminate any chance of miswiring when moving the unit from one monitor to another. The signal requirements for each display are outlined below:
HP Model 1304A X-Y Display
X,Y inputs are differential (separate BNC for +/-), S/B terminated with 50 ohms, +/-2.5V input range FS , 100mV/division.
Z input is differential, 1-2.5V (1= no trace, 2.5 = full brightness).
TTL Blanking input overrides Z input; S/B terminated w/ <200 ohms.
HP Model 1321B X-Y Display
X,Y inputs are differential or single-ended, isolated BNC for each when terminated w/50 ohms, +/-5V input range.
Z input is single ended, BNC; -1V=BLANK, +1V = max bright.
TTL Blanking Input overrides Z input; high = blank.
XYTRON A21-63 Monitor
X,Y inputs are single-ended, BNC for each, 1K input impedence, +/- 5V input range.
Z input is single-ended, BNC;1K input impedence, 0-2.5V input range 0V=blank, 2.5V=max bright.
NO TTL BLANKING!!!
Maestro 3.x does not come packaged with an installer utility, but setting up the program itself is simply a matter of copying the required files to a selected directory in the host system and making one change in the Windows registry. In order to run experiments, of course, you will need to install the RTX runtime environment and all of the required hardware, but you need not install the drivers for these devices. You must have "Administrator" privileges to perform the installation.
A minimum 3GHz quad-core processor (Intel i5/i7) is recommended, with 2-4GB RAM. You'll need at least two open PCI-Express (PCIe) slots on the motherboard to hold the PCIe-6363 and Intel Gigabit CT network card, plus an open PCI slot for the Detroit C6x (and that slot must conform to PCI specification 2.2 or older; the PCI 2.3 and later specs do not allow 5V-only cards like the Detroit). An additional PCI or PCIe will be needed for a second network card if you will integrate Maestro with the EyeLink tracker. As the older PCI slot is being phased out in favor of the faster and more versatile PCIe standard, you may have to shop around for a vendor that supplies workstations with PCI. Finally, be sure that the 32-bit version of Windows 7 is installed on the system. The current version of RTX (RTX 2011) does not yet support Windows 7 64-bit. If you plan to use any legacy hardware, particularly any ISA-based devices, then you will have to look even harder for a computer to meet your needs. ISA devices are very old; the ISA bus was no longer included in mainstream PCs manufactured after January 2000. However, as recently as Mar 2009 we were able to purchase workstations with PCI and ISA slots from Orbit Micro.
The Hardware Abstraction Layer is a low-level software component through which the operating system communicates with the hardware devices installed in the machine. IRQ assignment and handling is part of the HAL's job. Windows supports a number of different HALs, and the one that is installed on a machine depends on whether the motherboard/chipset sports a standard programmable interrupt controller (PIC) or the newer advanced PIC (APIC), whether or not it supports the Advanced Configuration and Power Interface (ACPI) specification, and whether or not it has multiple processors. The most basic HALs are the "Standard PC" (hal.dll) and "Advanced Configuration and Power Interface (ACPI) PC" (halacpi.dll). These lack support for the APIC (not ACPI! yes, it's confusing!), while the "ACPI Uniprocessor PC" (halaacpi.dll) and "ACPI Multiprocessor PC" (halmacpi.dll) support it. If either of these HALs are installed, you'll potentially have more flexibility with IRQs since the APIC supports up to 24 interrupt lines. The latest HAL and the one you're most likely to see in Windows 7 PCs with multi-core processors is the "ACPI x86-based PC" HAL.
RTX provides a real time-enabled extension to the HAL; it is compatible with all of the standard Windows HALs listed above. We recommend using the "ACPI x86-based PC" HAL, which supports message-signaled interrupts. Avoid the "ACPI Uniprocessor PC" and "ACPI Multiprocessor PC" HALs. While testing a newly configured Maestro 2.x-era machine, we found that an RMVideo trial would consistently abort after 5-7 seconds on a "duplicate frame error". This indicated that Maestro failed to provide frame update information in time to draw the next display frame. While we don't know for sure, we believe this is due to a delay in the RTX TCP-IP stack when the HAL is either "ACPI Uniprocessor PC" or "ACPI Multiprocessor PC"; when we changed the HAL, the problem went away.
To check the HAL, open the Windows Device Manager. Click on the Computer node in the device tree to expose the HAL type. To change the HAL, right-click on the HAL node and select Update Driver from the context menu. The "Hardware Update Wizard" appears. Choose option "No, not this time" and click Next; then choose option "Install from a list or..." and click Next; then choose option "Don't search. I will choose..." and clickNext. In the next stage, make sure the "Show compatible hardware" box is checked; all compatible HALs should then be listed. Choose one of these HALs, if available, in descending order of preference: "ACPI x86-based PC", "Advanced Configuration and Power Interface (ACPI) PC", or "Standard PC". Click Next to install the selected HAL. Click Finish and restart the machine. Upon restart, Windows will complete the HAL conversion and you'll have to restart once more. Be sure to change the HAL before installing RTX. If you discover that you must change the HAL after installing RTX, be sure to uninstall RTX before proceeding.
Follow instructions provided with the RTX runtime package from IntervalZero (formerly known as Ardence, Inc.). As mentioned in the System Requirements section, you'll need an RTX 2011 Runtime license. We recommend the Basic edition, which supports a quad-core processor. There is no need to purchase the far more expensive SDK license, unless you plan to do code development with the RTX software development kit.
After installing RTX, it must be configured appropriately to run Maestro's RTSS driver. Open the System tab on the RTX Properties panel and set the Startup Type to "PnP Automatic" so that the RTX subsystem starts at boot time. On the same tab, open the Behavior Settings dialog and set the HAL Timer Period to 50µs and check the box "Free stack on TerminateThread calls". On the Control tab, verify that two of the available processors are dedicated to RTX, and the rest to Windows (remember, your system should at least be quad-core). On the Starvation tab, configure RTX so that it yields to Windows after a 5-second starvation timeout. Finally, on the TCP/IP tab, be sure to enable the RTX-TCP/IP stack and specify the full path to the configuration file for the network adapter that will connect to RMVideo (see below for details). If your particular installation will not use RMVideo, you can use the default "configuration file" provided by RTX. However, you still must enable TCP/IP support, or Maestro's hardware interface controller (cxdriver.rtss) will fail to load.
[Caveat: The layout and content of the RTX Properties panel changes from version to version. These instructions apply to RTX 2011; you may have to hunt around to find the particular settings in your version.]
Copy Maestro's executable and support files to a selected "home directory" on the local hard drive. The required program files are listed in the side panel and are available for download as a ZIP archive. Unzip the archive and copy the files therein to the designated directory.
IMPORTANT: If you're updating your machine to a new Maestro release, you will likely copy the program files into an existing Maestro home directory, overwriting the files representing a previous release. If you do this, please take care with the RMVideo NIC sample files. Those should NOT be copied, as they are merely templates. The .ini file that pertains to the network card in your machine has been modified so that the "EA" entry is set to the Ethernet address of that particular card. I strongly advise using a different name for this .ini file, rather than one of the names of the NIC sample files listed in the side panel. Users have made this mistake before, and discover that their updated Maestro no longer runs properly!
Using the Windows registry editor (regedt32.exe), store the full pathname of the chosen directory in the REG_SZ-valued registry entry "Home" under the key HKEY_LOCAL_MACHINE\SOFTWARE\HHMI-LisbergerLab\Maestro. Finally, as a convenience to users, create a desktop shortcut to the main application executable, maestro.exe. [NOTE: If you fail to create the registry entry correctly, Maestro might start but it will expect the program files to be in a (hard-coded) default directory, c:\Maestro. If that directory does not exist, the application will be unable to find and start its RTX-based hardware controller. Worse yet, if it does exist but contains the incorrect version of the hardware controller, you'll get some odd behavior!]
maestro.exe : The main application. It runs as a standard, user-mode Win32 process, manages all interactions with the user via a GUI, and communicates with a separate hardware controller over interprocess shared memory. Any convenient desktop shortcuts should point to this executable.
cxdriver.rtss : Maestro's "hardware controller", running as a separate process within the RTX real-time subsystem. Spawned by the main application during startup.
eyelink_core.dll : This library is part of the SDK for the Eyelink 1000+ eye tracker. As of v3.2.0, Maestro requires this library to run, even if the eye tracker will not be used. It is provided as part of the Maestro installation so that it will not be necessary to install the Eyelink SDK separately.
xydetroit.out : Firmware image that implements XYScope controller functionality on the Detroit C6x DSP board. Loaded onto the Detroit during application startup. Optional in systems that do not use the device.
xydakar.out : Firmware image that implements XYScope controller functionality on the Dakar DSP board. Loaded onto the Dakar during application startup. Optional in systems that do not use the device.
m62evtmr.out : Firmware image that implements the event timer & digital I/O functionality on the M62 DSP board. Loaded onto the M62 during application startup. Optional in systems that do not use the device.
rmvideo : The RMVideo executable file. As of version 2.5.1, Maestro can automatically update RMVideo at startup. After opening a session with the RMVideo host, Maestro checks the RMVideo program version. If it does not match the current expected version, it will download this copy of the program, and the currently running RMVideo will replace the old executable image with the file downloaded. Maestro then issues a "restart" command, waits 10 seconds for it to start, then begins a new command session with the updated RMVideo. If this auto-update process fails, you can manually copy this file onto the RMVideo workstation (use a CD or a second Ethernet connection) and restart the program. NOTE: As of v 3.2.1, the "auto-update" feature has been removed and this file is no longer present in the installation ZIP archive.
version.html : A small HTML file that includes version information as well as a link to this online user's guide. It is not required for the installation.
rmvnic_*.ini : Sample RTX TCP-IP configuration files. Use as a template; you'll need to set the Ethernet address field (EA) to reflect the value for your NIC.
Prior to Maestro 3, successfully installing and configuring the AI, AO and other devices in the computer proved to be the most elusive step in getting the program up and running. This is because we had to ensure that the AI board and the network card linked to RMVideo each had exclusive access to an interrupt request (IRQ) line. With IRQs a scarce PC resource, this was often difficult to do. This problem goes away with the advent of devices supporting message-based interrupts (MSI). The currently recommended hardware configuration supports MSI.
Hardware vendors typically recommend that you install their device driver and support software before you install the device itself. You may wish to do so for the PCIe-6363, since National Instruments provides software tools by which you can re-calibrate the analog input and output subsystems of the board, if necessary. Since Windows will find and install most network drivers automatically, there's no need to pre-install a driver for the Intel Gigabit CT or whatever network adapters you use to connect to the RMVideo and EyeLink tracker PCs. Do NOT install device drivers for the Detroit C6x DSP card or any of the still-supported legacy hardware. These drivers can sometimes cause problems; in at least one case, a Windows driver - RTX conflict caused the system to crash when Maestro started up.
Keep in mind that Maestro does not rely on any vendor-supplied device drivers; its RTX hardware controller talks directly to each device using RTX device-management functions. If you install the Windows driver for a Maestro device, you must transfer "ownership" of the device from Windows to RTX so that Maestro's hardware controller (an RTSS process) can communicate with the device without conflicting with the Windows driver. By transferring ownership, you ensure the Windows driver is not loaded at boot time. If you do not install a Windows driver (and Windows does not install one itself), then the device is disabled from Window's point of view, and you may not have to transfer ownership to RTX. [As of v3.2.0, there's one exception to this rule: communications with the EyeLink 1000+ eye tracker uses a network card that remains under Windows control and is handled by a Win32 thread that runs with time-critical priority in Maestro's GUI process.]
Step-by-step for the recommended hardware configuration:
(Optional) Install the device driver and support software for PCIe-6363, if you wish. You will be transferring control of the device from Windows to RTX (see below), so the National Instruments' driver won't be loaded. If, at some later time, you wish to use NI tools to re-calibrate the analog subsystems on the PCIe-6363, you'll need to temporarily transfer device ownership to Windows, perform the calibration, then transfer ownership back to RTX before running Maestro again.
Turn off the computer. Carefully install the PCIe-6363, the Intel Gigabit CT adapter, and -- optionally -- the Detroit C6x. The PCIe-6363 and the network card are installed in PCI-Express x1 slots, while the Detroit requires a PCI slot. If you plan to use Maestro with the EyeLink tracker, you'll need a second network card for that connection. We do this separately (see step 7) because it may be difficult to identify which NIC is which in the Windows Device Manager, especially if they are the same brand.
Turn on the computer. Windows will likely find and load the driver for the Intel network adapter. If you installed the NI driver, the same will be true for the PCIe-6363. If Windows cannot find a driver for any device you added, a "Found New Hardware" wizard may pop up. You can cancel out of this wizard. From Windows' point of view, the device is unavailable.
Transfer ownership of the PCIe-6363 from Windows to RTX. Open the RTX Properties panel. From the Hardware tab, open the PnP Device Settings dialog. In the dialog's tree view, expand the Windows node and look for the entry identifying the PCIe-6363. Right-click on the entry and select Add RTX INF Support. Then click the Apply button. Next, use the push-button on the dialog to open the Windows Device Manager. Find the node for the PCIe-6363 in the Windows device tree, right-click on it, and choose Uninstall from the context menu. The device node will disappear. Now select Action|Scan for hardware changes from the Device Manager's menu. The "Found New Hardware" wizard appears. Select option "No" for the "Can Windows connect to..." question, then hit Next. If Windows finds more than one driver for the device (eg, the Windows driver and the generic RTX INF version), it will ask you to select one. Be sure to select the entry that includes the phrase "RTX Supported". Complete the installation of the RTX driver, then return to the PnP Device Settings dialog and hit the Refresh button. The PCIe-6363 should now be under the RTX node; RTX now "owns" the device. Right-click on the PCIe-6363 node and choose Properties. If installation was successful, the Status message should read "Device is MSI capable and should work properly for message-based interrupts". You do NOT need nor want to obtain a line-based IRQ resource for the PCIe-6363. You may have to reboot the computer at least once to complete this process.
Transfer ownership of the Intel Gigabit CT adapter from Windows to RTX. Add RTX INF support as you did for for the PCIe-6363. Then, instead of uninstalling the adapter, right-click on its node in the Device Manager and select Update Driver Software. In the popup dialog, choose Browse My Computer for Software, then Let me pick, then choose the "RTX Supported" entry from the device driver list. (If you try to uninstall the adapter and then scan for hardware changes as in Step 4, Windows simply reinstalls the original Intel driver and the device is not transferred to RTX ownership.) Like the PCIe-6363, the CT adapter supports MSI.
Configure the RTX TCP/IP subsystem to use the Intel Gigabit CT network adapter. On the TCP/IP tab of the RTX Properties panel, enable RTX TCP/IP support and specify the full path to the .INI configuration file for the Intel CT adapter. This configuration file tells the RTX TCP/IP subsystem which network adapter in the computer should be used and defines a number of driver and protocol parameters. For a full discussion of the configuration file, see the RTX documentation. At the bottom of this page are three examples of actual configuration files for different network adapters that have been used in the Lisberger lab. Some of the key parameters in the configuration file: Driver is the name of the IntervalZero-supplied NIC driver to be used; EA is the unique Ethernet address of the adapter (so RTX TCP/IP can find it in a machine that might have more than one NIC installed); IPAddr is the IP address assigned to the adapter. Regardless the particular NIC installed, IPAddr must be set to 10.1.1.2, which is the only IP address from which RMVideo will accept a client connection. The NIC on the RMVideo side must be assigned the IP address 10.1.1.1. Note that both IP addresses are in an address range reserved for private use; they were chosen precisely for this reason -- they are never routed onto the Internet. It is important that the RMVideo-Maestro link not carry any broadcast garbage coming across the Internet or a local intranet via a second NIC installed in either machine! Finally, for the MSI-capable Intel Gigabit CT adapter, it is important to include the parameters LineBasedOnly=0 and PreferMsi=1. The first ensures that RTX uses message-based interrupts for the Intel CT, and the second ensures that MSI mode is used rather than MSI-eXtended mode. In early testing we found that the IntervalZero-provided RTE1000.dll driver for the Intel CT (and other network cards using the Intel 82574 chip set) failed frequently if the card was used in MSI-X mode. Also for the Intel Gigabit CT, note the priority levels assigned to the timer (66), interrupt (64), and receive (63) threads. These are RTX-specific priority levels, and we recommend that you use these specific values. In any event, they should all be greater than 50, the RTX priority assigned to the main worker thread in Maestro's hardware device controller, cxdriver.rtss.
If you plan to use the EyeLink 1000+ eye tracker with Maestro, you will need to install a second network card for the Ethernet connection to the EyeLink's Host PC. Turn off the computer, install a suitable NIC (such as the Intel Gigabit CT) in an available slot (and label it on the outside of the computer!), and restart. Windows will automatically install the driver for the NIC. However, you'll need to manually set the IP address for that NIC to 100.1.1.2. In Windows 7, go to Control Panel > Network and Internet > Network and Sharing Center. Click on "Change adapter setting", double-click on the network card icon that represents the NIC you just installed, and select the "Properties" button. Select the list item "Internet Protocol Version 4" and click the "Properties" button below the list. In the pop-up dialog, select "Use the following IP address" and enter 100.1.1.2. Enter a subnet mask of 255.255.255.0. Leave the default gateway and all other settings blank. Click "OK" (several times) to save the changes.
If you will use the EyeLink tracker with Maestro, the Maestro workstation will need at least two separate network ports -- one each for the EyeLink and RMVideo connections. You may also want a third network port to connect to your laboratory's local area network (LAN), but beware: When the EyeLink system is streaming raw pupil samples to Maestro during a recording, the processing threads that service the EyeLink network adapter and provide the sample stream to Maestro require regular CPU access on a millisecond-to-millisecond basis.
If you have a third active network port connected to your LAN, the low-level processes that service that port could interrupt timely processing of the EyeLink stream -- especially since a LAN is busy all the time, and you never know when Windows is going to use it to download some updates or such!
Therefore, if you have a third network port connected to a LAN, we recommend that it be disabled whenever you are using Maestro with the EyeLink. We also suggest using a single-port network card for the EyeLink connection; avoid adapters with multiple ports. [These recommendations are based on at least one user's frustrating experience in which Maestro's EyeLink "tracker service" thread repeatedly failed during recording, or Maestro would be unable to connect to the EyeLink at all.]
If you will be using any supported legacy hardware in your Maestro setup, then the basic procedures above still apply. However, if you are using the PCI-6070E for analog input or an RMVideo NIC that does not support message-based interrupts, then you have some extra work to do to ensure that both devices get exclusive access to an IRQ line.
Before installing any hardware, you should go into the system BIOS and disable non-essential motherboard devices such as the USB, serial, and parallel ports. You'll likely have to disable the sound card and the "SMBus controller". You can live without all of these, and disabling them will free up some precious IRQ lines.
Next, install only the PCI-6070E, then reboot the computer and go through the process of transferring device ownership from Windows to RTX. Once RTX has control of the device, and if the system HAL supports the Advanced Configuration and Power Interface (ACPI) standard, you may be able to manually reassign the device to an available IRQ. Right-click on the device entry under the RTX node in the PnP Device Settings dialog and select Properties. If the device is properly configured, the popup dialog will tell you so. If the system is ACPI-compatible, you may be able to change the IRQ line and its disposition (shared or exclusive); otherwise, these widgets are disabled. If you are unable to assign an exclusive IRQ to the board, then you will have try it in different PCI slots until an exclusive IRQ is found. This process typically requires one or more reboots.
Once you've successfully installed the PCI-6070E, then you'll have to go through the same process for the NIC that will connect to RMVideo.
Finally, install all remaining Maestro devices (AO board, XYScope controller DSP card, etc.). After installing the board(s) and rebooting, cancel out of the "Found New Hardware" wizard that should come up when Windows starts. You'll want to disable these devices in the Windows Device Manager; otherwise, the hardware wizard will appear every time you restart the machine. It does not matter if they are disabled in Windows; Maestro's RTX-based driver will still be able to communicate with these boards, and it will disable their interrupts to ensure they do not interfere with the AI or NIC boards. Open the RTX Properties panel and ensure that the PCI-6070E and, if applicable, the RMVideo NIC are still properly configured with exclusive-access IRQs.
Start the program and wait for the main frame window to come up. Open up the Message Log (if it is not already open) and check the startup messages. Ensure all of the boards you installed have been recognized and are available for use. Both Trial and Continuous operational modes should be enabled.
Sample RTX TCP/IP configuration files
3C905B-TX-NM
[TCP/IP]
MemoryInK=256
TimerPriority=61
TickInterval=200
MaxSockets=30
NumStartupEvents=20
[rtnd0]
Driver=RT3C905
IPAddr=10.1.1.2
Netmask=255.255.255.0
EA=000103DCE3DE
InterruptPriority=11
ReceivePriority=10
NumRecvBuffers=16
NumXmitBuffers=16
LatencyRecvUpdated=0
Intel PRO/100 S
[TCP/IP]
MemoryInK=256
TickInterval=200
MaxSockets=30
TimerPriority=61
NumStartupEvents=20
[rtnd0]
Driver=RT8255X
IPAddr=10.1.1.2
Netmask=255.255.255.0
EA=00508B09A652
InterruptPriority=11
ReceivePriority=10
NumRecvBuffers=16
NumXmitBuffers=16
LatencyRecvUpdated=0
Intel Gigabit CT
[TCP/IP]
MemoryInK=256
TickInterval=200
MaxSockets=30
TimerPriority=66
NumStartupEvents=20
[rtnd0]
Driver=RTE1000
IPAddr=10.1.1.2
Netmask=255.255.255.0
EA=001B21C760AA
InterruptPriority=64
ReceivePriority=63
LineBasedOnly=0
PreferMsi=1
NumRecvBuffers=48
NumXmitBuffers=48
LatencyRecvUpdated=0
Maestro's XYScope targets are presented on a large-screen vector oscilloscope. The X-deflection, Y-deflection, and trigger inputs of the scope are driven by a custom-designed video output box which, in turn, is controlled by a DSP card in the Maestro computer. From the application's point of view, the screen of the oscilloscope is treated as a 65536-by-65536 array of "pixel" locations, with the origin at the lower left corner. User-specified targets (which are generally a set of random dot patterns) are stored and animated on the DSP controller with respect to this coordinate system. Targets are animated by sending a sequence of dot locations to the X-Y video output box across a high-speed interface. The analog circuitry therein converts each dot location into the appropriate X and Y voltage commands which will deflect the scope's beam to the appropriate location. It then activates the trigger to turn "on" the beam, thereby painting the dot. The DSP controller passes the trigger timing parameters (delay until trigger activation, trigger "on" time) to the output prior to starting the animation.
See this page for some technical details on the design of the video output box, also known as the XYScope "dotter" board.
Given its versatility, high frame rate (up to 500Hz), and variety of available target types, the XYScope was an important and heavily used target platform in our laboratory for many years. Unfortunately, large-screen analog vector oscilloscopes have long been replaced by digital oscilloscopes, which are unsuited to our work. All of our existing scopes no longer work, and replacements are impossible to find.
As a result, RMVideo is now the only visual stimulus platform in the lab, and Maestro 4 does not offer hardware support for the XYScope (it does retain XYScope target objects and related code in case we can develop an alternative implementation of the display platform in the future).
D, W, H : These settings describe the display geometry for the particular X-Y vector oscilloscope installed in the experiment rig. All are expressed in millimeters and restricted to integer values in [50 .. 5000]. The display geometry is crucial, since Maestro uses it to convert all coordinates expressed in "visual degrees subtended at the eye" to physical display device coordinates. Users should be aware of these basic assumptions behind the coordinate transformations: The display screen is flat (definitely an approximation!) and is oriented such that the line-of-sight vector from the eye intersects the screen plane at a right angle, passing through the screen's center. The origin (0 deg, 0 deg) lies at this central point, and the distance to the eye, D, is measured along the line-of-sight vector.
FOV (Field of View) : This static readout indicates the current visual field of view (in degrees subtended at the eye) spanned by the display screen -- calculated in accordance with the display geometry. The readout is updated whenever one of the parameters D, W, or H is changed.
Dot draw timing : The XYScope controller is a DSP device that drives a custom-designed video output circuitry which, in turn, drives the X, Y and trigger inputs of the oscilloscope. To draw each dot in an XYScope target, the controller must change the X and Y drive voltages to “move” to the dot’s screen location while the electron beam is off, then raise the trigger input to turn on the beam. Each dot draw cycle is thus characterized by a "delay" phase, which gives the updated drive voltages time to settle (otherwise, the dots will have “tails” because the beam is still moving when it is turned on!), and an "on" phase, during which the trigger pulse gates on the beam. The user can adjust the durations of these two phases to some extent to get the best possible performance from the particular oscilloscope in use. The draw cycle Delay can range from [1..15] ticks, and the beam-ON Duration can range from [1..254], so long as the total cycle time does not exceed 255 ticks. Maestro will automatically correct invalid entries. The video output box runs at one of two possible clock speeds, 1MHz or 10MHz, which is selected by an external switch. The slower clock speed may be necessary to drive oscilloscopes with relatively long settling times for the X/Y drive voltages. The clock speed determines the duration of a "tick", 1µs or 100ns. On the Video Display tab the units are not listed – so be aware of what the XYScope video output clock speed is in your rig!
Dot pattern random seed : The XYScope controller uses a simple pseudo-random generator to create the random dot patterns of most XYScope target types. Here the user specifies the seed for that generator. If the Auto-generate radio button is selected, Maestro generates the seed at the beginning of each trial or stimulus run; in this case, since the seed will be different each time, we are guaranteed that the random patterns will be different each time. On the other hand, if the Fixed radio button is chosen, the seed entered in the accompanying numeric edit control will be used every time – which means the random patterns generated will be the same for each repetition of a trial or stimulus run. The edit control admits any nonnegative integer value up to 8 digits long.
The XYScope -- a large-screen, high-performance vector analog oscilloscope -- was once an important target platform in Maestro. A wide variety of visual targets can be presented on this medium, including point-like stimuli and various kinds of extended random-dot patterns. Unlike a CRT monitor, the oscilloscope can be updated at rates as high as 500Hz, and the refresh rate can be specified on a segment-by-segment basis. The high refresh rate made the XYScope the platform of choice for a long time because targets could be modulated at much finer intervals than the typical visual response times in primates.
Unfortunately, the analog vector oscilloscope is a dinosaur as far as technology goes. Production of analog scopes ended in the 1980s in favor of digital oscilloscopes, which do not have the same capabilities. Over time, the Lisberger lab's supply of scopes has dwindled as units began breaking down and could no longer be repaired. It has proven very difficult to find replacements. As of 2011, the lab had only one working scope. Thus, while Maestro 3.0 still supports the display, it is anticipated that the XYScope will be retired within the next several years.
The list below describes the different types of XYScope targets available. Each target type is characterized by several parameters, such as the number of dots in the target, its bounding rectangle, and so forth. When designing experimental protocols, the user will typically define a fair number of different targets, with related targets grouped together as "target sets" under the Targets branch of the experiment document tree.
Many of the extended target types have a dot "pattern" that can move independently of the target's "window". Take the Center target type, for example. In a trial, the user can define the target trajectory variables so that the dot pattern drifts upward while the window remains stationary. The result is a random-dot motion stimulus over an extended area of the visual field. Alternatively, the user could set up the trajectories so that pattern velocity is zero and window velocity is nonzero; the percept in this case is a rectangular-shaped, patterned object moving upward.
Spot/Rect Dot Array : A rectangular array of dots. No target "pattern" associated with this type, all dots move in accordance with the "window" trajectory. Parameters: #dots, width of dot array in degrees, and spacing between dots (both horizontally and vertically) in degrees. Typically the spacing is set to zero, resulting in a point-like target, the intensity of which depends on the number of dots.
Center : Full-screen random-dot pattern visible only inside a rectangular window. Pattern and window can move independently. Parameters: #dots in pattern, window width and height.
Surround : Full-screen random-dot pattern visible only outside a rectangular window. Pattern & window can move independently. Parameters: #dots in pattern, window width and height.
Rectangular Annulus : Full-screen random-dot pattern visible only inside a rectangular annulus. Pattern & window can move independently. Parameters: #dots in pattern, width and height of the inner and outer rectangles that define the annulus; (x,y) coordinates of the inner rectangle (the "hole") relative to the center of the outer bounding rectangle. The offset coordinates are restricted to ensure that the hole is entirely within the outer rectangle.
Optimized Center : Random-dot pattern restricted to a rectangular window. Pattern & window can move independently. Since all dots are restricted to the window, this is a much more efficient implementation than Center. However, it exhibits some animation artifacts at high velocities: the dots tend to aggregate near an edge or corner such that the random dot pattern is no longer uniform. Parameters: #dots in pattern, window width and height.
Opt Center w/Finite Dotlife : Same as Optimized Center, except that each dot in the target is assigned a random "lifetime" before animation begins. When its lifetime expires or it crosses a window edge, the dot is randomly repositioned within the window and its current lifetime is reset to the maximum. Parameters: #dots in pattern, window width and height, and maximum dot lifetime in either degrees traveled or milliseconds elapsed.
Optical Flow Field : Simulates an optic flow field, with randomly-positioned dots moving radially away from or toward a central focus of expansion (FOE). The boundaries of the target window are elliptical rather than rectangular, and each dot moves at a different speed depending upon its radial distance from the FOE. Positive pattern velocities correspond to dot motion toward the FOE. Users must specify an inner as well as outer radius for the flow field, since dots will take "forever" to reach the FOE -- leading to clumping of the pattern around the FOE when the pattern velocity is negative. Implementation has been tweaked to work best for pattern velocities in the range 5-60 deg/sec. Parameters: #dots in pattern, inner and outer radius of flow field.
Oriented Bar/Line : Oriented rectangular bar or thin line of randomly arranged dots. There is no target "pattern" associated with this type; all dots move in accordance with the "window" trajectory. To get a line of dots, set the width of the bar to 0 degrees. Parameters: #dots in pattern, width and height of bar in degrees, and drift axis angle.
Noisy Dots (Direction) : Same as Opt Center w/Finite Dotlife, with the addition of random noise in the motion of individual dots making up the target pattern. Each time the "noise update interval" expires, the direction of each dot is determined by adding an offset -- chosen randomly for each dot -- to the current dot pattern direction. The effect is to introduce directional noise in the target pattern motion without changing the mean direction of motion. Dot direction offsets are chosen from a range [-N..N] deg, where the "noise range limit" N is limited to [0..180]. The larger the value of N, the greater the noise introduced. If N=0 (effectively, no noise), then this target behaves exactly like Opt Center w/Finite Dotlife. Parameters: noise range limit N, noise update interval in milliseconds, #dots in pattern, window width and height, and maximum dot lifetime in either degrees traveled or milliseconds elapsed (note that the finite dotlife feature can be turned off for this target type by setting the dot lifetime to 32767 ms).
Noisy Dots (Speed) : Similar to Noisy Dots (Direction), except that the noise is in the speed, rather than direction, of the individual target dots. You can choose between two algorithms for speed noise generation:
Additive. Each dot's velocity vector magnitude (i.e., speed) is offset by a randomly chosen percentage of the nominal pattern speed: R = Ro + x·Ro / 100. When the "noise update interval" expires, a new value of x is chosen for each dot, with a granularity of 1%, from the range [-N..N], where the "noise range limit" N is limited to [0..300%]. If N=0 (effectively, no noise), then this target behaves exactly like Opt Center w/Finite Dotlife. If N>100, then at least some of the target dots will move in the opposite direction of the "mean" target motion!
Multiplicative. In this case, each dot's speed is given by R = Ro· 2x / E, where x is randomly chosen from the range [-N..N] each time the noise update interval expires (granularity = 0.05). In this case, the noise range limit N is narrowly restricted to [1..7]. The factor E is the expected value of 2x given that x is a uniform random variable over [-N..N] -- so that the mean value of R is approximately Ro over enough iterations.
Parameters: Choice of noise algorithm, noise range limit N, noise update interval in milliseconds, #dots in pattern, window width and height, and maximum dot lifetime in either degrees traveled or milliseconds elapsed (again, the finite dotlife feature can be turned off for this target type by setting the dot lifetime to 32767 ms).
Opt Ctr w/ Coherence : This target is implemented like Optimized Center, but it introduces the notion of "percent coherence". If the target has N % coherence, then on every frame update, every target dot has a N % chance of moving coherently -- i.e., in accordance with the pattern velocity vector for that frame -- and a (100-N) % chance of being randomly repositioned within the target window. The total number of dots painted each frame is always the same. However, at the faster update rates (2-4 ms), there may appear to be more dots. Tests during development of this target class indicated that an XYScope frame period of ~8 ms gives better results. This target is based upon a 1988 J.Neurosci. paper by Newsome & Pare. Parameters: #dots in pattern, %coherence, window width and height.
As of Maestro v2.7.0, pattern velocity is specified in the target window's frame of reference, rather than the display screen's frame of reference. Prior to this version, pattern velocity was specified with respect to the screen for XYScope targets -- so one had to set pattern velocity equal to window velocity to make the pattern stationary with respect to the window.
Prior to Maestro v2.1.2, the speed noise granularity for the additive noise algorithm was 0.1%. Downstream analysis software can check the data file version to see which granularity was in effect. If the file version number is 10 or less, the granularity was 0.1%; if it is 11 or more, the granularity is 1%.
Apparent motion is the perception of motion when a sequence of static images are presented with the appropriate spatial and temporal relationships. By giving the user control over the XYScope frame period on a segment-by-segment basis, a Maestro trial permits studies of apparent motion using the XY oscilloscope display. [Such studies are not possible on the RMVideo display, because CRT monitor refresh rates are not fast enough.] However, for frame periods much greater than 16 ms, a target on the XYScope may exhibit a pronounced flashing effect because it is rendered at the beginning of each frame and decays (phosphor decay) significantly over the remainder of the frame. XYScope target interleaving was introduced to reduce this flashing effect, which can complicate the interpretation of apparent motion studies. When interleaving is engaged, each segment's XYScope frame period, P, is subdivided into N subframes, or interleave slots, of duration P/N where N is the number of XYScope targets to be interleaved. Each interleaved target is drawn during a different subframe; any remaining non-interleaved targets are rendered in the first subframe. Thus, to reduce the flashing effect in an apparent motion trial, the experiment designer creates a "composite" target made up of N identical targets all following the same trajectory. During the trial, each component target is drawn in a different subframe, effectively spreading out the target's rendering over the entire frame period and thereby reducing the flashing effect. To use interleaving, simply set the number of XYScope targets to be interleaved using the #XY Interleaved spinner control. Implementation constraints: If N is the number of targets to be interleaved, then there must be at least N XYScope targets participating in the trial -- not including the Spot/Rect Dot Array target type, which is exempt from interleaving. Each segment's XYScope frame period P must be a multiple of N and the subframe period P/N must be a multiple of the minimum XYScope frame period (2 ms).
The random-dot patterns associated with many XYScope targets are generated by a simple pseudorandom number generator in the XYScope controller's firmware. This generator is seeded with an integer value before generating the dot patterns for all extended XYScope targets participating in a trial. The seed value can be set on the Video Display tab on the mode control panel in most operational modes. However, it is also possible to override the display settings on a trial-by-trial basis via the XY dot seed parameter. This numeric edit control accepts any integer value in the range [-1 ... 999999999]. If the value is -1, it is ignored and the Video Display settings provide the seed. If the value is 0, the seed is randomly generated each time the trial is presented (so the target dot patterns will be different for each trial) -- regardless of the Video Display settings. If the value is positive, then that value is used as the fixed seed for every presentation of that trial (so the target dot patterns are exactly the same for each trial).
[NOTE: The XY dot seed parameter does NOT apply to RMVideo targets that involve a random-dot pattern. Instead, the seed value is part of the RMVideo target's definition.]