What's New in Software Version Version Version Version Version Version 2.02

Size: px
Start display at page:

Download "What's New in Software Version Version Version Version Version Version 2.02"

Transcription

1 What's New file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hh9EA3.htm Page 1 of 2 What's New in Software Version 2.07 Added the option to selectively read digital inputs only when a strobe event occurs. Added the option to synchronize the spike and strobe event timestamps such that even if spikes undergo a greater amount of processing than strobe events, they are sent out via TCPIP or saved in the data file in the same order in which they are received. February 2012 Version 2.06 Fixed issue related to the digital inputs not working. August 2011 Version 2.05 Windows certified APM-02 driver. Eliminated the possibility of missing received strobes. March 2011 Version 2.04 Fixed serial buffer overflow while data acquisition was temporarily disabled. Fixed inconsistent timestamps for serial data and digital events received at the beginning of a recording or a trial or whenever timers were reset. June 2009 Version 2.03 Implemented a non-linear adaptation of the stimulus artifact/line noise replica that operates under input saturation condition. Implemented multi-byte messaging for the APM serial port. Implemented cancelling of the waveform acquisition in progress when resetting timers though software or hardware, such that waveforms triggered before reset but ending up after the reset will not be recorded any more. This affected a small number of waveforms that happen to be acquired right when timers were reset. Updated the APMReadData Matlab script to allow returning a single LFP vector containing all LFP data on first trial only, which is now the default option when calling the function. January 2009 Version 2.02 Implemented an option to adjust the Spike Acceptance Pulse duration. Implemented an algorithm to delay the Spike Acceptance Pulse duration with a specified amount of time. Timestamps (without waveforms) can be now saved into the data files in Plexon format on a separate event channel. At the same time, they are streamed over TCPIP for online analysis.

2 What's New file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hh9EA3.htm Page 2 of 2 Fixed incorrect voltage calibration displayed at startup. Occasional failure of the firmware upgrade process due to non-hardware causes has been fixed. Additional information has been added to the recorded files: firmware type and version, digital filter settings, adaptive line noise filter on/off, channel's serial number. Fixed missing information (incuding trigger level and discriminator window position) in the data files, when recording in gated mode. August 2008 Version 2.01 A problem with the application not working on a computer that did not have Microsoft Office installed has been fixed. May 2007 Version 2.00 The software version 2.00 supports the new APM hardware version 2. It implements all the functionality of the APM-01, plus a number of other features. Extended number of digital inputs: 16 digital inputs per channel that can be configured as a strobed word (up to 16 bits), individual event inputs, or combined event/strobed inputs. The 16-bit digital inputs come in addition to the standard Gate, Sync and Validate inputs. Line and stimulus artifact suppressor sync signal inputs separate from the event inputs. Enhanced USB communications, using high-speed USB2.0 standard. Increased analog input range, up to +/-10V. August FHC, Inc

3 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 1 of 16 Overview Features System Front Panel Back Panel Multichannel System APM Features Two pre-programmed modes of neural spike discrimination: Slope/Height Window Discrimination detects and records any waveform that passes through a user-defined time/amplitude window. Adaptive (follows changes in waveform shape, such as caused by electrode drift) Template Matching detects and records up to four different spikes based upon their shape. Records LFP (Local Field Potential) data simultaneously with spike data, on the same channel by using selective digital filtering of the raw input signal. Allows user to implement their own detection/processing algorithms. Growing downloadable library of user-contributed algorithms in standard C programming language located at Built-in adaptive stimulus artifact suppression functionality. Adaptive line noise suppression functionality when used with the LSG Line Sync Generator (ordered separately). 64 tap bandpass finite impulse response digital filter with continuously adjustable low-pass and hipass filters. Frequency range of DC to 20kHz. User selectable gain from x1 - x120. Upgradeable firmware through the user-programmable FLASH memory. Trigger on positive/negative signal slope or on peak/valley. Automatic trigger mode aids in searching for units. Real-time advanced signal processing by a dedicated 32 bit Digital Signal Processor (DSP). Up to 48 khz sample frequency fine sampling of the analog signal, 16 bit resolution for input and output. Online waveform display; no additional oscilloscope is required. 16 bit general-purpose digital input port. Onboard high speed USB port for direct connection to PC. No need for add-on PC boards, no interrupt or address conflicts. Multiple data storage options: waveforms and/or timestamps. Data can be saved in several formats for use with standard analysis programs. (Matlab, Neuroexplorer, etc.) Built-in TCP/IP data server allows other applications to retrieve data, and insert digital messages (ex. behavioral data) into the recorded data file. Compact, modular, desktop or rack mountable.

4 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 2 of 16 Multi-channel backplane version available with built-in power and USB HUB's. The APM (Acquisition/Processor Module) is a stand-alone digital neural spike discriminator with integrated digital gain and filtering capabilities. It can be used as a direct replacement for existing analog window discriminators. It can detect any activity within an adjustable time/amplitude "window", or up to 4 individual spikes with template matching per channel. When used with the SCP Single Channel Preamp components, the APM is a complete single channel neural recording system. (please refer to for more information on this system.) All functions of the APM are implemented in the hardware and DSP firmware of the unit. The 32 bit DSP allows real time processing of signals on board, with no data processing performed on the host PC. The flexible architecture of the software allows the user to develop customized algorithms. The userprogrammable FLASH memory allows expansion of basic functionality by a simple firmware upgrade process. A web-based users group is established ( for a free exchange of software, under an open-source policy. Two modes of spike discrimination can be selected: Slope/Height Window Discrimination, or Adaptive Template Matching (ATM). In window discrimination mode, an acceptance window is placed in an area where only relevant waveforms pass through it. Only those waveforms will be recorded. The acceptance parameters (trigger, amplitude etc.) can be changed at any time during the experiment (not allowable in all recording formats). This allows for changes in spike shape due to electrode drift etc. The ATM mode utilizes a user selected spike to build a template of the waveform shape to be recorded. Acceptance criteria settings are fully adjustable. Parameters can be set to make the template adaptive to automatically follow changes in spike shape. Inputs are provided for interfacing with available behavioral systems. Trial Gate, Trial Validate, and Event Input are used when recording in gated mode to record only valid trial sections. A Spike Acceptance TTL level output is provided for recording when any waveform is accepted. Aditionally, 16 general-purpose digital inputs can be configured as strobed word input or as individual event input. Stimulus artifact suppression software option can be used to remove artifacts created by microstimulation of related neurons. Suppression works by building a replica of the artifact, then subtracting it from the recorded signal. Input from the LSG Line Sync Generator accessory (ordered separately) is used with the line noise suppression software option to build a replica of line noise artifacts, then subtract them from the recorded signal. Both line noise and stimulus artifact suppression can be set to adapt to changes in the artifact characteristics. Waveforms are displayed online on the host PC. No additional scopes are required. An analog output of the signal is provided for monitoring (audio or other) or further processing of the conditioned signal. Data is stored on the PC as timestamps, waveforms, or both simultaneously. The host PC's graphical user interface displays the waveform and settings for the selected channel, as well as thumbnail views for all active channels. (Only one channel is used for each APM) The parameters of spike acceptance can be interactively changed at any time during the experiment to compensate for electrode drift, etc. The interface can simultaneously display up to the last 256 triggered waveforms per channel. By using a wideband preamplifier and selective digital filtering performed by the DSP on the raw input data, LFP (Local Field Potential) and spike data can be recorded simultaneously on the same channel. Data can be stored/converted in several formats for use by standard analysis software i.e. Matlab, Neuroexplorer, etc. Acquired data can also be retrieved online over TCPIP networks through the built-in data server. Code samples that retrieve data into Matlab and perform online analyses are provided.

5 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 3 of 16 The APM is designed as a one-channel standalone module, while APC is its multichannel version. Multiple module combinations can be run from a host PC using either the two USB ports commonly found on most PCs or commercially available USB hubs. Additional complimentary neuro/craft modules are available to expand the APM in order to form a complete microelectrode recording and electrophysiological analysis system. A multichannel APC (Acquistion/Processor Channel) system is also available with built in power and USB hubs for larger electrode count recording applications. (please refer to for more information on this system. Illustrative Procedure 1. Install the hardware and software, as described in the Getting Started section (first time only) and power up the APM. Once initialized the USB Status LED will turn green. 2. Start the main APM control application by clicking the APM icon on the host PC. 3. Enter username. Any changes made to the recording parameters during this recording session will be saved under this username. 4. Initiate communication between the APM channel and the host PC by clicking the Select tab in the Channel Select Window. Click the 1 channel button and wait for it to turn green. 5. Enable the record function by clicking the Record tab of the Channel Select Window. Click the 1 channel button and wait for it to turn green. 6. Click the Settings button in the Main User Interface to access and change the Settings dialog box. These settings will be saved under the username entered in step 2, and will not have to be set each time. 7. Adjust the Triggering Threshold Level and Input Gain until a stable, reasonably large signal is displayed. Alternately, the Auto Adjust function can be used to automatically have the APM accomplish this. 8. Adjust the Bandpass Digital Filter settings to narrow the bandwidth of the displayed signal to remove unwanted noise. 9. Adjust, in a drag and drop manner, the Acceptance Window so that only acceptable spikes pass through it (they will turn green). 10. If Slope/Height Discrimination recording mode is used, skip to step If the Adaptive Template Matching recording mode is to be used, adjust the Acceptance Window such that it captures only one spike shape. 12. Click the Templates button to open the template settings dialog box. 13. Enable the template and record function by clicking on the appropriate template buttons. 14. Adjust the settings for the adaptive criteria of the template (the bottom three sliders). 15. Click the Rebuild From Window button to set the template.(a thick colored line defines the template in the Main Waveform Window and also in the Thumbnail Channel Window.) 16. Repeat steps 8 through 13 for up to three more templates. 17. If using the Line Noise Suppression feature, Ensure that the LSG is on and connected to the Line Sing Input on the backpanel or feature connector. 18. For either Line noise or Stimulus artifact suppression, click in the On checkbox to enable. Click Load Replica to start the suppression functionality. Check the On box and adjust the adaptation weight slider to enable the replica to adapt with changes in the artifact. Click Reset Replica at any time to build a new replica. 19. Click the File button in the Main User Interface to set the filename and path where data will

6 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 4 of 16 be collected. 20. Enable data collection by clicking the Recording button in the Main User Interface. Click again to end the recording session at any time. APM Front Panel Connections: Analog Output: 3.5mm mono jack outputs an analog version of the signal converted from the digital output for monitoring (audio, oscilloscope) or further processing. This connector has an analog ground connection. See audio modes configuration dialog for audio monitoring options. Spike Accept Output: 3.5mm mono jack outputs a TTL pulse on acceptance of a waveform. If gated mode is selected, the output is inactive as while gate input is low. See the description of the window discrimination method for more information about the timing of the acceptance pulse. Trial Gate Input: 3.5mm mono jack for TTL input of trial gate (trial start/stop) from behavioral systems. When used, waveforms are recorded on the host computer only while the TTL input to this jack is HIGH. See recording modes description and recording configuration dialog for more information. Trial Validate Input: 3.5mm mono jack for TTL input of trial validate (trial acceptance) from behavioral systems. When selected in software, waveforms are recorded on the host computer only when the TTL input to this jack goes HIGH after the end of a trial. Unvalidated trials are not recorded on the host computer. See recording modes description and recording configuration dialog for more information. Event Input: 3.5mm mono jack for TTL input of event marker from behavioral systems. When used, a HI input to this jack causes an event timestamp to be recorded. See file format description for more information on how event codes are saved in the data file. Analog Input: 3.5mm mono jack for input of low impedance analog signal from preamp. This connector has an analog ground connection. See input configuration dialog for more information.

7 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 5 of 16 Display: USB Status: Tri-color LED indicates status of the USB port. Green: Indicates communication ready to send and receive. Amber: Indicates module is not yet recognized/initialized as an USB device. This happens primarily at startup. LED changes from amber to green when device is recognized/initialized by the host computer. Red: Indicates communication is busy. Spike Acceptance Output: Red LED lights indicating a HIGH TTL pulse is being output through this jack. Four more LED lamps indicate the status of the TTL inputs/outputs. Trial Gate Input: Yellow LED lights indicating a HIGH TTL pulse is being input through this jack. Trial Validate Input: Yellow LED lights indicating a HIGH TTL pulse is being input through this jack. Event Input: Yellow LED lights indicating a HIGH TTL pulse is being input through this jack. On: Green LED indicates power is on. APM Back Panel On/Off: Rocker switch used to activate power. USB: High speed USB 2.0 type B connector for interfacing with host computer. Backward compatible with full speed USB 1.1 Line Sync Input: 3.5mm mono jack for TTL input sync signal from an LSG Line Sync Generator, usef for line noise suppression. See adaptive filters controls in main panel for more information.

8 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 6 of 16 Stim Sync Input: 3.5mm mono jack for TTL input sync signal from a stimulator, used for stimulus artifact suppression. See adaptive filters controls in main panel for more information. Digital Input/Ouptut: 40-pin (2x20) connector providing access to additional 16-bit strobed digital inputs and 16-bit strobed digital outputs. See digital inputs configuration dialog for more information. Pinout 1. Digital Input 0 2. Digital Input 1 3. Digital Input 2 4. Digital Input 3 5. Digital Input 4 6. Digital Input 5 7. Digital Input 6 8. Digital Input 7 9. Digital Input Digital Input Digital Input Digital Input Digital Input Digital Input Digital Input Digital Input Strobe In - When it goes low, the values present on the digital inputs are sent to APM. While maintained low, any change in the digital lines configured as event inputs triggers an event. While maintained high, digital inputs are locked in their last state. 18. Reserved - do not connect 19. Reserved - do not connect 20. Reserved - do not connect 21. Reserved - do not connect 22. Digital Ground 23. Digital Output Digital Output Digital Output Digital Output Digital Output Digital Output Digital Output 6

9 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 7 of Digital Output Digital Output Digital Output Digital Output Digital Output Digital Output Digital Output Digital Output Digital Output Digital Ground 40. Strobe Out - When low, marks stable digital outputs. Goes high while the digital outputs are updated. Serial Port 9-pin D-SUB male connector for receiving data from other devices. It is connected to the APC module in slot 1. Pinout 1. NC Not connected 2. RxD Serial data from mouse/touch panel to ECM 3. TxD Serial data from ECM to mouse/touch panel (when using a mouse, used only for powering it) 4. DTR Data Terminal Ready, positive voltage to mouse/touch panel and reset/detection 5. Signal Ground 6. DSR Data Set Ready 7. RTS Request to Send (when using a mouse, used only for powering it) 8. CTS Clear to Send 9. NC Not connected Shell - Protective Ground Power In: 2.1mm female socket. 12VDC 2A input. Power Out: 2.1mm female socket. 12VDC pass-through outlet for daisy chaining of modules. Accessory Use LSG - Line Sync Generator The LSG is an external device designed for providing digital pulses synchronized with the 50/60 Hz AC power (115/230 V), for use in the APM's line noise suppressor. Based on the digital pulses it receives, the APM builds a replica of the line noise and substracts it from the input signal. The same principle of operation is used for the electrical microstimulation artifact suppression. Please refer to the Reference > Artifact Suppression section of the documentation for more details. Controls and Connections LSG Front Panel: Sync Output: 3.5mm mono jack output of generated synchronization wave for interface with the

10 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 8 of 16 APM Trial Validate Input. Voltage Switch: Slider switch for selecting input voltage level. Shown value indicates line in voltage. (shown is for 115V line voltage.) Display LSG Front Panel: On: Green LED indicates power is on. Controls and Connections LSG Side Panel: 0 I: Rocker switch used to activate power. Line In: IEC C13 type male for line cord connection. Multichannel Preamplifier Please click here to view multichannel preamplifier manual in Adobe PDF format.

11 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 9 of 16 Click here for a quick guide to setting the 12-channel preamplifier jumpers. Multichannel System Although several APM modules can be connected together to a single computer through a USB HUB to form a multichannel system, FHC provides a range of modules/frames specifically designed for building a compact multichannel experimental system. Please contact Technical Services at (207) for additional system information The APC is designed to be used within the PCF Powered Channel Frame. Multiple APC's can be used in the frame for multichannel recording systems of any combination of channels. The layout and functionality of the APC is identical to the stand-alone APM. The UHC USB HUB channel provides USB connectivity to 6 channels of the PCF, using a single link to the host PC. The PSC provides the power to all channels in a frame (up to 12) and hosts the multiplexed analog output from all channels, for audio monitoring. 1" dress panels are available to fill gaps in the frame. Back Panel of the PCF Powered Channel Frame Click to enlarge Power connector. Grounding plug. USB type B connector for connectivity to PC host.

12 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 10 of 16 USB type A connector for daisy-chaining multiple frames. Line Sync Input. This signal is required by the adaptive line noise filter, and can be provided by a LSG unit. Stim Sync Input. This signal is required by the adaptive stimulus artifact suppressor. Analog input connector, 37 pin D-SUB female. Pinout 1. Analog Input 1 2. Analog Input 2 3. Analog Input 3 4. Analog Input 4 5. Analog Input 5 6. Analog Input 6 7. Analog Input 7 8. Analog Input 8 9. Analog Input Analog Input Analog Input Analog Input V analog power supply voltage V analog power supply voltage V analog power supply voltage 16. Analog Ground 17. Analog Ground V analog power supply voltage V analog power supply voltage 20. Analog Ground

13 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 11 of Analog Ground 22. Analog Ground 23. Analog Ground 24. Analog Ground 25. Analog Ground 26. Analog Ground 27. Analog Ground 28. Analog Ground 29. Analog Ground 30. Analog Ground 31. Analog Ground 32. Analog Ground 33. Analog Ground 34. Analog Ground 35. Analog Ground 36. Analog Ground V analog power supply voltage General-purpose digital I/O connector, 37 pin D-SUB female. The pinout and functionality of this connector is compatible with PCF version 1. Pinout 1. Channel 1 Spike Acceptance Pulse Output 2. Channel 2 Spike Acceptance Pulse Output 3. Channel 3 Spike Acceptance Pulse Output 4. Channel 4 Spike Acceptance Pulse Output 5. Channel 5 Spike Acceptance Pulse Output

14 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 12 of Channel 6 Spike Acceptance Pulse Output 7. Channel 7 Spike Acceptance Pulse Output 8. Channel 8 Spike Acceptance Pulse Output 9. Channel 9 Spike Acceptance Pulse Output 10. Channel 10 Spike Acceptance Pulse Output 11. Channel 11 Spike Acceptance Pulse Output 12. Channel 12 Spike Acceptance Pulse Output 13. Gate Input - this is wired to all APC gate inputs 14. Sync Event Input - this is wired to all APC event inputs 15. Channel 1 General Purpose Event Input/Trial Validate Input 16. Channel 2 General Purpose Event Input/Trial Validate Input 17. Channel 3 General Purpose Event Input/Trial Validate Input 18. Channel 4 General Purpose Event Input/Trial Validate Input 19. Channel 5 General Purpose Event Input/Trial Validate Input 20. Digital Ground 21. Digital Ground 22. Digital Ground 23. Digital Ground 24. Digital Ground 25. Digital Ground 26. Digital Ground 27. Digital Ground 28. Digital Ground 29. Digital Ground 30. Digital Ground 31. Channel 12 General Purpose Event Input/Trial Validate Input 32. Channel 11 General Purpose Event Input/Trial Validate Input 33. Channel 10 General Purpose Event Input/Trial Validate Input 34. Channel 9 General Purpose Event Input/Trial Validate Input 35. Channel 8 General Purpose Event Input/Trial Validate Input 36. Channel 7 General Purpose Event Input/Trial Validate Input 37. Channel 6 General Purpose Event Input/Trial Validate Input Each Spike Acceptance Pulse Output on the backpanel is connected through the PCF backplane to the corresponding Spike Accept Output on each front panel APC. By inserting a cable in the APC front panel Spike Accept Output, the signal coming from that APC is routed through the inserted cable, and is disconnected from the back panel connector. The same logic applies to the APC front panel inputs. Any cable inserted in an input connector (for instance in Trial Gate) on the front panel of a channel will disconnect the signal coming from the 37-pin connector on the backplane, for that particular channel. Strobed digital input/output connector, 37 pin D-SUB female. The signals on this connector

15 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 13 of 16 are connected to the APC in slot 1. Pinout 1. Strobe In - When it goes low, the values present on the digital inputs are sent to APM. While maintained low, any change in the digital lines configured as event inputs triggers an event. While maintained high, digital inputs are locked in their last state. 2. Digital Input 0 3. Digital Input 2 4. Digital Input 4 5. Digital Input 6 6. Digital Input 8 7. Digital Input Digital Input Digital Input Reserved 11. Strobe Out - When low, marks stable digital outputs. Goes high while the digital outputs are updated. 12. Digital Output Digital Output Digital Output Digital Output Reserved 17. Reserved 18. Reserved 19. Reserved 20. Digital Ground 21. Digital Input Digital Input 3

16 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 14 of Digital Input Digital Input Digital Input Digital Input Digital Input Digital Input Reserved 30. Digital Ground 31. Digital Output Digital Output Digital Output Digital Output Reserved 36. Reserved 37. Reserved Digital acceptance pulses connector, 50 pin header. Pinout 1. GND 2. GND 3. Channel 1 - Template 1 Acceptance Pulse 4. Channel 1 - Template 2 Acceptance Pulse 5. Channel 1 - Template 3 Acceptance Pulse

17 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 15 of Channel 1 - Template 4 Acceptance Pulse 7. Channel 2 - Template 1 Acceptance Pulse 8. Channel 2 - Template 2 Acceptance Pulse 9. Channel 2 - Template 3 Acceptance Pulse 10. Channel 2 - Template 4 Acceptance Pulse 11. Channel 3 - Template 1 Acceptance Pulse 12. Channel 3 - Template 2 Acceptance Pulse 13. Channel 3 - Template 3 Acceptance Pulse 14. Channel 3 - Template 4 Acceptance Pulse 15. Channel 4 - Template 1 Acceptance Pulse 16. Channel 4 - Template 2 Acceptance Pulse 17. Channel 4 - Template 3 Acceptance Pulse 18. Channel 4 - Template 4 Acceptance Pulse 19. Channel 5 - Template 1 Acceptance Pulse 20. Channel 5 - Template 2 Acceptance Pulse 21. Channel 5 - Template 3 Acceptance Pulse 22. Channel 5 - Template 4 Acceptance Pulse 23. Channel 6 - Template 1 Acceptance Pulse 24. Channel 6 - Template 2 Acceptance Pulse 25. Channel 6 - Template 3 Acceptance Pulse 26. Channel 6 - Template 4 Acceptance Pulse 27. Channel 7 - Template 1 Acceptance Pulse 28. Channel 7 - Template 2 Acceptance Pulse 29. Channel 7 - Template 3 Acceptance Pulse 30. Channel 7 - Template 4 Acceptance Pulse 31. Channel 8 - Template 1 Acceptance Pulse 32. Channel 8 - Template 2 Acceptance Pulse 33. Channel 8 - Template 3 Acceptance Pulse 34. Channel 8 - Template 4 Acceptance Pulse 35. Channel 9 - Template 1 Acceptance Pulse 36. Channel 9 - Template 2 Acceptance Pulse 37. Channel 9 - Template 3 Acceptance Pulse 38. Channel 9 - Template 4 Acceptance Pulse 39. Channel 10 - Template 1 Acceptance Pulse 40. Channel 10 - Template 2 Acceptance Pulse 41. Channel 10 - Template 3 Acceptance Pulse 42. Channel 10 - Template 4 Acceptance Pulse 43. Channel 11 - Template 1 Acceptance Pulse 44. Channel 11 - Template 2 Acceptance Pulse

18 Overview file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF52.htm Page 16 of Channel 11 - Template 3 Acceptance Pulse 46. Channel 11 - Template 4 Acceptance Pulse 47. Channel 12 - Template 1 Acceptance Pulse 48. Channel 12 - Template 2 Acceptance Pulse 49. Channel 12 - Template 3 Acceptance Pulse 50. Channel 12 - Template 4 Acceptance Pulse Serial Port 9-pin D-SUB male connector for receiving data from other devices. It is connected to the APC module in slot 1. Pinout 1. NC Not connected 2. RxD Serial data from mouse/touch panel to ECM 3. TxD Serial data from ECM to mouse/touch panel (when using a mouse, used only for powering it) 4. DTR Data Terminal Ready, positive voltage to mouse/touch panel and reset/detection 5. Signal Ground 6. DSR Data Set Ready 7. RTS Request to Send (when using a mouse, used only for powering it) 8. CTS Clear to Send 9. NC Not connected Shell - Protective Ground

19 Inventory file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF145.htm Page 1 of 6 Inventory Items described in this manual Additional items required for operation Replacement items Optional accessories System configurations Items Described in this Manual Items are included under the following catalog number: 1 ea APM Includes: APM Module A991 Manual Accessory Kit Includes: Power Transfer Cord Software Setup Kit USB 2.0 Cable BNC Adaptor Cables (6ea.) Rubber Feet (4 ea. Use Optional) Additional Items Required For Operation

20 Inventory file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF145.htm Page 2 of 6 The following additional items are ordered separately 1 ea V Desktop Power Supply 1 ea. 55-XXX Line Cord (Country specific see sec of this manual for catalog number) Not Shown: 1 ea. Headstage preamp (ex. FHC # : SCP Single Channel Preamp) Microelectrodes, Electrodes, Pipettes Electrode Positioning System(FHC # , C) Host PC (recommended: Pentium 4 at 1.6 GHz or higher with 512 MB RAM, running Windows XP SP2) Replacement Items Power Transfer Cord BNC Adaptor Cable USB 2.0 Cable Male Phono Patch Cable (used with LSG only) Optional Accessories The following accessories are available:

21 Inventory file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF145.htm Page 3 of SAF Rack Frame for Stand-Alone Modules LSG Line Sync Generator Includes: LSG Male Phono Patch Cable (not shown) Requires: 1 ea. 55-XXX Line Cord (Ordered separately. Country specific see sec of this manual for catalog number) Multichannel APC System Version Shown Includes:

22 Inventory file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF145.htm Page 4 of APC Acquisition/Processor Channel (12ea.) PCF Powered Channel Frame (1 ea.) PSC Power Supply Channel (1 ea.) UHC USB HUB Channel (2 ea.) System Configurations

23 Inventory file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF145.htm Page 5 of 6 A typical system configuration includes the APM module connected through the USB bus to a host PC. The action potentials from neurons, recorded through a microelectrode, are amplified by a headstage (for example an FHC # : SCP), then applied to the analog input of the APM. The processed analog signal, after digital filtering and variable amplification, is available at the analog output for audio monitoring (FHC # Audio Analyzer). Visualization on an oscilloscope is not required. Spike waveforms are visualized on the computer display. The data acquisition can be synchronized with an FHC # ECM Experimental Control Module for integration of experimental data. (Behavioral response

24 Inventory file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhF145.htm Page 6 of 6 information for instance) and for trial validation recordings.an LSG Line Sync Generator can be used to acquire synchronization signal for adaptive suppression of any line noise artifact by the APM software.

25 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 1 of 18 User Interface User Profile Dialog Main Control Panel Channels Window Settings Recording Input Calibration Module Display Auto Adjust Global Continuous TCPIP Templates Window User Profile Dialog Box Profiles allow the user to save all the specific settings for the recording setup under a single name. This eliminates the need for the user to re-enter all the many possible settings at the beginning of every recording session. User profiles also allow the user to store multiple profiles for use in different types of recording situations. This dialog appears every time the APM application is started. All settings for a setup are automatically saved in the Windows registry under the different profile names entered in this box. Under a user profile, all changed setting values will be stored into the windows registry upon exiting the application,. When restarting the application using the same profile, settings from the previous session are restored. Note: You may leave this box blank. A Blank entry behaves exactly like any other user profile. Main Control Panel The graphical user interface for the APM channel(s) contains a main control panel and several sub-windows.

26 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 2 of 18 Click to enlarge User Profile Dialog Box - (Lower Right) Profiles allow the user to save all the specific settings for the recording setup under a single name. This eliminates the need for the user to re-enter all the many possible settings at the beginning of every recording session. User profiles also allow the user to store multiple profiles for use in different types of recording situations. This dialog appears every time the APM application is started.click here for more... Channel Select Window - (Lower Right) This window has a number of functions. At power up, it allows the user to initiate communication between the APM and the host PC. In multichannel systems, the channel select window allows the user to easily change the current channel (the one displayed in the main control panel) by clicking on the appropriate channel button. Under the Record tab, the channel select window allows the user to set the recording status of the associated channel. The Audio tab allows selection of the channels that will provide output for audio monitoring. Click here for more... Thumbnail Channel Windows - (Top Left) These windows are continuously updated as waveform data is acquired and display the incoming waveforms ("spikes"), processed by the respective APM channel. These windows allow the real-time monitoring of all unselected channels, as only one channel can be selected (and displayed in the Waveform Window) at any time. No changes can be made to the discrimination parameters through these windows (the Waveform Window has to be used). They are for viewing purposes only - click to show... Main Waveform Window - (Center) This window displays the currently selected channel, (in the example above channel #1) and allows the user to set the spike window discrimination and triggering parameters for the selected channel - click here for more... Zero-line Adjustment - The slider positioned to the right of the waveform window sets the position of the zero-voltage level in the waveform and thumbnail windows. It is used for display adjustment. Changing its position does not affect the input offset or the values stored in the data file. Click to show... Input Gain - This slider sets the amount of gain applied to the analog input of the selected channel. To adjust the gain up or down, the slider is simply moved right or left, respectively. When the slider is selected, (clicked upon) the actual gain step (in 1.5 db increments from 0dB to 22.5 db) is displayed above it in a small pop up window. The total gain is displayed to the right of the slider. Within the settings dialog, the user can enable an additional fixed gain of 20dB (x 10) and select whether the final gain to the right of the slider is displayed in db's or linear amplification factor. Click to show... Output Gain - This slider sets the amount of gain applied to the analog output of the selected channel. To adjust the gain up or down, the slider is simply moved right or left respectively. When the slider is selected, (clicked upon) the actual gain step (in 1.5 db increments from 0dB to 16.5 db) is displayed above it in a small pop up window. The total gain is displayed to the right of the slider. The output gain has no effect on the displayed waveforms, it only affects the analog/audio output. Click to show... Bandpass Digital Filter - These sliders set the range of frequencies in the input signal that are allowed to pass through the digital filter. They controlled in the same "drag and drop" manner as the Gain control. They can also be clicked on, and moved in increments of 100Hz using the left and right arrow keys. If a finer adjustment is required, one can click on the text displaying the cutoff frequency and enter the exact value in hertz. Only the components of the input signal which pass through the digital bandpass filter (above the low cut, and below the high cut) are displayed or even looked at by the discrimination algorithm. These cutoff frequencies should be set to minimize noise and to eliminate unwanted frequencies within the input signal. Digital filters introduce a delay in the analog signal equal to half the number of taps. In the APM implementation that means a delay of 32 ADC samples. Those who do not wish to have this behavior can disable completely the digital filtering by opening completely the filters, that means setting the lowest frequency to 0 and the highest to 20,000 or the maximum allowable frequency (half the sampling frequency). The delays introduced by the digital

27 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 3 of 18 filter can be particularly important when recording in continuous mode, when sampling frequencies are lower. Click to show... Line Noise and Stimulus Artifact Suppressors - These boxes control the suppression of line noise and stimulus artifacts from the input signal. These suppressors remove unwanted waveforms, or time sequencies, from the input signal, without altering its frequency spectrum. This is achieved by subtracting a replica of the noise or artifact, in synchronization with its source. In fact, any noise source that can provide a synchronization signal can be efficiently eliminated through these cancellation circuits, regardless of its periodicity. The synchronization signals must be TTL-compatible and can be fed to the APM module through the Trial Validate (for the line noise) and Event (for the stimulus artifacts) inputs. When line and stimulus suppressors are active (On box is checked), the basic functionality (i.e. Validate and Event) of these two inputs is disabled, and assigned to the suppressor circuits. An example of periodic noise is waveforms induced through electrical interference by 60/50 Hz power lines or monitor vertical refresh frequencies. An example of aperiodic noise is that induced by electrical microstimulation of the biological tissue in which electrode recording is performed. The noise replica can be built quickly, by simply loading a copy of the input signal into the replica buffer by clicking the Load Replica button. This mode is particularly useful when suppressing the stimulus artifacts, where a short number of training pulses are manually fired by the operator. After a first-time replica is loaded, its shape can be tweaked by enabling its adaptation (Replica Adaptation On box checked) and setting the adaptation weight to non-zero value (adjust the Replica Adaptation Slider position), then manually firing a few more pulses. The replica can be cleared at any time by pressing the Reset Replica button. When removing periodic line noise, that has a high repetition rate (50/60 Hz), this training/learning phase can be skipped by simply allowing the replica to be automatically built from scratch through the replica adaptation process. The replica is built faster when the Replica Adaptation Slider is at its highest value. The replica can be frozen by unchecking the Replica Adaptation On box. The operation of the line noise and stimulus artifact suppressors is identical. The only difference between them is the maximum replica length, which is 4096 ADC samples (85 48 khz sample rate) for the line noise and ADC samples ( khz sample rate) for the stimulus artifacts. The LSG provides the TTL syncronization pulses for line noise suppression by detecting the zero-crossings of the power lines voltage and is ordered separately. Click to show... File - This button brings up a window for selecting the name and location of the file where the acquired data will be stored as well as setting the file format. Settings - This button brings up a window that allows the user to change various module settings - click here for more... Templates - This button brings up a dialog for enabling/disabling and parameter adjustment for the template matching discrimination algorithm. - click here for more... Auto Adjust - When selected, (turns from blue to green when clicked upon) this button puts the triggering threshold on "auto-pilot" based upon a preprogrammed set of incoming spike rates (see description in the section describing the Auto Adjust tab of the Settings dialog). This mode is useful in the pre-recording phase, while searching for a new neuron, when there are large fluctuations in the detected signal. Use of this function while data recording is in progress must be performed with caution, as the trigger level changes result in variable alignment of the waveforms when positive/negative trigger slope is selected. However, when peak/valley triggering is enabled, the waveform is stable regardless of the trigger level position. Spikes/LFP/Clusters - This button sets the thumbnail windows to display either spike waveforms, LFP (Local Field Potential) waveforms or clusters in feature space. The Cluster view shows in form of a scatterplot the projections of the incoming waveforms on the first two principal components - click to show. After switching for the first time to cluster mode, one has to wait for the number of waveforms specifed in the Spikes box, described below, but not less than 20, to be acquired, then press the refresh button to recalculate the eigenvectors/principal components of the signal. Starting that point, the projections of the incoming vaveforms will yield non-zero values. One can press refresh at any time to recalculate the principal components. The choice of spike features to be displayed will be diversified in future software revisions. Click here for more information on PCA. In LFP mode, the continuously sampled data is displayed in the form of a scrolling waveform, similar to the continuous mode display - see Input Settings for more information on LFP. Regardless of thumbnail view, the Waveform Window remains in waveform view to allow for adjustment of the discrimination parameters. The text of the button toggles between "Spikes", "LFP" or "Clusters" depending on the mode. Recording - This button turns the record function on and off. The file format is described in the reference section. Refresh - This button forces a complete refresh or redraw of the aveform window. In order to minimize PC resources needed, the APM graphical user interface application only draws new spikes to the waveform window on each screen update. This can occasionally lead to artifacts from pop-up windows and adjustment of the discrimination settings. When in cluster display mode, pressing the refresh button also recalculates the eigenvectors/principal components of the signal. Spikes - This allows the user to set the number of most recent spikes that are simultaneously displayed in the both the main waveform, and corresponding thumbnail window. This setting affects only the display, and is not related in any way to the discrimination or recording of waveforms - click to show... Samples - This allows the user to set the exact number of ADC samples in a spike waveform (see horizontal zoom controls below for a coarse method of changing the number of spike samples) - click to show... Zoom These buttons allow the user to set the vertical and horizontal display magnification of the window. The vertical zoom does not affect data acquisition. The horizontal zoom sets the waveform window length (number of data points) for both display and recording- click to show... Trigger mode - This determines whether a signal triggers on its peak/valley, or as it goes through the triggering level

28 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 4 of 18 from negative to positive, (passes from below the red line to above) or positive to negative (passes from above the red line to below). When trigger on peak/valley is selected, if trigger line is set to a positive level, the triggering is performed on the peak of the spike, whereas the thrigger level is set to a negative level, the triggering is performed on the valley of the spike. Please note that in peak/valley mode, one or more smaller peaks followed by a larger peak within the same window determines centering the window on the larger peak. Therefore, when setting the trigger level too low, an accidental trigger on the noise would be overriden by a following trigger event on a larger spike. This is a safe recording method, that's insensitive to the misplacements on the trigger level. Also, in auto adjust mode, the spike alignement will not change slightly as the trigger level is automatically adjusted by the software. Please be aware that the spike accept TTL output provides a pulse on all spikes that passed through the discrimination window, regardless on their amplitude. Retriggering and centering refers to the recorded spike waveforms. In the other mode, when triggering on the +/- slope is selected, the window is centered on the first trigger, causing possible misalignment or data loss if trigger level is set too low. A re-triggering mechanism cannot be easily implemented, since the trigger event on slope lacks the signal amplitude information, it aways occurs at the same threshold level. Please refer to the document Setting the trigger level in the reference section for an extensive discussion on such situations and other spike display artifacts. Click to show control... Status Bars - These boxes display information about the communication status, data acquisition statistics, and error messages (i.e. signal overrange, USB communications status, spike rate,an external event like a reward,events, dropped waveforms etc.). The top row displays critical messages related to the input or output going overrange. When such messages are being displayed, the bar flashes red.click to show... Waveform Window This is the main window for displaying the waveform data, triggering level, acceptance window, and pre-trigger settings for the selected channel. It also allows the user to adjust these settings in a simple drag-and-drop way. Click here to load a functional copy of the window. Click to enlarge Waveforms are usually displayed with thin lines having different colors, depending on their acceptance status. Nonaccepted spikes are usually displayed with a dark gray color, while window- or template-accepted spikes are typically displayed with bright colors. Waveforms that have been accepted as matching different templates are shown with the same color as the template. The displayed colors can be changed in the settings dialog and in the templates dialog. Templates are displayed with thicker lines having different colors, depending on the template number (up to 4 templates can be discriminated against simultaneously). The horizontal red line represents the voltage Triggering Level. The voltage triggering level threshold is changed by moving the line in a drag-and-drop manner. Click here for a detailed discussion on how to optimally set the trigger level position. Trigger Delay is the small circle on the triggering level line. It represents the point where an event causing a waveform acquisition is triggered. It allows drag-and-drop mouse input to set a new trigger delay value. The interval elapsed from the window start to this point is sometimes called the pre-trigger interval. The Acceptance Window is the vertical white line. It can be repositioned anywhere on the screen by using drag-and-drop mouse input. The size of the window is changed by mouse-dragging its ends (represented as small circles). Whenever a waveform passes through this window, it is considered accepted (when not using template matching mode). In template matching mode, it is used to select a waveform for constructing a new template. A grid is displayed with dark gray lines. It can be activated/deactivated in the display page of the settings dialog. The grid implements a variable spacing for accommodating the fractional gain step of 1.5 db (approx. x1.1885) of the programmable gain amplifier of the ADC. See remarks for a detailed discussion. The time and voltage calibration settings scale indicators are displayed in the top-right corner of the window. They are

29 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 5 of 18 expressed in volts/division for the vertical axis and seconds/division for the horizontal axis. Their display can be activated/deactivated in the display page of the settings dialog. Remarks The ADC in the APC modules provide a programmable gain in the range 0 to 42.5 db (ampification factor x1 to approx x133) with a relatively fine step of 1.5 db (approx x1.1885). With this gain step, a fixed display grid on the vertical axis would correspond to fractional values of microvolts/millivolts per division very difficult to read. For instance, assuming that a gain of 0 db (x1) would correspond to 100 mv/div, increasing the gain to 1.5dB (x1.1885) would result in a displayed voltage scale of millivolts. This would make a quick evaluation of the signal amplitude very difficult. It is much easier for humans to operate with multiples of ten, as well as halves and quarters of these multiples. A user-friendly voltage scale progression would follow the ratios 1:2:4 (ones, halves, quarters), for instance 100, 50, 25, 10, 5, 2.5, 1... mv/div. To accommodate both the small fractional gain and friendly voltage scale display, a variable grid has been implemented. When changing the gain, the grid will adjust its extent on screen to reflect the change in the signal amplitude while matching the easy to read values in a 1:2:4 progression. For instance, increasing the gain by just one step would increase the grid spacing by and preserve the initial scale display of 100 mv/div. It is only after 4 gain steps (x1.9953) when the display scale could be switched to 50 mv/div, and the grid spacing restored to nearly its original value. It is important for the user to understand that this variable grid is implemented in order to facilitate the reading of the voltage amplitude of the input signal when a quasi-continuous (fine step) gain is provided. Channel Select Window This window has a number of different functions. Under the Select tab, channels can be activated for viewing and adjusting parameters, in the main control panel.the APM is a single channel device, therefore only channel 1 will be activated. The default number of channels in the program is 12. The number of channel buttons available can be adjusted within the Input tab of the Settings dialog box. The color of the channel buttons indicate the channel status, as follows: black - Channel is reset yellow - USB communication was successfully opened, but the APM module has not yet acknowledged that it is working properly. Note: clicking on a channel while in "yellow" state will place it into error state, it will then issue a software reset command when clicked again. In the case of large amounts of data waiting in the communication buffer, please give the module a few seconds to drain the data buffers and acknowledge the configuration commands, before attempting to issue a software reset. blue USB communication is OK cyan - Channel is configured and running green - Channel is selected in the main window red - Channel error By clicking on the Record tab,the user has a handy way of enabling recording and toggling between recording timestamps and/or waveforms for each channel, when recording is enabled in the main panel. This way data can be saved in the datafiles only for the channels providing relevant information, and can be disabled totally for the other channels. Moreover, the user can add or remove channels at any time during recording, without having to restart or interrupt data collection.the same recording settings can be accessed in the Recording tab of the Settings dialog box. The color code for the recording mode is: black - Channel is not selected for recording blue - Channel records timestamps only. This mode is missing when running in NEX compatibility mode (see description of the recording page in settings dialog box section) green - Channel records timestamps and/or waveforms. Only waveforms (without timestamp records) are saved when NEX compatibility mode is selected The Audio tab allows the user to selectively enable channels for audio monitoring output. In single channel systems the analog output can be used for audio monitoring purposes. black - Audio output is not enabled green - Audio output is enabled

30 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 6 of 18 Settings The settings dialog consists of a channel selection drop-down list and several tabs for property pages. Settings displayed on any of the dialog pages refer to the currently selected channel. The channel dropdown menu allows the user to select other channels without closing the settings dialog and selecting a different channel in the channel select window. Physical Slot selects in which physical slot of a multichannel rack (PCF) the selected module is inserted in. This allows flexible configurations for the logical channels versus physical channels. Recording Tab - sets various data recording parameters. Click for details... Analog Input Tab - sets input type (continuous/waveforms), range, gain and sampling frequency. Calibration Tab - allows (re)calibrating the module input. Module Tab - information about the module serial number, firmware type and version. Allows a firmware upgrade. Display Tab - selects colors and other display options. Auto Adjust Tab - selects the parameters for the automatic triggering threshold adjustment. Audio Mode Tab - selects the analog/audio output mode. Global Tab - changes the number of channels in a system and applies the settings for the current channel to all channels or resets all channel options to defaults. Continuous/LFP Tab - changes settings for the continuous mode and LFP data acquisition. Digital Input Tab - changes settings for the 16-bit digital input port. TCPIP Tab - changes settings for the TCPIP message and data servers that allow remote clients to send/receive data through the network. PC Serial Tab - changes settings for the serial message server that allows remote clients to send user data through computer's serial communication ports. APM Serial Tab - changes settings for the APM serial that allows recording of timestamped serial data through APM's serial port. Recording Settings Various data recording parameters can be changed through this property page.

31 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 7 of 18 Timestamps are records of the time when the spikes were accepted based upon the discrimination criteria (i.e. triggering threshold and slope, window time and levels) only. Selecting Waveforms allows the user to record the spike waveforms, as shown on the screen, along with the time stamps. If the user does not plan to do any further offline sorting of the recorded data, recording timestamps only is all that is required for data collection. The amount of data stored in the data files is minimized to the essential information of spike occurance. However, recording full waveforms allows off-line sorting, using a specialized spike sorting application at a later time. Recording full waveforms allows off-line sorting, using a specialized spike sorting application. These options do not exclude each other, since the information is stored as different records in the data file. The user may find it useful to record both time stamp data and waveform + timestamp data, even if a certain degree of redundancy occurs (storing the timestamps twice; once in the timestamps records and once in the waveform records). This may be the case when recording fast spiking neurons while using long waveform windows. In this case it's a non-null probability that a second spike may occur within the same waveform timewindow - click here for an example. In this situation if waveforms only are saved, the data recorded would consist of only one waveform, having the timestamp "Timestamp 1". If times stamps are saved in addition, both values "Timestamp 1" and "Timestamp 2" will be stored in the data file. In a more technical description, the trigger/window detection re-arms at each trigger level crossing (two crossings with the selected positive slope in our example), whereas waveform recording re-arms after a full waveform has been acquired. Although the example shown here is quite unusual in practice, it is useful for giving an insight on the difference between the timestamp and waveform recording modes. A more common situation is when the triggering level is set too low (too close to the zero line). In this scenario, there are a lot of waveforms whose acquisition is triggered by noise, and actual neural spikes occur sometime during the noise-triggered waveforms - click here for an example. In such situations, the waveform will be marked as unaccepted, and its timestamp will be different than one of the neural spikes. However, the timestamps record will reflect the real spike, since the timestamp detection process runs continuously in background, and does not wait for a waveform to be completely acquired before getting the next one. In other words, waveforms can be obtained by "chopping" the input data into non-overlaping "chunks". The situation described here would require overlapping data "chunks" to reflect two nearby noise- and spike-triggered waveforms, which is not possible. The NEX compatibility checkbox allows the user to save the data in a format that allows later processing using the NeuroexplorerTM software package, as well as other applications that share the same PlexonTM data file format. Below are a number of restrictions required for NEX compatibility: a) the waveform length cannot be larger than 56 samples; b) the waveform length and trigger time position has to be the same for all channels; c) some of the recording parameters cannot be adjusted during recording: waveform length, trigger level, trigger delay, trigger slope and input gain. This is due to the intrinsic differences in the APM and PLX file formats. While saving data in the PLX format, the parameters of the recording are stored in the file header and are assumed to remain constant during the entire recording, the APM file format has no fixed headers, but instead stores a record for each parameter change, in a serial way. Therefore, using the APM file format, the user is not only able to read the recorded data, but also to reconstruct the history of the settings during recording. This can be particularly useful in situations where the neural signal is not perfectly stable throughout the recording session. If the isolation of a unit gets poorer over time (the signal fades away), the user can adjust the gain or trigger level to compensate for the decrease in amplitude. Also if the shape of the action potentials changes, by becoming sharper or blunter, the user can move and/or extend the time window to keep the unit isolated. The file settings allow saving the data in a single file or in multiple trial files. If multiple trial files are selected, a four-digit trial index is appended to the original file name. For example, selecting MyRec.apm in the main control panel File dialog, would result in files named MyRec.apm.0000, MyRec.apm.0001 and so on. A trial is defined by the duration that the "Trial Gate" input is high, when the "Gated Mode" checkbox is selected, or by the time the "Recording" button in the main control panel is active in nongated mode. For instance, in non-gated mode, the user can toggle the recording button on and off several times. Each time it's enabled (green), data will be saved in a separate data file whose four-digit suffix is automatically incremented, without having to go through the File dialog to select a different file name for each trial. When the "Single Data File" checkbox is selected, the data is stored under the original filename, and each trial is appended to the end of the existing data file When gated mode is enabled and "reset timers" is checked, all the timestamps in the data file are relative to the trial start (the modules' time counters are reset at the beginning of each trial when the "Trial Gate" input goes high). This is the default operation mode prior to software release 1.63, when "reset timers" option was not implemented. When "reset timers" is

32 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 8 of 18 unchecked, the APM timers keep being incremented over successive trials, being reset at the beginning of the recording only - click here for more... The APM implements a method for validating trials using an external signal connected to the "Trial Validate" digital input. If at the end of the trial the "Trial Validate" signal goes high, the data for the last trial is saved to the data file. Otherwise, it is discarded. Checking the "Keep Invalid Trials" checkbox tells the APM application to save the trial data regardless of the trial validation input state. It makes sense to use this option only when the trials are externally gated using the "Trial Gate" input - click here for more... As probably already inferred from the description of the other functions described here, the "Gated Mode" enables or disables the functionality of the external "Trial Gate" signal. When checked, a trial is defined as the interval during which the "Trial Gate" input is high, otherwise it is defined as the interval during which the "Recording" button is active. At the start of each trial, gated or not, the modules' 32-bit ADC sample counters are reset to zero. This enables the duration of a trial to exceed one day (max 89,478 seconds at the maximum ADC sampling rate of 48,000 samples/second and correspondingly more at lower rates), before the 32-bit counters overflow. Experiments arbitrarily long can be recorded by breaking them into one-day trials. A way of doing this is by choosing "Single Data File" and non-gated mode in the recording dialog, then toggling the Recording button OFF then ON after one day. In the "Gated Mode", this is done automatically as long as the Trial Gate TTL input is toggled more than once a day. It should be noted that all recording options except the Timestamps and Waveforms checkboxes are global, meaning that any changes made will effect all channels present in the system, not just the current channel. Input Settings The channel input type (spikes/continuous), sampling frequency and an optional fixed gain of 10 (20dB) can be changed through this property page. The input type can be selected to be either spike or continuous: In spike mode, windows of a fixed length are selected around the triggering point, analyzed and stored. The selected waveforms are usually action potentials originating from neurons, or simply spikes. The remaining data in the inter-spike interval is discarded. Simultaneously with spike acquisition, the raw input data is undersampled to yield a continuous stream of samples coming at a low frequency, used for recording Local Field Potentials (LFP). In continuous mode, data sampled at a lower sampling frequency (<7 ksps) is saved, without any gaps. This mode is useful for monitoring continuously-variable slow inputs like local field potentials, eye or hand position, pressure, and others. The gain of the APM input stage can be selected to be x1 or x10, through the check box in the center of the window. This setting is independent of the position of the gain slider in the main control panel, and the two gains (fixed and continuous) are summed. In continuous mode, the fixed gain can be changed, but the gain (continuous) is factory set to 0.0dB (x 1), and cannot be adjusted. An additional analog 2-pole low-pass filter with a cut-off frequency of 20 khz can be inserted in the signal path by enabling the corresponding check box in the top-right side of the window. This filter is meant to suppress high-frequency noise (above 20kHz) resulting, for instance, from interference with strong magnetic fields in scleral search coil systems. This setting is independent of the digital bandpass filter sliders position in the main control panel, and the two filters are cascaded. The headstage and preamplifier gain (devices external to APM) can be visualized or entered in the field in the right side of the window. This value helps setting the appropriate value of the voltage calibration of the entire recording chain. When purchasing an entire recording chain from FHC, the value you see in this box is the result of the factory calibration, stored in APM nonvolatile memory. Please use caution when modifying them, since you may loose the original calibration settings. When using a custom preamplifier or even a replacement for the original one that has been shipped to you, you need to re-enter the appropriate gain for each channel. As settings are saved in each APM board, do not swap boards in a multichannel system, or the

33 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 9 of 18 preamplifier gains will not match any more. The sampling frequency of the analog-to-digital converter is adjustable with a resolution of 1 Hz. Its range is input-type dependent: spike input type: 7,040 Hz to 48,000 Hz continuous input type: 10 Hz to 7,000 Hz The LFP sampling frequency is adjustable with a resolution of 1 Hz in the range 5 Hz to 1000 Hz. LFP (Local Field Potential) signal can be recorded simultaneously with the spike waveforms, through the same electrode. LFP data is obtained by undersampling (or decimating) the stream of digitized samples coming from the ADC. For instance, taking every 400th sample from a signal digitized at 40,000 Hz would result in a LFP data rate of 100 Hz. Since the range of frequencies of interest for LFP and spikes do not overlap (LFP: 0.5 Hz to 100 Hz, spike 500 Hz to 10,000 Hz), the LFP data is undersampled before the application of the digital filtering. In fact, for achieving a better noise reduction, the data is in fact not undersampled, but averaged. If we refer to the previous numeric example, an LFP sample is obtained every 10 msec by averaging 400 samples digitized at 40,000 Hz. The LFP sampling frequency has therefore to be a submultiple of the ADC sampling frequency. If you enter a value that's not a submultiple of the spike sampling frequency, the effective LFP sampling frequecy will be the nearest allowable value to the entered frquency. Input Calibration Page The calibration page allows the user to finely adjust the gain and offset of the input stage. All APM channels are factory calibrated for zero offset and accurate gain. A recalibration is required whenever the user inserts or changes a headstage or other signal conditioning module in the input path. The gain calibration setting may be used to account for gain introduced by the headstage allowing the APM module to display voltages referred to the input of the headstage. The calibration settings are modedependent, calibration has to performed separately for spike and continuous mode (see input settings). The signal peak values are displayed in the Max and Min boxes, while the peak-to-peak value is displayed in the Diff box. The input gain is increased by pressing on the up-arrow in the Gain panel, while pressing the down-arrow decreases its value. In a similar way, the offset, calculated as the average of the peak values, can be adjusted. The gain calibration procedure follows these steps: feed a sine signal from a well calibrated signal generator to the headstage input. Make sure that the output level is displayed as a peak-to-peak value. If only RMS values are available, multiply by 2 2 to obtain the peak-to-peak value; choose an input signal frequency within the passband of the digital filter, typically 1000Hz. It is recommended that you completely open the filters (low 0 and high Hz); set the input gain to 0; make sure that the input signal is triggering the APM and confirm that it does not saturate the input stage (the peaks of the displayed signal are well below upper or lower display limit at max zoom out); Adjust the Gain under the Calibration tab using the up/down arrows until the displayed Diff value matches the amplitude of the input signal. The adjustment is dynamic, with a very fine step at the beginning, and ending up with a coarser step after holding the arrows for several seconds. You may have to click and hold the arrows for several seconds, before noticing a significant change in the displayed values. In order to adjust the offset, remove the signal generator and short the input to ground. Then adjust the offset to zero using the up/down arrows. Module Page The Module page displays information about the APM module: the serial number, firmware type and version. It also allows the

34 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 10 of 18 user to change the existing firmware to a more recent version or different type, downloaded from the support web site. The serial number of the APM channel is displayed, this will match a serial number sticker on the APM circuit board (This is different from the serial number assigned to the module located on the back panel.). This number is set at the factory and cannot be changed. The firmware code defines the APM's functionality. The firmware is stored in the APM's FLASH memory. By uploading a different firmware code into the APM's flash memory, the functionality of the APM can be changed. (From a spike discriminator to an arbitrary waveform generator for example.) Clicking on the Upgrade button will prompt the user for the new firmware file (the default extension is.ldr). Select the firmware file that you want to upload into the APM and click OK. Wait until the erase/blank check/programming cycle is complete (a progress bar will be displayed). Click here to read more about firmware upgrade feature. In the unlikely event of a programming error, DO NOT reset or power off the APM, since it may not be able to boot again. Retry the programming until the FLASH memory is successfully programmed. If re-programming fails several times in a row, please contact FHC for technical support. Display Settings The Display page allows the user to select different colors for the accepted and rejected spikes, on a channel-by channel basis. Also, the grids and time and voltage scale indicators can be shown/hidden for all channels. The units in which the input gain is displayed in the main control panel, next to the gain slider, can be toggled between decibels (db) or the voltage amplification factor. Auto Adjust Settings The Auto Adjust page allows the user to select the settings for the built-in auto-thresholding function.

35 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 11 of 18 Whenever the spike rate (the rate at which a triggering event occurs) decreases below the minimum value nlow set in the Low box, the triggering level is automatically brought closer to the zero line every n seconds, set in the Every box in the right panel. This continues until the triggering level becomes so low that more than nlow spikes per second are detected. If the spike rate increases above nhigh set in the High box, the triggering level is automatically increased in absolute value. The magnitude of the triggering level adjustments is set in the Change box. Audio/Analog Output Settings The audio page allows setting the parameters of APM's analog/audio output. The output can be configured in 5 different modes: Raw - the output is the processed input signal (raw input, amplified and filtered according to the control panel settings), as seen on screen. Threshold - only peaks in the processed input signal whose amplitude exceeds the absolute value of the trigger level are present at the output. This mode is illustrated in the figure below. Triggered - only waveforms that cross the trigger level, as displayed in the control panel, are present at the output. The

36 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 12 of 18 min difference between this mode and the threshold one is that levels below the threshold may be present at the output, in the proximity of a trigger event. In between the spikes, the output is blanked. Accepted - only waveforms that cross the trigger level and are accepted by either crossing the acceptance window or template matching, are present at the output. In between the accepted spikes, the output is blanked. Constant amplitude - when a spike is accepted, a constant amplitude rectangular pulse is presented at the output. In between the accepted spikes, the output is blanked. Remarks The sharp transitions to/from null output, as represented in the figures above, are in fact smoothed by the analog output stages of the digital-to-analog converter, as well as by the input stages of the instrument that performs the readout. If long connections between the output and the reading instrument are present, reflections, "ringing" and overshooting may be visible in the output

37 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 13 of 18 signal. Global Settings The Global page allows the user to change the total number of channels in a system, to apply the settings for the current channel to all channels, or to reset channel values to default settings. The number of logical channels in a multichannel APC system can be increased/decreased using the channels edit box. This is a global setting and it directly effects the number of channel buttons present in the channel select window. This setting is profiledependent. For instance on a 16-channel system, one can run two different experiments in which only 4 channels are required for the first experiment, and all 16 channels for the second one. In order to simplify the user interface, two different profiles can be created. In the first case, the total number of channels will be set to 4, while in the second case to 16. Modifying the number of channels will require an application restart. Use caution when clicking on any of the cahnnel properties buttons in the page, as the changes become effective immediately. There is no way of undoing the operation and reverting back to the original channel settings. Continuous and LFP Settings The Continuous and LFP page allows the user to set a parameter that applies to continuous and LFP (Local Field Potential) modes: the data packet size. See recording modes for a description of the operation in continuous mode. In these modes, the incoming continuous data stream is assembled by the APM module in packets containing n samples, and then sent to the PC. The data is displayed in the form of a scrolling waveform. The larger the packet size, the faster and more efficient the data transfer is, but the choppier the displayed waveform is. Conversely, the smaller the packet size, the smoother the scrolling is displayed, however, the amount of USB overhead is increased. Optimal settings for the packet size will depend on the application at hand and the sampling rate. Please note that the packet size setting in no way affects the integrity of the data being displayed or recorded. It is simply a tradeoff between USB bandwidth consumption and the scrolling smoothness of the display. When continuous mode is not enabled in the input property page for the selected channel, the controls on the continuous page are disabled.

38 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 14 of 18 Digital Input/Output Settings The configuration of the 16-bit digital input and Spike Accept TTL ouput can be changed through this property page. Digital Inputs By checking one of the digital inputs boxes, whenever that line changes state, an event is generated and stored in the data file (see Data File Format section for a description of the stored messages). For inputs to be active, the STROBEIN signal on the digital I/O connector has to be held low or left open (there is an internal pulldown of 20 kohms). Whenever the STROBEIN signal goes high, input data is latched, and no events are detected. By selecting the Strobe box, whenever the STROBEIN input goes low, the value of the digital inputs is read and stored in the data file (see Data File Format section for a description of the stored messages), even if no input has changed state. Any number of inputs can be selected as active, either alone or simultaneously with the strobe input. By selecting the Always Read Digital Inputs box, all 16 data bits will be stored in both situations when a digital event or a strobe event occurs. However, if a digital event occurs about nanoseconds before a strobe this may cause the next strobe event to be missed (i.e. the digital lines will only be read when the digital event occurs). Therefore, it is recommended that the Always Read Digital Inputs box remains clear during experiments that require the digital lines to be read at exactly the moment each strobe occurs. If the strobed digital data is disabled by clearing the Strobe box, the Always Read Digital Inputs option will automatically be enabled. The data collected from the digital inputs is timestamped and available to be sent via TCPIP or saved in the data file right away. On the other hand, spikes that are acquired using the APM module undergo a series of calculations from the moment they are collected as raw data to the moment they are sent over TCPIP or saved in the data file. Due to this obvious and necessary delay situations in which strobed data is sent or saved before the spikes that were acquired before it may occur. If this creates an incovenience for the experimental workflow, the Sync Strobes & Spikes box can be selected, which ensures that all the spikes and strobes are sent via TCPIP or saved in the data file in the same order as that in which they were acquired. When saving data in.apm file format, strobed data is saved with the actual channel infromation in it. When using.plx file format, data is always stored on the predefined channel 257, regradless of the physical channel on which it was received. Digital Input Timing When configured as individual event inputs, the digital input lines must hold their value for one full interval between two ADC samples (for instance microseconds for a ADC sample rate of 48 khz). This implementation is determined by the fact that the timestamping of events uses ADC sample counts, therefore detecting several transitions in the interval between two ADC samples would result in timestamp duplicates, bringing no additional information about the event. One must keep in mind that a change in the state of an event input followed by a restoration of the original state in a time interval shorter than the interval beteeen two ADC samples may not be detected at all and may not generate an event. The strobe input can have a much faster timing, but it must remain remain stable for 100 ns after a transition. When multiple strobes occur in the interval between two ADC samples, only the last one is retained. Digital Output The spike acceptance TTL output pulse duration (pulse width) and delay can be adjusted through the two controls in the lower section of the dialog. Both the width and the delay are a multiple of the interval between two ADC samples (for instance microseconds for a ADC sample rate of 48 khz). The pulse delay is referenced to the trigger time and cannot be smaller than the minimum time required to detect a spike. That includes the fixed delay introduced by the electronics and the processing algorithms (particularly the digital filtering) and the minimum variable time required to detect a spike, that is the interval between the trigger and the acceptance window position in time in spike discrimiation mode, for instance.

39 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 15 of 18 TCPIP Settings The TCPIP page allows enabling/disabling of TCPIP message and data servers and the TCP ports they use. The message server listens for incoming connections on the specified port, and messages that are sent to it are inserted into the datafiles, together with the aquired waveforms and timestamps. This is intended as a software method for synchronizing and sending information from other applications to the APM datafile, as opposed to hardware synchronization, through the Gate and Events inputs. Although the software method does not work in real time, due to intrinsic network latencies, it is more flexible in terms of its content. For instance the application that controls the entire experiment can send experimental parameters to be saved in the data file. To preserve the compatibility with the existing data file format, the incoming messages have to respect the same message format. See file format section for a description of the general message structure. The data server listens to incoming connections, and sends acquired data to a client computer once one is detected. The network data has the same format as the data files. In order to reduce the CPU overhead, only discrimination settings and timestamps, not the full waveforms, are sent to the client computer. This connection is not intended as a substitute for file saving, but to send online information (like timestamps) to applications that use it to display the spiking characteristics of the recorded neurons. The data is sent continuously to the connected clients, even if data recording is not enabled. A Matlab sample client (APMPNetClient.m) is provided in the Matlab subdirectory of the APM installation. When saving data in.plx file format, the data sent on channel 257 only is recorded as a strobed event. Below is an example of a message that contains the digital code 447. The message consists in a sequence of four 32-bit words. Word 0 Message Code = (User Message 4) Word 1 Channel = 257 (Strobed Event Channel) Word 2 Data Length = 1 Word 3 Data = 447 (Digital Code) The same message can be represented as a sequence of 8-bit characters (bytes): Byte Value Since the TCPIP data is recorded by the host PC and not by the APM, no accurate timestamp can be associated with the received message. Generally speaking, the TCPIP communications and associated hardware are not designed to provide data in real time, and there are intrinsic latencies and jitters associated with data transmission. However, when saving data in.apm format, the approximate time at which a message was received can be inferred from the location in the data file at which the message was inserted (e.g. after waveform having timestamp x, but before the waveform having timestamp y). In.plx mode the data record sequence does not matter, and a timestamp is required when saving a strobed event record into the data file. This timestamp is automatically calculated by the windows application, to be the timestamp of the last received message (a spike waveform, a trial start, trial end or a digital event), plus 1 ADC sample. PC Serial Port Communications Port Settings The PC Serial page allows setting the parameters of the computer's serial communications port assigned to receiving messages to be inserted in the data file.

40 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 16 of 18 The serial message server listens for incoming data on the specified serial communications line. The received messages are inserted into the datafiles, together with the acquired waveforms and timestamps. This is intended as a software method for receiving information from other applications. The received data is not timestamped, since only APM hardware can do timestamping. If you need to timestamp the serial data, you will have to use the APM serial port on the APM back panel. To preserve the compatibility with the existing data file format, the incoming messages have to conform to the standard APM message format. A malformatted message could render the entire recorded data file unusable. See file format section for a description of the messages structure. When saving data in.plx file format, the data sent on channel 257 is recorded as a strobed event. Below is an example of a message that contains the digital code 447. The message consists in a sequence of four 32-bit words. Word 0 Message Code = (User Message 4) Word 1 Channel = 257 (Strobed Event Channel) Word 2 Data Length = 1 Word 3 Data = 447 (Digital Code) The same message can be represented as a sequence of 8-bit characters (bytes): Byte Value Since the serial data is recorded by the host PC and not by the APM, no accurate timestamp can be associated with the received message. Generally speaking, the serial communication hardware is not designed to provide data in real time, and there are intrinsic latencies and jitters associated with data transmission. However, when saving data in.apm format, the approximate time at which a message was received can be inferred from the location in the data file at which the message was inserted (e.g. after waveform having timestamp x, but before the waveform having timestamp y). In.plx mode the data record sequence does not matter, and a timestamp is required when saving a strobed event record into the data file. This timestamp is automatically calculated by the windows application, to be the timestamp of the last received message (a spike waveform, a trial start, trial end or a digital event), plus 1 ADC sample. APM Serial Port Settings The APM Serial page allows setting the parameters of APM's serial communications port. The APM serial port is used for receiving data from devices that have a standard asynchronous serial interface (UART/RS232),

41 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 17 of 18 for instance a serial mouse, touch screen, or infrared eye position monitoring system. The data is timestamped and saved in the data file. This allows for an accurate reconstruction of the timing relationship between the recorded spikes and serial data. Fixed or variable length messages received over the serial line can be processed. The fixed length messages should have a header consisting in a particular bit pattern that can be specified using the header/terminator field and bit mask field. For instance ASL eye tracker serial messages are 10 bytes long, and the first byte in a message has the most significant bit set to 1, while all the following bytes have this bit set to 0. The multi-byte settings that would allow processing of such messages are: fixed length of 10 bytes, header/terminator 128 (0x10 in hexadecimal) and bit mask 128 (0x10 in hexadecimal). The baud rate, parity, data bits and stop bits settings will have to match the ones of the ASL serial port, tyically 57600,n,8,1. Variable length messages should have a specific terminator. For instance text (ASCII) messages are usually terminated with a CR (13) or LF (10) code, or with both. In order to process text-based messages, like for instance the ones coming from a microtargeting drive controller, one should select variable length with a terminator code 10 and bitmask 255 (0x0FF hexadecimal). When saving data in.apm file format, the data is saved as a sequence of two or more words, first is the timestamp and next hold the data received over the serial line, packed 4 bytes per word, MSB first. When not enough bytes are received to fill in completely a 4-byte word, the last word contains the last bytes on the most significant positions and zeros on the remaining positions. For instance, a 5-byte message will be represented as two words, last word containing the 5-th (last received) byte on the most significant byte position, while the rest of the word is set to 0. When selecting a message length of 1 (single-byte), the first data word contains the timestamp, while the second data word of the APM message contains the character received through the serial line (bits 0 through 7) plus the parity (bit 8) and CTS line status (bit 9). Below is an example of a single-byte message that contains the digital code 47 timestamped at ADC ticks, while the CTS line is active. The entire APM message consists in a sequence of five 32-bit words. Word 0 Message Code = 21 (UART DATA) Word 1 Channel = 1 Word 2 Data Length = 2 Word 3 Timestamp = (Timestamp) Word 4 Data = 22F (hex) = 512 (CTS active) + 47 (data) = 559 (dec) When saving data in.plx file format, the data is recorded as a strobed event (on dedicated channel 257). In a multichannel system, the port is physically connected to the APM module in slot 1, therefore in order to receive serial data, slot 1 must be populated. Templates Window This dialog allows the user to adjust the settings for the adaptive template matching (ATM) method of discriminating spikes. The Enable row of buttons allows activation of up to four distinct templates for each APM channel. Enabling ATM allows the user to discriminate up to four different units (or neurons) from each channel. When a template is activated, the corresponding button becomes green, and the template is displayed in the waveform window, as well as in the channel thumbnail window, with a thicker line of the same color as the accepted spikes. The color associated with each template can be chosen in the Colors group of buttons. Enabling template 1 (T1) will deactivate the window discrimination method and place the module into ATM mode. Disabling it will re-activate window discrimination. Either way, accepted spikes from T1 or window discrimination will be saved in the data file as unit 1. The settings for the other templates (T2, T3 and T4) are independent of the ones for T1, i.e. enabling templates T2, T3 or T4 will not disable window discrimination if T1 is not active. Therefore during recording, two different modes of spike

42 User Interface file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhBA7F.htm Page 18 of 18 discrimination may coexist and operate simultaneously: ATM and window discrimination. The Record row of buttons allows the enabling/disabling of data recording for any of the active templates (the template specific equivalent of the channel buttons functionality under the Record tab in the channel select window). Since all waveforms that have caused a trigger event are stored in the data files, disabling recording of a template will not cause the waveform data to be discarded, instead it is saved without a valid unit number, and therefore shows up in the offline analysis programs as unsorted, or non-accepted. The Rebuild from window row of buttons enables the construction of a new template from the next spike that passes through the acceptance window. Selecting a rebuild button changes its color to green until a window-accepted spike is received, and the corresponding template is initialized. Once the template is initialized, and displayed in the waveform windows, the color of the button changes back to blue. If the rate of incoming spikes is relatively high, this may be a very brief process. When discriminating units through ATM, there are three parameters that need to be continuously adjusted: the template match tolerance, the template adaptation weight and the adaptation threshold. Their significance is described in detail in the reference section referring to the ATM method and the mathematical algorithms used (click here to open). Three parameters need to be adjusted when discriminating neurons with Adaptive Template Matching (ATM). Template settings can be viewed or changed by selecting the corresponding template button in the Select row. The three sliders in the lower half of the templates window control the value of these parameters for the currently selected template. The Template Match Tolerance setting determines how similar in shape a spike must be to the template to be accepted as a match. The match tolerance is expressed in relative units, as a percentage of the template amplitude when it was (re)built by using the Rebuild from window buttons. Therefore, the match tolerance setting will be spike/template amplitude independent. The bottom two sliders control the adaptation of the template based on the variations of the incoming accepted waveforms. TheTemplate Adaptation Weight sets what percentage of the incoming accepted spike will be used for updating the existing template (0% - no template change; 100% - template completely replaced by each accepted spike). Template adaptation for each incoming accepted spike isn t recommended however, as this would require a large amount of processor and communication overhead. The final parameter enables adaptation of the template only when the difference between it and the accepted spike exceeds a certain threshold. This threshold is controlled by the Template Adaptation Threshold, which is expressed in values relative to the template match value. For instance, setting an adaptation threshold of 90% will cause a template update to be caused by spikes whose difference from the template is within 90% to 100% of the matching tolerance. These parameter settings are independent for each template, and saved in the user profile with all other program settings. The templates themselves are saved only in the data files, not in the user profiles. Two buttons are available in the Apply Settings To group which allow the user to copy the ATM settings for the currently selected template to other templates. To copy the current template settings to all four templates associated with the selected channel, click the This Channel button. The All Channels button is used within the multichannel APC system to copy the current template settings to all templates on all channels. Selecting this button on the APM performs the same function as the This Channel button. Copying template adaptation parameter settings does not copy the templates themselves. Template waveforms will need to be generated for all active templates by using the Rebuild from window buttons Remarks It is recommended to use peak triggering (not +/- slope triggering) if you plan on changing the trigger level after setting up one or more templates. When triggering the waveforms on positive or negative signal slope, a change in the trigger level would cause an apparent horizontal shift of the recorded waveforms, resulting in a loss of match with the defined template(s). When recording waveforms in a data file, it also advised that you use peak triggering if you believe you will have to adjust the trigger level in order to track the variations in the waveform amplitude during the course of the recording. Adusting the trigger level in this mode will not lead to an apparent horizontal shift the waveform, resulting in the offline analyses (PCA, template matching etc) to fail identify units following a trigger leve change, or misclassify them. This applies not only to manual adjustments of the trigger level, but to automatic ones, too, when automatic level adjustment is enabled.

43 Hardware Installation file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE081.htm Page 1 of 7 Hardware Installation 1. Ensure that the APM is placed in a convenient out of the way spot. Alternately, install the APM in the SAF Rack Frame for Stand-Alone Units. 2. Ensure power switch on the back panel is in the Off position. (Indicated by the O side of the rocker switch pressed in.) 3. If powering from the desktop power supply: Plug the power supply line cord into a properly grounded wall receptacle. Install the 2.1mm plug from the power supply into the In jack of the Power section of the back panel. If powering from another module: Install the power transfer cord from the Out jack of the other module, to the In jack of this module. 4. Connect the USB cable from the USB jack on the back panel of the APM to the USB jack of the host computer. 5. Connect the cable from the headstage/preamp to the Analog Input jack on the front panel. 6. If applicable, connect the cables from a behavioral system to the appropriate Trial jacks on the front panel. 7. If applicable, connect the Sync Output of the LSG to the Line Sync jack on the back panel of the APM. 8. If applicable, connect a cable from the Analog Output jack on the front panel to an oscilloscope or other recording device. 9. Route all wires as to prevent them from being pulled or tangled. 10. Perform software installation as described here before powering up the module. Software Installation 1. Insert the application CD and run Setup.exe. If you have downloaded an updated setup kit from the web, run setup from the directory where you have unpacked the files. There are no options to select during install, except for the destination directory. 2. Upon successful installation, apply power by pressing the I side of the power switch located on the back panel of the APM. 3. The APM device is plug-and-play, and Windows operating systems will automatically recognize it after you turn the power on. The operating system automatically goes through the new hardware installation with no user intervention required. The system may show the following information box in the lower right portion of the screen with a message that is operating-system dependent (shown below is the WinXP version). Click to enlarge 4. After a few seconds the operating system recognizes the new device and changes its message to:

44 Hardware Installation file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE081.htm Page 2 of 7 Click to enlarge 5. Finally, the driver is found and the operating system issues the following message: Click to enlarge If you install more than one APM module to a host computer, or a multichannel system, the operating system will launch the Found new hardware information box for each APM or APC channel. A multichannel system consists of APC modules connected to the host PC through UHC modules (USB hubs). Each module shows itself to the PC as an independent hardware entity, therefore the "Found New Hardware" information box will appear for each channel in the system. Also, when connecting the system to a different USB port of the same computer, the process will have to be repeated for each channel. Once software installation is complete, start the application by clicking on the shortcut placed under the Start Programs menu. Functional Checkout Testing module functionality Module functionality can vary depending on the firmware loaded on the APM flash memory. The following instructions assume the default firmware implementation of window discriminator functionality (type 1). 1. Ensure that the hardware and software are installed correctly, as described in the Installation instructions. 2. If you have powered off the module just before running this test, please wait a few seconds for the hardware to be detected by the host PC as being disconnected from the USB bus before powering back on. After powering up the module, please wait several seconds for the reset/usb hardware detection cycle to be completed. In a multichannel system this time may scale with the number of channels. 3. Initiate communications between the PC and the APM by clicking on the 1 button in the Channels window. Ensure that the button is green. 4. Connect an input signal to the Analog Input jack on the front panel of the APM. An input signal could be one of the following: A signal from a Spike Simulator device (ex. FHC cat # ) Connect the audio output of the PC to the Analog Input jack. Play the neural activity.wav file located in the APM program file folder An output from a function generator. Ensure that the signal amplitude is below 1Vrms

45 Hardware Installation file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE081.htm Page 3 of 7 (2.8V peak to peak). 5. Set the Input Gain slider in the Main User Interface to 0 6. Set the number of simultaneously displayed waveforms to Adjust the Triggering Point and Triggering Threshold Level so that spike waveforms are displayed on the PC. 8. Adjust the Acceptance Window to a point where some waveforms pass through. Ensure that those waveforms turn green, while spikes that don't pass through remain gray. 9. Confirm that each time a waveform passes through the Acceptance Window, the Spike Acceptance Output LED on the front panel of the module turns red. 10. Connect the Analog Output of the APM to an oscilloscope input. Connect the Spike Accept Output of the APM to the oscilloscope as an external trigger. Ensure that the time scale of the oscilloscope closely matches that of the Main User Interface. 11. Confirm that spikes that pass through the Acceptance Window are also being triggered and visible on the oscilloscope. 12. Set a function generator to output a 1Hz 0V to 5V square wave. Connect the output of the function generator to the Trial Gate, Trial Validate, and Event inputs on the front panel in turn. 13. Confirm that the yellow LED next to each input flashes in sync with the input pulse train on each input. Calibrating the module Although the module can accept input signals in the volt range, it is usually connected to headstages/preamps that have output signals in the tens or hundreds of millivolts range, using internal PGA (programmable gain amplifiers) stages. The suggested calibration is for a 200 mv peak-to-peak input signal and x10 fixed input gain (selected under the Settings\Input tab). The Input Gain slider has to be in the leftmost position (zero variable gain). With these settings, the displayed gain will be 20 db in the main panel. Set a function generator to output a 200mV peak to peak sine 1kHz. Set the time scale of the APM display to 200S/div. Adjust the digital bandpass filter for a Low of 0Hz and a High frequency cutoff of 20kHz.

46 Hardware Installation file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE081.htm Page 4 of 7 Within the Settings dialog, click on the Calibration tab. In the Gain box, the signal peak values are displayed in the Max and Min boxes. The peak-to-peak value is displayed in the Diff box. The input gain is increased by pressing on the up-arrow of the Gain panel (pressing the down-arrow decreases its value). Repeatedly click on the up or down arrows, or hold them for several seconds until a value of 200mV is displayed in the Diff box. The offset, calculated as the average of the peak values, can be adjusted in a similar manner. Adjust the function generator output for a 20mV peak to peak sine wave (1000Hz). Under the Input tab de-select the x10 gain check box. Return to the Calibration tab and adjust the offset such that it oscillates around a value of 0V. Set the APM to continuous mode by selecting the Continuous checkbox under the Input tab. Calibrate the Gain and Offset as before. Adjust the function generator for a 10Hz, 200mV peak to peak sine wave. Adjust the APM vertical scale to 50mV/div. Adjust the gain calibration setting until the displayed waveform is exactly 4 boxes high. Return the APM to Spikes mode under the Input tab. Adjust the high cutoff of the bandpass filter back to 20,000 Hz. Operating Instructions 1. Apply power to the APM via the Power switch on the backpanel (indicated by I being pressed in) 2. Start the main APM control application from the Start button on the host PC. You will be prompted for a user profile name. You can leave the profile blank at this point, and press the OK button. Alternately, Enter a username in the User Profile dialog box.press the OK button. 3. The Main User Interface and the Channels window will open. 4. Click the Select tab of the Channels window. Click on channel button number 1 to initiate communication between the APM and the host PC. The channel button will turn green and the message "Comms OK" will be displayed on the status bar. 5. Click the Record tab of the Channels window. Click on channel button number 1 to enable recording (button color will change to green). Actual data collection will start for the enabled

47 Hardware Installation file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE081.htm Page 5 of 7 channels only when the Recording button in the main panel is clicked on. 6. Click the Settings button in the main control panel. Select the Recording tab. Ensure that Gated Mode is unchecked. Press OK to save the current settings and exit the dialog box. 7. If there are random waveforms that do not pass through the Triggering Point (the small red circle on the triggering threshold line), or if no waveforms are displayed in thewaveform Window, it is very likely that the position of the Triggering Threshold Level (horizontal red line) is above or below the range of the input signal. You can manually drag the Triggering Threshold Level within the Waveform Window to move it closer to zero. Note that the Auto Adjust algorithm will slowly do this automatically if no sweeps are crossing the triggering threshold. 8. To enable the Auto Adjust mode, click the Auto Adjust button in the Waveform Window, it will change color to green. While Auto Adjust is enabled the APM displays one sweep per second, regardless of the triggering threshold level (horizontal red line). 9. Once stable waveform displays start passing through the Triggering Point, increase the gain by dragging the Input Gain slider to the right and/or zoom in by pressing the V+ button in the Zoom control portion of the Main User Interfaceuntil a reasonably large signal is displayed. Ensure that the input stage does not saturate as a result of increasing the gain by too much. 10. Move the Triggering Point to the left or the right along the triggering threshold line until the entire spike is displayed within the sweep. The triggering point is adjusted by dragging it to the left or right within the Waveform Window. This is equivalent to setting the duration of the pre-trigger on conventional oscilloscopes. It may also be necessary to zoom in or out along the horizontal axis by pressing the H+/H- buttons in the Zoom control portion of the Main User Interface to capture the entire spike within the duration of the sweep. 11. Adjust the Hi and Lo Filter settings by dragging the sliders to the right or left to narrow the signal bandwidth and remove unwanted noise. 12. Move the Acceptance Window (the white vertical line terminated by two small circles) by dragging it within the Waveform Window to capture spikes to be recorded. Spikes that pass through the window will be displayed in bright green (by default, otherwise whatever color has been selected on the display settings page) and will generate a TTL pulse at the Acceptance Output jack on the front panel. The red LED next to the Acceptance Output can be monitored to confirm this. If you are using an external timestamping system that uses the Acceptance Output, you should be able to see the information within that system. 13. Adjust the size of the Acceptance Window by clicking and dragging the circles at either the top or bottom of the window. 14. If applicable, enable the Line Noise and/or Artifact Suppressor functions by clicking the On checkbox, 1. To set the replica of either the Line Noise or Artifact suppressor, click Load Replica then Reset Replica. 2. To set the suppressor to adapt to changes in the artifact click the Replica Adaptation: On checkbox. Adjust the adaptation weight slider to set sensitivity to changes. 15. If at this point you would like to switch from the default Slope/Height Window Discrimination mode to Template Matching, follow the instructions below. 16. If you wish to record data at this point using the default Slope/Height Window Discrimination mode, click the File button in the Main User Interface and browse your disk to select the directory to record in. Enter the data file name, without any extension, and select the desired file format. 17. Click the Recording button in the Main User Interface to begin recording the selected spikes. The button will change color to green when recording. To end the recording session at any time, click the Record button again. 18. Once the recording session has ended, you can inspect the saved data using the sample Matlab scripts (if data has been saved into APM format), or in NeuroExplorer if you have saved it in PLX format. 19. To analyze the data online, connect to the TCPIP data server, and retrieve the data in Matlab using

48 Hardware Installation file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE081.htm Page 6 of 7 the APMPNetClient.m sample located in the Matlab subdirectory of your installation. In order to enable the TCPIP data server, go to the Settings page and select the TCPIP tab. Ensure that the Data Server is enabled. Keep in mind that the port number used accepts client connections (default is 2567). Open Matlab, change the current directory to the Matlab subdirectory of your APM installation, then type APMPNetClient(' ',2567). You may also connect from a remote computer by replacing with the actual IP address or name of the computer that runs the APM application. The sample program is designed to plot timestamp rasters for the most recent trials, when the APM is in gated mode (Keep in mind that gated mode requires an external TTL signal to be connected to the Trial Gate input). You can modify the script to work in other recording modes, show data in the format that you want, or perform more complex online analysis. The data that comes over TCPIP has the same format as the data files saved on the hard disk. To Record in Adaptive Template Matching Mode: 1. Follow steps 1 through 14 above to initially set up the APM to acquire spikes. 2. Click the Templates button in the Main User Interface. 3. Click the T1 button in the Enable group to enable template 1. A bold line will appear in the main control panel and the thumbnail window indicating the currently stored template. This will initially be a flat line at zero volts. 4. Click on the T1 button in the Rebuild From Window group. This will build a template from the spikes that pass through the Acceptance Window. Once the template is constructed, you will see it displayed as a bold waveform in the Main User Interface and in the Thumbnail Channel Window. 5. Enable Recording for template 1 by clicking on the T1 button in the Record group. This will allow waveform or timestamp data associated with spikes that match template 1 to be saved when the Recording button in the Main User Interface is enabled. Spikes that are considered close enough to be a match for the template are displayed in the same color as the bold template waveform. 6. Adjust the matching Tolerance and Adaptation parameters as needed using the sliders in the Template Settings group. 7. Three additional templates can be constructed by following the above four steps using the T2, T3 and T4 buttons. 8. Click the File button in the Main User Interface and browse your disk to select the directory to record in. Enter the data file name, without any extension, and select the desired file format. 9. Click the Recording button in the Main User Interface to begin recording the selected spikes. The button will change color to green when recording. To end the recording session at any time, click the Record button again. 10. Once the recording session has ended, you can inspect the saved data using the sample Matlab scripts (if data has been saved into APM format), or in NeuroExplorer if you have saved it in PLX format. 11. To analyze the data online, connect to the TCPIP data server, and retrieve the data in Matlab using the APMPNetClient.m sample located in the Matlab subdirectory of your installation. In order to enable the TCPIP data server, go to the Settings page and select the TCPIP tab. Ensure that the Data Server is enabled. Keep in mind that the port number used accepts client connections (default is 2567). Open Matlab, change the current directory to the Matlab subdirectory of your APM installation, then type APMPNetClient(' ',2567). You may also connect from a remote computer by replacing with the actual IP address or name of the computer that runs the APM application. The sample program is designed to plot timestamp rasters for the most recent trials, when the APM is in gated mode (Keep in mind that gated mode requires an external TTL signal to be connected to the Trial Gate input). You can modify the script to work in other

49 Hardware Installation file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE081.htm Page 7 of 7 recording modes, show data in the format that you want, or perform more complex online analysis. The data that comes over TCPIP has the same format as the data files saved on the hard disk.

50 file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhA8CB.htm Page 1 of 2 Conditions For Use Intended Use The APM components are intended for use in acquiring, conditioning, and processing signals from single electrodes, pipettes or microelectrodes during intracellular or extracellular recording. Warnings The APM components should not be disassembled beyond their major assemblies. Any disassembly beyond this may affect function and calibration. If repair is required please contact FHC at (207) Storage Precautions Store at normal room temperatures between -34 C (-29 F) and 57 C (135 F). Do not expose to temperatures below -39 C (-29 F) or greater than 70 C (158 F), or a relative humidity of less than 10% or more than 100%, including condensation, or an atmospheric pressure less than 500hPa or greater than 1060hPa for long-term storage. Sterilization The APM components are not designed for sterilization. Any attempt to sterilize them may result in malfunction or component failure. Handling While a high degree of durability has been designed into the APM components, care should be taken not to drop them. Do not force any of the connections. Place all cables and leads where they will not be inadvertently pulled or tangled. Specifications APM: Input Impedance: 100 kohm Input Dynamic Range: max 10 V peak-to-peak (-5V to +5V max) Sampling Resolution: 16 bits (input and output) Sampling Frequency: Spikes mode: 7,040-48,000 samples per second, adjustable in 1 sample per second steps. LFP mode: 5-1,000 samples per second, adjustable in 1 sample per second steps, obtained by averaging the spike data. Continuous mode: 1-7,039 samples per second, achieved by oversampling of the input signal in the frequency range 7,040-48,0000 s/sec, then performing an internal software

51 file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhA8CB.htm Page 2 of 2 averaging by the DSP. Input Voltage Gain: x10 (20dB) fixed (software selectable) plus dB adjustable in 1.5dB steps. Input Signal Filter: Sharp 64-tap digital bandpass filter in the range of 0Hz to 20kHz Analog Output: Digitally conditioned input signal in the range 0-1 V rms (2.83V peak to peak) Window Size: ADC samples ( ,000 khz) Digital Inputs: 3 dedicated digital (TTL-compatible) inputs for behavioral control system interface (Trial Gate, Trial Validate, Event In); 2 dedicated inputs used by the adaptive filters for line noise and stimulus artifact suppression. 16-bit strobed general-purpose digital inputs that can be also configured as independent event inputs. Digital Outputs:1 spike acceptance output for interfacing with external event recording hardware, available on the front panel; additional 16-bit strobed digital outputs on the backpanel (8 bits only in multichannel version); 4 of the 16 bits are by default configured as 4 spike acceptance outputs (one for each template). Display: Graphic user interface with simultaneously displayed waveforms. Memory: 1.5 MB zero wait state fast SRAM data buffers, 256 kb FLASH. Computer Interface: High-speed USB 2.0 (480Mbps), backwards compatible with Full-speed USB 1.1 (12Mbps). Dimensions: 2.05" (5cm) width X 5.22" (13cm) height X 9.6" (24cm) depth. Weight: 9.5pt;1.30 lbs (.59 Kg) Power Requirements: 115/230VAC, 50-60Hz, 9W max. Country specific line cord. LSG (use optional): Sync Output: Output of the generated sync signal for interfacing with the Trial Validate input of the APM. Dimensions: 3.15 (8cm) width X 1.57 (4cm) height X 4.72 (12cm) depth Weight:.8lbs (.36Kg) Power Requirements: 115V/230V, 50-60Hz

52 Design Page 1 of 61 Hardware Design The design is centered around a powerful 32-bit Digital Signal Processor (DSP) with floating point support. Analog signals are converted to digital using a 16 bit A/D converter. Functions of traditionally additional hardware modules (filters etc.) are completely implemented in the APM software by the DSP. The processor is powerful enough to perform complex signal conditioning and spike discrimination tasks between two samples even at the maximum sampling rate of 48kHz. The APM hardware block diagram is shown below: Click to enlarge The CODEC is a circuit that contains two pairs of analog-to-digital (ADC) and digital-to-analog (DAC) converters. It sends/receives data to/from the DSP. The DSP receives the digitized input stream, and performs real-time data processing according to the algorithm stored in its internal program memory. The program is loaded into the internal memory from the FLASH memory after a board reset. The FLASH is divided into two sections, a primary and secondary (boot) FLASH. The secondary FLASH holds a fixed (read-only) code, which is used for restoring the module s functionality when the primary FLASH has been erroneously programmed by the user. The FLASH holds the actual DSP firmware that defines module s functionality, or user code. It is factory programmed, but can be re-programmed by the user with the latest firmware version, or customized algorithm. The SRAM is a fast static memory that holds volatile data like communication and waveform data. The communication with the host PC is performed through Universal Serial Bus (USB) using a dedicated communication adapter. The input signal is first processed by a programmable gain amplifier (PGA) included with the CODEC. An gain in the range 0 to 22.5dB can be software-selected in 16 steps of 1.5 db. The APM performs digital filtering utilizing a sharp 64- tap bandpass filter with continuously and independently adjustable LO/HI frequencies in the range of 0 (DC) to 20kHz. (Slope and level triggers are adjustable anywhere within the input range, and pre-trigger and window delays adjustable anywhere within the window length.) The signal source can be a recording electrode or a behavioral monitoring instrument. Depending on that, the conditioned digital signal is used in spike discrimination algorithms (slope/height window discrimination, template matching) or recorded as raw/processed behavioral data. In spike discrimination algorithms, slope and trigger levels are adjustable anywhere within the analog input range, and pre-trigger and window delays adjustable anywhere within the window length. An analog output of the conditioned signal is provided for monitoring or further processing. In multichannel configurations, the analog outputs of each channel are summed to provide a single audio monitoring output. A spike acceptance output is provided for interfacing with existing time stamping systems if using the APM as a spike discriminator. A basic set of digital inputs are provided to allow the user to implement spike discrimination and recording within the framework of a behavioral experiment.

53 Design Page 2 of 61 Signal Flow Through an APM-based Recording System The signal from the recording electrode passes through several stages of analog and digital signal conditioning before being displayed on screen or saved on disk. There are stages where signal conditioning parameters are fixed (for instance the gain of the headstage/preamp), and others that can be software programmed (the input gain of the A/D converter, the bandpass filter frequencies). The system records the action potentials originating from neurons, but there may also be a considerable amount of noise superimposed on them. There are two different types of noise that can be found in the system: stochastic noise and deterministic noise. The stochastic noise is a random signal originating from various electronic components of the system (resistors, operational amplifiers etc). A resistor is a noise generator, whose amplitude increases with its resistance. The contact of the recording electrode tip, can be regarded as a resistor in series with the amplifier input. Its resistance is in the megaohm range, and can introduce a considerable amount of noise. Electronic components used in headstages/preamps have quite low noise, equivalent to resistors having a few tens of kohms resistance, therefore the electrode itself may be the largest source of random noise in the system. Since the large electrode impedance is a result of the small contact area between electrode tip and recorded media, and not of the electrode material (W, Pt, Pt/Ir, stainless steel etc), there s little one can do to decrease the magnitude of this noise. Increasing the contact area will usually result in collecting action potentials from several neighboring neurons causing a dramatic decrease of the signal recorded from each neuron. Consequently, in practice electrodes become unusable when the impedance gets too low, although they may be providing a lower noise, in absolute values. In the lab environment, there may be a great deal of electromagnetic interference between other systems and the recording electronics. The resulting signals form the deterministinc noise. Examples of such sources of noise are the power lines, generating low frequency noise (50 or 60 Hz), or cell phones, generating high-frequency noise. Some sources of noise may be part of the recording setup, for instance the magnetic coils used for monitoring eye position in vision experiments working in an intermediate frequency range of 30 to 100 khz. These spurious signals can be removed by filtering in the APM recoding system, however, in situations where they are very large, they can shut down the entire recording system. It is a matter of compliance of the electronic circuitry to large signals. Due to the pipelined structure of the signal conditioning, a large noise can saturate various stages of the signal path, rendering them unusable long before reaching the filtering stage. In the real world, it is not possible to perform all signal conditioning in a single step at the input. Several stages performing special functions have to be connected in series. Consider a generic recording chain made of a headstage preamp, and a noise filter. The figure below illustrates in a simplistic way how a large low-frequency noise can saturate the input/output of the preamplifier, then is filtered out: The output of the filter may seem to be within the compliance range, but as the figure shows, there are blanking intervals where the signal is lost due to saturation of the earlier stage. If the noise were high-frequency (for instance generated by a magnetic coil eye position monitoring system) instead of low-frequency, the headstage and/or preamp would have been saturated continuously by fast switching between upper and lower compliance levels. This would have resulted in a null signal at the output. Therefore, a zero output signal may not only be the result of an open signal path, but also of a highfrequency noise having large amplitude. Below is shown the actual signal path in an APM recording system:

54 Design Page 3 of 61 The sensitive blocks that can remove noise from the signal, after it has caused saturation of various stages are: A. the antialiasing filter in the CODEC that is filtering out frequency components above 20 khz; B. the bandpass digital filter in the DSP that can remove high-frequency, as well as low-frequency noise, depending on how the user sets the low/high frequency filters on the main user interface of the APM software; C. the line and stimulus artifact suppressor circuits. When the CODEC digital input/output values go overrange, a visual indicator on the APM control panel is illuminated. However, some stages are internal to the CODEC, and there is no way of accessing their input/outputs to check them for saturation. In order to troubleshoot the internal stages, you have to try disabling their functionality, as long as they can be software programmed. Here are a few steps to follow: 1. Set the fixed gain to 1 in channel Settings, Input tab Set the programmable (variable) input and output gain to 0 db (x1) by moving the input and output gain sliders in the main control panel all the way to the left. 3. Set the low/high frequencies of the bandpass filter to 0 Hz and 20,000 Hz, respectively. 4. Disable the line noise and stimulus artifact suppressors. 5. Zoom all the way out using the V- button of the zoom controls. 6. Turn on audio monitoring. This enables passing signals in the frequency range of 0 to 20 khz with little or no processing, so you should be able to see the original signal. However, frequency components above 20 khz are going to be removed by both the anti-aliasing filter in the CODEC and the digital filter in the DSP. If you have a strong interference in the range khz (caused by a magnetic eye position monitoring system (aka eye coil ) used in vision experiments in awake behaving primates) it would be quite difficult to track where the saturation occurs. You could possibly measure the signal at the input of the APM modules, and apply the following rules of thumb: a. if you plan on using the inputs on fixed gain to x1, the peak-to peak amplitude of the signal should be less than 100 mv; b. if you need to set the fixed input gain to x10, then the amplitude should be less than 10 mv. If the signal displayed on the computer screen does not reach its maximum limits you can proceed to checking how compliant is the recording system to the input noise, by taking the following steps: 1. If the onscreen signal looks very small, zoom in using the V+ button to get a larger displayed amplitude. 2. Increase the variable gain one step at a time and look at the signal on screen. Adjust the vertical zoom in/zoom out controls to keep the displayed signal within normal range. Listen to the audio signal and ensure normalcy. 3. Increase the variable gain to its maximum, reset it, then go to Settings dialog and set the input fixed gain to x Repeat step 2 until the maximum gain is reached, or the display and audio monitoring indicate that the recording chain has stopped working properly. 5. Decrease the gain at least 2 steps below saturation point, if any. 6. Adjust the bandpass digital filter frequency to remove any other spurious signals. Typical values for filtering are

55 Design Page 4 of Hz to 10kHz. If by the time you reach the saturation point (if any) the displayed signal has a reasonable amplitude (even if you have to zoom all the way in), your system is ready for recording. If not, you have to try reducing the sources of noise. Usually it s electromagnetic interference that s causing most of the problems. Check your grounding. Try to improve the shielding, and reduce the length of the exposed leads that connect to the electrode. Try to decrease the strength of the magnetic fields near the recording site: place conductive screens between the monitor you may have in the recording room and decrease the strength of the magnetic field the eye coil systems use. If none of these methods is successful, please contact FHC technical support for further assistance Line Noise and Stimulus Artifact Suppression The recorded signals are often affected by deterministic noise originating in electrical interference from AC power lines, computer monitors, lights or other instruments in the experimental setup. Some of these signals are periodic (50/60 Hz), some of them aren t. The term deterministic refers to the fact that these signals have a predictable shape whenever they occur. An example of aperiodic deterministic noise is that induced by electrical microstimulation of the biological tissue while electrode recording is simultaneously performed. Each time a microstimulation pulse is applied, a post-stimulus artifact, having basically the same shape, shows in the recorded signal. This aperiodic sort of artifact cannot be removed by using frequency filters, like notch or comb filters, which may prove effective in removing the periodic noise. In the APM, frequency-domain filters replace time-domain filters. This is achieved by subtracting a replica of the stimulus artifact or the line noise in synchronization with its source. Every time the stimulator is fired, a digital trigger signal instructs the APM to begin subtracting artifact replica from the original signal, as depicted below. Any repetitive noise can be removed using this method as long as a digital synchronization signal can be obtained each time it is produced. Other examples include computer monitor noise from which a vertical sync reference signal can be obtained, or even the most common 50/60 Hz power line noise. In order to suppress the power line noise, an additional circuit (Provided in the LSG Line Sync Generator) is used to provide a synchronization signal whenever the signal crosses the zero line. The process is very similar to the one depicted in the previous figure, except that the trigger pulses come from LSG at constant 50/60 Hz rate and the replica length equals one signal period (continuous replica subtraction). The actual display of the APM application in a situation where 60 cycle noise affects the signal with the line noise suppression circuit disabled and enabled, respectively, is shown below:

56 Design Page 5 of 61

57 Design Page 6 of 61 The learning phase is the time period prior to recording when the artifact replica is built. There are multiple ways of building the replica during the learning phase. A replica can be built from the first artifact that follows a trigger pulse. This occurs when the user presses the load replica button. Another method is to start with a null buffer (replica buffer can be cleared by pressing the reset replica button) and perform a weighted average of the most recent artifacts. An iterative mathematical equation used for building a replica using a weighted average is: where x is the input signal, y i is the updated replica, y i-1 is the previous replica, and w is the update weight. The larger the averaging weight, controlled by the replica adaptation slider, the faster the replica learning. When the weight slider is set at 0, or the corresponding box is unchecked, the replica is frozen. The adaptation process as described above works under the hypothesis that the noise/interference is additive and quasistationary. There are certain circumstances when the noise, or at least its reflection in the digitized signal, has different properties. For instance, when attempting to remove the periodic line noise interference, if the recorded signal has large transients that eventually saturate the input, during the saturation interval the signal will become flat and the noise will be therefore absent from the signal. In this case, the adaptive noise filter will keep substracting the noise replica, introducing an artifact that is an inverted replica of the noise. If the replica adaptation is enabled, the linear adaptation algorithm will drive noise replica towards its null value during the transient saturation. When the input recovers from saturation and the noise is present again in the signal with its full amplitude, the adaptive filter will attempt to resume artifact suppression

58 Design Page 7 of 61 with a partially leveled replica, resulting in an undercompensation of the noise. Both the inverted replica and the undercompensated noise end up introducing a component locked to the underlying noise signal, which ends up showing as a line in the frequency spectrum of the signal, at the same frequency (or set of frequencies) as the noise. An algorithm that minimizes the effects has been implemented in APM, by a) turning off replica subtraction when the APM input is saturated and b) freeze replica adaptation as the signal approaches saturation. This algorithm is engaged when the Nonlinear replica adapation is checked on the APM main control panel. The implementation uses adaptation weights that decrease as the signal approaches saturation, as shown below: Where w is the adaptation weight, x is the input normalized to the full scale, x th is the amplitude threshold at which the weight is half the initial value, x d is the differentiated input normalized to the full scale, and x dth is the threshold for the differentiated input. The default values for the thresholds are set to 1/2 of the full scale, resulting in an adaptation curve as shown above. Since the adaptation thresholds are not variables that need to be frequently changed, or whose inadvertent modification can seriously affect the operation of the adaptation algorithm, the only way of modifying them is through the windows registry. Please feel free to contact FHC for instructions on how to modify these values, in case your experiment requires that. The operation of the adaptive filters is illustrated below, using a test signal that transiently drives the APM input into saturation: Original test signal, no adaptive filtering

59 Design Page 8 of 61 Adaptive filtering on with linear replica adaptation Adaptive filtering on with non-linear replica adaptation The second screenshot above illustrates the over-subtraction of replica (a rectangular non-symmetrical signal has been intentionally used as artifact, in order to visualize any inversion in the polarity) during the intervals where the original signal is saturated (flat), as well as under-compensation of the replica following the transient. The adaptation weight is set to 1%. Please note that the nonliear algorithm can only detect saturation of the APM input, not the saturation of other electronic circuits on the signal path that do not cause an APM input saturation as well. Also, nonlinear adaptation should not be enabled for suppressing large stimulus artifacts that normally drive the input into saturation (as it is often the case for electrical microstimulation pulses), as in this situation the saturation is part of the stimulus artifact, not part of the original signal. Nonlinear adaptation is meant for only for situations when smaller artifacts/interferences that do not normally drive the input into saturation, but saturation transiently occurs due to other factors. One has to keep in mind that the nonlinear adaptation algorithm cannot entirely address saturation-related issues, it is intended only for minimizing them. Care must be taken to prevent signal saturation, whenever this is possible. Sometimes it is impossible to present only the artifacts/interference signals to the APM input and manually trigger loading of the replica. In such circumstances, the replica has to be built using the entire signal (spikes + artifact) and allowing replica adaptation. The Adaptation weight has to be small, to prevent individual spikes from significantly contributing to building the replica. Performing a weighted average of a large number of recent artifacts will cancel out any individual contribution from uncorrelated spikes and retain only the salient artifact features. Some limitations of this method are situations where spikes are synchronized with the artifact, like when performing antidromic stimulation experiments. In practice, several sources of deterministic noise may coexist. An important feature of the line/stimulus artifact suppressor circuits in APM is that they can operate simultaneously on two independent sources, provided that each one feeds a synchronization TTL signal to specific digital inputs of APM. For instance one can suppress both 60 Hz line noise and 100 Hz vertical refresh monitor noise. Slope/Height Window Discrimination The action potentials originating from different recorded neurons have distinct shapes, and based on these differences one can select (or discriminate) certain neurons among others. In a standard slope/height window discriminator as well as in the APM, the selection of neurons is schematically represented in the figure below.

60 Design Page 9 of 61 Whenever the signal crosses the trigger level with a given slope a trigger event is generated, and the waveform is acquired and sent to PC for display and/or disk storage. The trigger level and position with respect to the start of the waveform can be freely adjusted within the signal input range / spike window length. Trigger events can originate from different neurons or even from large amplitude noise. In order to discriminate between these different events, an acceptance window is placed in the area through which spikes generated from the neuron of interest will most likely pass, but not the others. Whenever a spike that has caused a trigger event passes through the acceptance window, the waveform is marked as accepted, and the time at which it passes through the window is saved as a timestamp. The timestamp value is sent to the PC and/or attached to the recorded waveform. Since neural systems code their activity level in the repetition rate of the action potentials, not in their amplitude (which is fairly invariant), the timestamps are the essential piece of information that needs to be stored in order to analyze responses to stimuli. Waveforms are usually recorded for later data analysis and spike sorting using more complex algorithms. No matter how complex the spike sorting algorithms, their output is going to be the same: the timestamps of the recorded neurons. After powering on the modules and starting the application, by activating a recording channel (click on the buttons in the Channels window), the PC sends the last used spike discrimination parameters (trigger level and delay, acceptance window position, spike length etc) to the module. Starting from that point, the user can modify any of these parameters by simple drag-and-drop mouse operations on the screen elements (trigger line, window etc) in the main waveform window. One of the first things to adjust is the triggering level, in such a way that it falls within the signal range and leads to triggering events. If no signal is displayed on screen, obviously the triggering events are missing. This means that the triggering level is too high or too low, and it has to be brought closer to the zero line. Conversely, if the triggering level is too close to zero, the signal noise can lead to a flood of spurious triggering events that may eventually obscure the action potentials of interest. The APM is provided with a built-in helper function (Auto Adjust) that puts the trigger level adjustment on auto-pilot in order to maintain the spike rate within acceptable values. The Auto Adjust function not only moves the trigger level, but it also activates an unconditional display of the input signal, in the absence of a trigger event for more than a second. Therefore, if nothing is displayed on screen, the easiest way of getting some help is to activate the Auto Adjust mode. When satisfied with the degree of isolation between different neurons (or with respect to noise), achieved by adjusting the discrimination parameters, data collection for the experiment can be activated. If the APM module is used as a replacement for an analog window discriminator only, and its TTL acceptance pulses are collected by another timestamping system, there's nothing special to do in the APM application, except that the channel to be recorded has to be activated for timestamp acquisition (see settings or channel windows description). The APM's Spike Acceptance TTL output is enabled synchronously with the timestamps recording mode. From this point on, the data collection is going to be performed through the external timestamping system.

61 Design Page 10 of 61 In the slope height window discrimination method, the recorded timestamp corresponds to the position in time of the acceptance window and the TTL acceptance pulse corresponds to the time of the acceptance window or the trigger event, whichever comes last. Note As of version 1.58 of the software, the timestamp recorded in the data file in window discriminator has been changed to reflect the trigger event instead of window crossing. This way timestamps recorded in both window discriminator and template matching modes share the same threshold criterion, independent of the discrimination method and window placement. See also Besides the basic window discrimination algorithm, the APM implements an adaptive template matching algorithm which allows discrimination of up to four different units per channel, as described in Adaptive Template Matching (ATM) section of this manual. Adaptive Template Matching (ATM) Algorithm The template matching algorithm implements a powerful method for the discrimination of action potentials having distinct shapes, originating from different neurons in the proximity of the electrode tip (for extracellular recordings). While basic window discrimination provides the simplest and most straightforward way of manually selecting a particular waveform, the adaptive template matching is a more elaborate technique that allows some degree of automation. Particularly the adaptation of the template is important in order to compensate for the drift of the waveform shape and amplitude during long recording sessions, without user intervention. The spike acceptance criterion is the RMS (Root Mean Square) value of the voltage difference between the template waveform and the incoming spike waveform (see figure below).

62 Design Page 11 of 61 If the RMS value is less the match tolerance level, the spike is accepted, otherwise it is rejected. Further, if the RMS value of the voltage difference is greater than the adaptation threshold, but less than the match tolerance, the template itself is updated by performing a weighted average (w) between the existing template T and the accepted waveform S, according to the equation: T = (1-w)*T + w*s The acceptance TTL output pulse can be issued only after the whole waveform has been acquired. It has little jitter (less than 1 ADC sample) and is guaranteed to be issued in the interval between the last waveform sample and the sample immediately following it. The timestamp that is assigned to the recorded waveform corresponds to the time of the triggering event, or crossing the trigger level. See also Slope/Height Window Discrimination Setting Up the APM Triggering Level There are fundamental differences between a standard window discriminator, where waveforms were displayed on an oscilloscope, and the APM, where waveforms are displayed on a computer screen. On an oscilloscope, every trigger event causes a waveform to be displayed, by initiating a sweep of the beam. From this point of view, the oscilloscope display is lossless. Also, the screen s phosphor has a relatively large persistence, so that a fast sweep would actually be displayed for a much larger interval of time. A computer display presents the information in a totally different way, by assembling the information into frames, and displaying it in raster mode (the electron beam scans all the display area during one frame). Also, the persistence of the phosphor is much smaller, to reduce the smearing of dynamic images onscreen. Due to the frame-based presentation, what one sees is actually a snapshot of a continuous (scope-like) display, taken every frame. Some information displayed between two successive frames may be lost. Consider a practical example where the frame rate on a computer display is 60 Hz. This corresponds to an interval between frames of about 16.7 ms. Assuming the APM is set to display just the last received spike, if will continuously draw waveforms in the video memory as they are received. However, if two or more spikes are received within the same interframe interval, only the last one is displayed. The previous frames were overwritten by their successors. The figure below describes this phenomenon: The spikes 2 and 5, shown in light gray, are not displayed in frames 3 and 5. This simplified diagram assumes that each frame is displayed almost instantaneously every 16.7 ms. In reality, a frame is displayed progressively during almost the whole inter-frame interval, by scanning the screen area from top to bottom. However, that does not suppress this artifact causing some spikes to be lost. In other words, the maximum waveform rate that would result in a lossless display is 60 spikes/second. To achieve that, spikes would have to be distributed evenly across inter-frame intervals. In order to minimize that effect, the APM display was provided with a memory of the last spikes acquired. The number of memorized spikes can be adjusted through the spikes edit box/spin button in the main user interface. For instance, if the number of spikes is set to 5, you could possibly have 5 spikes coming in the 16.7 ms interval between two frames, and all of them would show up during the next frame display. In this case, the maximum spike rate for lossless display would be 300 spikes/sec. This may look more like a decent performance figure in common electrophysiological experiments. However, one has to keep in mind that what is

63 Design Page 12 of 61 displayed, are not only accepted spikes, but all spikes that cause a trigger event. If the trigger event is set too low, in such a way that the noise, not the actual action potentials from neurons, are triggering most of the waveforms, the chances of missing spikes is considerably higher. Increasing the number of simultaneously displayed spikes does not always solve the problem since increasing the spikes number causes a higher load on the host PC, slowing down of the communications which results in dropped waveforms when the communication buffers get full. A number of n=10 spikes would meet average user needs. While an oscilloscope could possibly see spikes even if it places the triggering level near the zero line, in an APM that would result in missing most of the action potentials. As previously stated, that s not a limitation of the APM, but something related to the way computer displays present snapshots of the incoming data, every frame, rather than continuous data. All acquired data is saved in the datafile or sent over TCPIP networks to the online clients, regardless of whether it has been displayed or not. Acquisition Overview After powering on the modules and starting the application, the program begins with the last used spike discrimination parameters (trigger level and delay, acceptance window position, spike length etc) of the current user profile. Starting from that point, the user can modify any of these parameters by simple drag-and-drop mouse operations on the screen elements (trigger line, window etc) in the main waveform window. One of the first things to adjust is the triggering level in such a way that it falls within the signal range and leads to triggering events (waveforms are displayed). If no signal is displayed on screen, the triggering events are missing. This means that the triggering level is too high or too low, and has to be brought closer to the zero line. Conversely, if the triggering level is too close to zero, the signal noise can lead to a flood of spurious triggering events (too many waveforms) that may eventually obscure the action potentials of interest. The APM is provided with a built-in function (Auto Adjust) that puts the trigger level adjustment on auto-pilot in order to maintain the spike rate within acceptable values. The Auto Adjust function moves the trigger level and activates an unconditional display of the input signal when there is an absence of a trigger event for more than a second. Therefore, if nothing is displayed on screen, the easiest way of getting some help is to activate the Auto Adjust mode. When satisfied with the degree of isolation between different neurons (or with respect to noise), achieved by adjusting the discrimination parameters, data collection for the experiment can be activated on the host PC using the APM s recording mode. If the APM module is used as a replacement for an analog window discriminator only, and its TTL acceptance pulses are collected by another timestamping system, the channel to be recorded has to be activated for timestamp acquisition (see settings or channel windows description). The APM's Spike Acceptance TTL output is enabled synchronously with the timestamps recording mode. At this point the data collection can be performed through the external timestamping system. Recording Modes The APM can be used as a stand-alone data acquisition device, wherein data collection is performed through the USB interface and stored in a data file on the host PC. Alternately, the TTL Spike Acceptance output signal can be used to provide acceptance pulses to an external timestamping system. In both cases, the user has the option of either acquiring data continuously (when non-gated mode has been selected in the Recording settings dialog), or performing conditional data acquisition based on the status of the Trial Gate and Trial Validate digital inputs. In non-gated mode, the data collection starts when the user selects the Recording button in the main panel. In gated mode, an external TTL signal triggers the data collection. Spike/Continuous Modes Spike data is acquired in the form of a variable length window around the trigger point (see Window Discrimination for a detailed description). The number of ADC samples in a window can be controlled using the horizontal in and out Zoom buttons. Only this waveform information is saved in the file and/or displayed on screen. The data between two spikes that cause a trigger event is discarded. When low-frequency (< 7 ksps) continuous data needs to be acquired (for instance slow-varying behavioral dat), the Continuous recording mode may be selected. In this mode, data is aquired and sent to PC in packets having a given length. Once a data packet has been acquired, the next packet follows immediately. By concatenating the acquired data packets on the PC side, one can reconstruct the original raw signal. The waveform display on screen is different for the two modes. In spike mode, a variable number of waveforms are superimposed on the display window, while in continuous

64 Design Page 13 of 61 mode the raw input signal is displayed in the form of a scrolling waveform. Spike/Continuous modes for a particular channel can be selected in the Input tab of the Settings dialog box. The settings are independent for each channel. As an alternative to retrieving timestamps in spike mode through the USB bus, one can use the APM as a standard window discriminator, and have the Acceptance Output signal provide TTL acceptance pulses to an external timestamping system. In this case, the host PC has no role in data acquisition, acting only as a console for adjusting discrmination parameters and visualizing the waveforms. Gated/Non-Gated Modes In both spike and continuous cases, the user has the option of continuously acquiring data, or performing a conditional data acquisition based on the status of the Trial Gate and Trial Validate digital inputs. The gated/non-gated modes can be selected through the recording settings page. In non-gated mode, the data collection starts when the user clicks on the Recording button in the main panel. In gated mode, an external TTL signal to the Trial Gate input will trigger the data collection. When gated mode is enabled, the data collection will be enabled as long as the Trial Gate input is going to be maintained high (ON). Multiple transitions between the ON/OFF states of the trial gate input are supported during a recording session (recording continuously enabled), and each interval during which the input is high will be marked as a different trial and stored accordingly in the data file. When disabling the recording button in main control panel, the actual end of recording will be deferred until the end of the current trial, if a trial is in progress. In gated mode, the timers are reset while Trial Gate input is maintained low. In a multichannel configuration, using Gated Mode with an external gate signal applied simultaneously to all channels in the system will accurately synchronize the timers on all channels. In any other situation, the timers are not guaranteed to be synchronized across multiple channels. In gated mode, the time origin for the recorded timestamps is the start of each trial, or the start of the first trial, depending on the checked status of the reset timers checkbox. Trial Validation In order to limit collection of data to relevant trials only, trials can be validated in gated mode by an external signal applied at the Trial Validate TTL input. Data for non-validated trials is discarded without being saved into the datafile. The validation pulse can be provided anytime in the interval between the trial end and the start of the next trial. This mode is operational when saving each trial data as separate files.

65 Design Page 14 of 61 Another TTL input (Event) is provided for recording the timing of other events (ex presentation of stimuli). The timestamp of the external event will be stored in the datafile, with the same time reference as the spike timestamps. Data Storage and Analysis The user has a number of options of analyzing collected data. The APM software package has no built-in data analysis programs, but provides compatibility with most popular data analysis software. One simple way of looking at the data is to load it into Matlab (Mathworks Inc) using the provided apmgetdata mex function (described in the Loading Data into Matlab reference section). Another option would be to save it directly in a PLX format, compatible with the Offline Spike Sorter from Plexon Inc or Neuroexplorer (NEX). Since the APM data file has a simple straightforward message-based structure (described in the Data File Format reference section), there's also the option of directly reading the APM files into a user-written data analysis program. Upgrading the Firmware The APM offers the powerful option to keep up-to-date with the latest code developments, on both the PC application and the APM firmware. A PC application upgrade, and/or a DSP firmware upgrade can be easily performed. On any APM channel, different functionality can be implemented through this upgrade process. The PC application upgrade requires a few easy steps: Download from (downloads section) the zip archive containing the updated software package; Unpack the zip archive to a directory on the computer; Run Setup.exe and follow the installation instructions on the screen; Power up the APM, and start the updated application. Activate the channels; If a DSP firmware upgrade is required, you will be informed in a pop-up window, when clicking on a channel. If this is the case, all functions, except firmware upgrade, are disabled. You may proceed to step 3 in the next paragraph describing the firmware upgrade; The firmware upgrade requires erasing the FLASH memory that holds the DSP code, blank-checking it, uploading the new

66 Design Page 15 of 61 firmware, programming the new code into the FLASH, and verification of the programmed data. This procedure is automated, requiring little intervention from the user. In multichannel configurations, the procedure has to be repeated on every channel in the system. Before you proceed, make sure that you turn off the signal sources (TTL and analog) so that the module will not have to do computationally intensive data acquisition and processing functions during firmware upgrade. Here are the steps to be followed: Open the communication with the module by clicking on the channel whose firmware needs to be upgraded in the channels window. Caution: if the button indicating the status of the channel does not turn light blue or green (indicating that the module has successfully responded to the software commands), do not attempt to perform a firmware upgrade. First try troubleshooting the communications and/or the module. A firmware upgrade can only be performed if the module is in good working condition, but its firmware is an older version. Otherwise, the FLASH memory can get corrupted, and the module will have to be booted from ROM. If this happens, please ask FHC technical support before proceeding. In the main application window, click on Settings, then select the Module tab. As a confirmation that the module is in good working condition, you will see that the module's current firmware type and version are both displayed correctly. If any of them is unavailable (shown as N/A), do not attempt to go further through the firmware process, or the FLASH memory contents can get corrupted. Click on the Upgrade button. An open file dialog will pop-up. Browse to the directory where you have unzipped the firmware files. If you have previously performed a PC application update, the latest firmware files already reside in the same directory where the application has been installed (typically C:\Program Files\FHC\APM-01\). Select the desired firmware file having the extension.ldr (default is APM-01-DSPFW.ldr). After clicking Open in the open file dialog, the firmware process automatically starts. First of all the FLASH memory is erased. Then its contents are checked to confirm that they are blank. Next the new code is uploaded to the APM, programmed and verified in a single apparent step.

67 Design Page 16 of 61 After performing a firmware upgrade, the new code is executed at next processor reset. You will be asked if you want to perform a software reset right away, or do a hardware reset at a later time by cycling APM s power. After a firmware upgrade and reset, the DSP executes the initialization (programming serial ports, selecting inputs, LED test etc) code, therefore you will not be able to communicate with the module for a few seconds, before initialization is completed. It is recommended that you wait for the end of the reset cycle, before you close the dialog. The end of the reset cycle is indicated by the spike acceptance LED in off position and a steady color of the USB status LED. A firmware upgrade process is complete only when the application has been exited. Upon exiting the program, the newly read variable addresses from one of the firmware files (*.map) are stored into the system registry. In multichannel configurations, the application has to be restarted after the upgrade process has been repeated for all channels in the system. Data File/TCPIP Message Format Data can be saved into the default APM data format, or directly into different formats for use with other data analysis software. Provisions are made for saving in a PLX format for use with the Plexon Inc. Offline Spike Sorter, or with Neuroexplorer. There are restrictions in the operation involved with NEX compatibility. Please refer to the Settings dialog. For online analysis, data can be retrieved through a TCPIP network into user applications (see TCPIP Data Server in Settings dialog). The data format is identical for file saving and TCPIP connections data stream. Some Matlab examples on how to retrieve data online are RateHistogram.m and APMPNetClient.m in the Matlab/TCPIPClient subdirectory of your installation. User data can be inserted into the recorded data files through TCPIP connections or serial communication ports (see TCPIP Message Server or Serial Message Server in Settings dialog). The user messages have to be formatted by the sending application according to the specifications below. Some Matlab examples on how to insert user data are SendUserDataDemo.m and SerialDataDemo.m, located in the Matlab/UserData subdirectory of your installation. The data file in APM format has a sequential organization, containing a series of messages that describe the instrument s operational parameters, their evolution in time and the acquired data. The same data is sent through the TCPIP data server, when a client is connected over the network. There s no header, and messages may have any order in the data file. The general message structure is based on a sequence of 32-bit words, as follows:

68 Design Page 17 of 61 Note: the unit number is present only in the waveform/templates messages, not being required in any of the other messages. The message codes are described in the following table: Code of the message and included data 0 Non-accepted waveform 1 Accepted waveform 2 Out-of-trial non-accepted waveform 3 Out-of-trial accepted waveform 4 Spike timestamps (in sample counts) - click for code description 5 Trial start (in sample counts) 6 Trial end (in sample counts) 7 External event (in sample counts) 8 Trigger level (in ADC levels) 9 Trigger time position (in samples, relative to the waveform window start) 10 Trigger slope (+1 for positive, -1 for negative) 11 Acceptance window time position (in samples, relative to the waveform window start) 12 Acceptance window lower end (in ADC levels) 13 Acceptance window upper end (in ADC levels) 14 Time calibration (32-bit float, in microseconds per sample) 15 Voltage calibration (32-bit float, in microvolts per ADC level) 16 ADC sampling frequency (in Hz) 17 Trial validate external event (in ADC sample counts) LFP (undersampled spike data) time calibration (a 32-bit float, in microseconds per 18 sample) 19 Reserved for APM-02 - Digital Inputs Event 20 Reserved for APM-02 - Strobed Digital Data 21 Reserved for APM-02 - UART data 22 Reserved for Guideline spike length change 23 Reserved for Guideline number of samples averaged in order to obtain an undersampled data point (or a pair of values), record 64 below 24 Reserved for Guideline mtdrive position (in micrometers) 25 Channel information - firmware type and version 26 Channel name - a string 27 Adaptive line noise filter ON/OFF 28 High-pass frequency 29 Low-pass frequency 30 Module's serial number 32 Template waveform 48 Continuous data packet 56 LFP data packet - undersampled spike data 64 Reserved for Guideline undersampled min/max values data packet User message User message User message User message 3

69 Design Page 18 of User message User message User message User message User message n User message n The information regarding events and time intervals is represented as the number of samples acquired since the start of trial or the beginning of recording, depending on the selected recording mode (see gated mode description). The time in microseconds can be calculated by multiplying the value with the current time calibration for that channel. All the signal values are coded as 16-bit signed ADC levels (left-extended to 32-bit words), from which the actual voltage can be calculated by multiplying the value with the current voltage calibration for that channel. Below are some examples: 64-sample accepted waveform on channel 5: A continuous data message has the same structure as a spike waveform message, except that Word 0 is 0x30 (hex), and the unit is always 0. The timestamp marks the beginning of each data packet and can be used for tracking whether there are missing packets. An LFP (undersampled spike data) message has the same structure as a continuous waveform message, except that Word 0 is 0x38 (hex), and the unit is always 0. The timestamp marks the beginning of each data packet and can be used for tracking whether there are missing packets. See LFPReadDemo.m in Matlab subdirectory for a demonstration of reading and plotting LFP data. 32 timestamps on channel 3: Each timestamp comes as a pair of 32-bit words. The first one contains the unit number and other information, while the second contains the actual timestamp, in ADC samples, relative to the trial start. The timestamp codes contain information about the GATE input, and the unit number, bit-coded as follows:

70 Design Page 19 of 61 Trial end at 6894 ADC samples, on channel 2: User data sent by means of the TCPIP message server or serial message server is saved into the data file as soon as a complete message has been received. The user is free to fill in any information in the Data 0... Data n-1 fields, as long as the message conforms to the general structure presented at the top of this section. A malformatted message may compromise the whole saved data file, rendering it unreadable. TCPIP messages do not only get saved in the data files, they may be processed by the APM application to execute certain tasks. At user request, the first TCPIP messages have already been used to implement certain APM commands. For now: user message 0 is used for remotely enabling/disabling recording of data user message 1 is used for inserting an arbitrary string containing trial description into the datafile user message 2 contains a string that is used for setting the data file name To ensure compatibility with later versions, one should start with larger TCPIP message numbers, for instance n=64. In the Matlab/UserData subdirectory of your installation there is a sample SendUserDataDemo.m that demonstrates how to insert user data in the recorded file through TCPIP connections to the APM message server. Sending user data through serial communication ports is illustrated in the SerialDataDemo.m sample. Messages in the data file have no predefined order. The messages are saved in the order they arrive from different APM modules. Messages originating from different channels may be interleaved. Provided with the installation kit are a number of example Matlab scripts that parse the messages in the data files and extract the information stored in them. When saving data in.plx file format, the user data sent to APM through TCPIP/serial message on channel 257 (only) is recorded as a strobed event. Below is an example of a message that contains the digital code 447. The message consists in a sequence of four 32-bit words: Word 0 Message Code = (User Message 4) Word 1 Channel = 257 (Strobed Event Channel) Word 2 Data Length = 1 Word 3 Data = 447 (Digital Code) The same message can be represented as a sequence of 8-bit characters (bytes): Byte Value Since the TCPIP/serial data is recorded by the host PC and not by the APM, no accurate timestamp can be associated with

71 Design Page 20 of 61 the received message. Generally speaking, the TCPIP/serial communications and associated hardware are not designed to provide data in real time, and there are intrinsic latencies and jitters associated with data transmission. However, when saving data in.apm format, the approximate time at which a message was received can be inferred from the location in the data file at which the message was inserted (e.g. after waveform having timestamp x, but before the waveform having timestamp y). In.plx mode the data record sequence does not matter, and a timestamp is required when saving a strobed event record into the data file. This timestamp is automatically calculated by the windows application, to be the timestamp of the last received message (a spike waveform, a trial start, trial end or a digital event), plus 1 ADC sample. Loading Data into Matlab APM data files can be loaded into Matlab using the sample scripts in the Matlab subdirectory of your APM application installation. The most complete sample is APMReadData.m, which takes as the input argument the data file name and path, while the output is a structure having the following fields: channels : a vector of channel sub-structures (see below), containing the data for each channels; The channels sub-structure has the following fields: time_calibration; by multiplying the waveform timestamp in ADC sample counts with the time calibration, one can obtain the actual timestamps in microseconds, relative to the trial start or recording start; voltage_calibration; by multiplying the waveform ADC values with the voltage calibration, one can obtain the actual volt input values; trigger_level, trigger_delay, window_delay etc: any other parameters related to spike discrimintation; levels are expressed as ADC values; time intervals are expressed as number of ADC samples; timestamps : a vector of recorded timestamps; when only waveform recording has been enabled, this vector is empty; for a rationale of recording timestamps simultaneously with waveforms, see recording settings description. spikes : a vector of spike sub-structures (see below); The spikes sub-structure has the following fields: unit : 0 = rejected or unsorted spike, 1 to 4 = accepted or sorted unit number. timestamp : the spike s timestamp, in ADC sample counts. waveform : a vector containing the spike s waveform, in ADC values; when only timestamps recording has been enabled, this vector is empty. Shown below is the Matlab command window output when loading a test data file named "DemoData.apm": >> apmdata=apmreaddata('demodata.apm'); Processing DemoData.apm... >> apmdata.channels ans = trig_level: trig_time: 15 win_time: 21 win_low: win_high: time_calibration: voltage_calibration: template: [1x4 struct] spikes: [1x1064 struct] timestamps: [] >> apmdata.channels(1).spikes ans = 1x1064 struct array with fields: unit timestamp waveform

72 Design Page 21 of 61 >> apmdata.channels(1).spikes(1) ans = unit: 0 timestamp: 1282 waveform: [40x1 double] >> apmdata.channels(1).spikes(1).waveform ans = Saved continuous data is retrieved as a vector of values in the "continuous" field, as shown below. The continuous and spike data can coexist within the same data files, on different channels appropriately configured. > apmdata=apmreaddata('contdata.apm'); Processing ContData.apm... >> apmdata.channels(1) ans = trig_level: trig_time: 17 win_time: 22 win_low: 3178 win_high: 6606 time_calibration: e-005 voltage_calibration: template: [1x4 struct] continuous: [10752x1 double] timestamps: [] spikes: [] >> apmdata.channels(1).continuous ans = LFP data is retrieved very much like the confinuous data, but in a field named "LFP". When using gated mode and recording several trials, apmdata is a vector of structures, each element corresponding to a different trial. There's a demostration script "APMReadDemo.m" in the Matlab subdirectory, that illustrates the use of the APMReadData function. Other Matlab scripts that return just waveform or timestamp data in a simpler format are also provided. For retrieving data over the network through the built-in TCPIP Data Server, a sample Matlab script "APMPNetClient.m" can be used on a remote computer. The program uses a TCPIP/UDP Toolbox that requires the files pnet.m and pnet.dll to be installed in the same directory as "APMPNetClient.m" or in some other directory in Matlab's path. DSP Firmware The APM module's core consists of an Analog Devices ADSP Digital Signal Processor (DSP). The DSP can be

73 Design Page 22 of 61 programmed using Analog Devices' development tools in C, C++ or assembly language. Evaluation versions of such tools can be downloaded from In order to benefit from a larger community of researchers developing code for the APM, FHC has adopted an open source policy for the DSP code. This document describes one of the recent releases of the DSP firmware versions. A number of much simpler samples with commented source code are available at Project The project contains a number of header files and mixed C/assembly source file. The early versions of the software were written entirely in C. However, code written in C does not always execute in the fastest way. When template matching was added to the original window discriminator mode, the DSP code had to be optimized to run at maximum speed in order to perform real-time template matching, therefore some of the routines had to be re-written in assembly. Here's a list of files in the project: APM-02.h - a header file containing the declaration of variables used in the program. defapm-02.h - a header file containing the declaration of constants, common to C and assembly source files. ad1881a.h - a header file containing the declaration of variables and constants used for communicating with the Analog Devices AD1881 CODEC. A CODEC is a combination of A/D and D/A converters, plus signal conditioning, on a single chip. EZUSBSX2.h - a header file containing the declaration of variables and constants used for communicating with the Cypress EZ-USB SX2 (CY7C68001) High-Speed USB Interface Device. APM-02-DSPFW.c - the main C program - see detailed description below. is_spike_accepted.asm - assembly language implementation of a function that tests the matching of a spike waveform against a given template. copy_timestamps.asm - assembly language implementation of a subroutine that copies a set of timestamps from the timestamp buffer to the USB communication buffer. Both buffers are circular. copy_spike.asm - assembly language implementation of a subroutine that copies a spike waveform from the A/D input buffer to the USB communication buffer. Both buffers are circular. copy_lfp.asm - assembly language implementation of a subroutine that copies a LFP data packet from the LFP circular buffer to the USB communication buffer. update_template.asm - assembly language implementation of a subroutine that performs a weighted average between the spike waveform and the previous template, to obtain an updated template. copy_template.asm - assembly language implementation of a subroutine that copies an updated template from the template definition array in the USB communication circular buffer. How does it work? At reset, the DSP executes an initialization code that configures memory accees, interrupt modes, the peripherals built into to the DSP (serial ports for communicating to the CODEC and USB communication controller), then enters a loop in which it processes the input data stream from the CODEC. With every ADC sample, depending on the state and parameters of the software discriminator the software checks for the waveform crossing of triggering level, discriminator window, or for template matching. Whenever a spike has been accepted or a non-accepted waveform has been acquired, the firmware is assembling the information into a message with fixed formatting, to be sent via USB to the host PC (click here for format description). The message is then transfered into a communication buffer and sent to the PC. Variables Here's a list of the most important variables that control the operation of the APM module. Variables are signed integers, unless otherwise specified. lowcutoff - sets the low cut-off frequency of the digital bandpass input filter, in Hz highcutoff - sets the high cut-off frequency of the digital bandpass input filter, in Hz inputgain - sets the gain of the input stage of the AD1881A CODEC, in 1.5 db steps. Valid values are 0 to 15, corresponding to a gain ranging from 0 to 22.5 db inputoffset - the input offset compenstation constant, that is substracted from the input.

74 Design Page 23 of 61 inputdiggain - sets the digital gain of the input. It is a 32-bit floating point value. inputsource - selects the input source for the AD1881A CODEC and the position of the analog input switches. The lower 4 bits select the input source of the CODEC. See the datasheet of AD1881A for the input selection table. The bits for turning on/off the analog switches setting the gain and AC/DC mode are stored on the bits 8 through 11of the 32-bit word. See the analog front-end schematics shown here in order to find out what switches have to be set in order to activate a certain signal path. The subroutine that performs writing of the lower 4 bits to CODEC and the bits 8 through 11 to APM CFG register is set_input_source in APM-02-DSPFW.c. spikelen - the number of ADC samples for acquiring/displaying a spike waveform. In continusous mode, this variable indicates the number of samples in an continuous data packet LFPLen - the number of ADC samples in a LFP data packet. trigdelay - sets the position in time of the triggering point on a spike waveform. It actually sets the number of waveform samples that are displayed before the triggering event occurs. triglevel - sets the level of the signal that would trigger waveform acquisition, in ADC levels. trigslope - sets the slope of the signal that would trigger waveform acquisition. A value of 1 means positive slopw, while a value of -1 means a negative slope. windelay - sets the position in time of the acceptance window, on a spike waveform. It can be less then trigdelay when window is placed before the triggering point. winlow - lower end position of the acceptance window, in ADC levels. winhigh - upper end position of the acceptance window, in ADC levels. samplingfrequency - sets the A/D sampling frequency. The valid range in "spike" discrimination mode is between 7,040 Hz and 48,000 Hz. Setting it below 7,040 Hz will automatically switch data acquisition from "spikes" mode into "continuous" mode. timercount - the DSP clock count after which the built-in timer will generate an interrupt. The timer interrupt is used for instance for acquiring a waveform even in the absence of a trigger event, when auto adjust mode is selected. synctime - the time (in ADC samples) at which a low to high transition has occured at the Event TTL input. tstartoftrial - the time (in ADC samples) at which the Trial Gate TTL input became 1, signalling a start of trial. tendoftrial - the time (in ADC samples) at which the Trial Gate TTL input became 0, signalling an end of trial. inbuffermax - Variable that sets the maximum usage of the input buffer (in 32-bit words) for holding spike data. Its purpose is to limit the time lag in the spike display in preview mode, if the computer is flooded with data. The tradeoff is that some of the data to be visualized may be lost. The variable must be set to the maximum value of 0x before activating recording mode, to minimize the chance of losing data. waveformsacquired - a count of the waveforms that have been successfully acquired. waveformsdropped - a count of the waveforms that have been dropped due to the fact that the PC and/or the USB bus could not handle all the data flow. benableacquiring - a general switch (boolean variable) enabling/disabpling the spike discrimination process and data acquisition. bacquirewaveforms - a switch (boolean variable) enabling/disabpling the acquisition of the spike waveforms.

75 Design Page 24 of 61 bacquiretimestamps - a switch (boolean variable) enabling/disabling the acquisition of the spike timestamps. bautowaveforms - a switch (boolean variable) enabling/disabling the acquisition of the spike waveforms even in the absence of triggering events. The rate at which waveforms are acquired is set by the timercount variable. bgatedacquiring - a switch (boolean variable) enabling/disabling the acquisition only when Trial Gate input is high. breward - a boolean variable signalling that the trial has been succesfully completed, by a transition to high of the Reward TTL input. benablesas1(2) - boolean variables enabling/disabling line sync and stimulus artifact suppressors. SAS1(2)Weight - the values (float) of the adaptation weights (0 to 1.0) for the noise replicas in the line sync and stimulus artifact suppressors. audiomode - an integer specifying the audio monitoring mode (raw, level, threshold, accepted, pulse). Initialization Routines At reset, the DSP and various on-chip peripherals as well as the external CODEC have to be intialized and programmed. Interrupts setup_sport0 - initializes the serial port 0, to which the CODEC is connected. The port is configured in DMA transfer mode for both data reception and transmission. The DMA receive complete interrupt service routine (ISR) is set to spr0_asserted, while the DMA transmit complete ISR is set to spt0_asserted. setup_sport1 - initializes the serial port 1 that handles SPI (Serial Peripheral Interface) communications with various on-board devices (serial EEPROM, UART) or with external devices, by emulating an SPI master. send_1881_config_cmds - subroutine that configures the CODEC. It requires that SPORT0 is already configured and running. init_sx2 - subroutine that configures the EZ-USB SX2 device. It loads the descriptor into the descriptor RAM, then handles USB enumeration and configures endpoint sizes depending on the USB connection type (1.1 or 2.0). init_21k - subroutine that intializes some DSP core registers, configures memory access, sets the direction of the I/O flags and configures the timer and external interrupts. It also configures DMA channel 7 for transferring data to the USB peripheral device. After the inital initialization of the peripehrals and programming of the CODEC, all the data acquisition process is driven by the periodical interrupts generated by the A/D converter every time a new digitized sample is available. The main program loop waits for the interrupts in order to retrieve data, format the messages to be sent to PC over USB, and handle USB communication buffers. spt0_asserted - this interrupt service routine (ISR) is invoked by the Direct Memory Access (DMA) controller that handles the data transmission of the serial port 0, to which the CODEC is connected. spr0_asserted - this interrupt service routine is invoked by the DMA controller that handles the data reception from the serial port 0, every time a new A/D sample has been acquired by the CODEC. All the time-critical signal conditioning and spike discrimination processes are performed in this interrupt subroutine. This subroutine is used only in "spikes" mode. When using continuous mode, by setting the sampling frequency below 7,040 Hz, a different ISR is used. spr0_continuous - the interrupt service routine that handles data received on serial port 0 in continuous mode. In this mode, there's no spike discrimination process running, and raw data is continuously acquired and sent to PC. This mode is activated by setting the sampling frequency to a value smaller than 7,040 Hz.

76 Design Page 25 of 61 spr0_loopback - a temporary interrupt service routine for handling data from serial port 0 during reconfiguration of the codec. It performs no spike detection or data acquisition. This ISR is for instance activated while the DSP is sending commands to CODEC for changing the sampling rate, to prevent detection of glitches and other artifacts as spike data. irq1_asserted - the interrupt service routine that handles transfers to/from EZ-USB SX2 peripheral device. It executes whenever the EZ-USB SX2 signals through FLAGB that there's new data from PC waiting to be read, or through FLAGA that the input USB endpoint for transferring data to PC is empty, and ready to receive more data. The transfer to the USB in endpoint is performed using DMA transfers, using DSP DMA channel 7, in two steps: a transfer from external RAM to internal RAM, followed by a transfer from internal RAM to EZ-USB SX2. irq1_asserted handles the initiation of the first step of the transfer. usb_in_asserted - the interrupt service routine that handles transfers from internal RAM to EZ-USB SX2 peripheral device, using DSP DMA channel 7. timer_asserted - the interrupt service routine that executes whenever the internal timer has expired. The interval between periodical interrupts is set using the timercount variable. Operational Routines While spike discrimination and data acquisition is performed in the interrupt service routines, there are a number of subroutines that are called at user's request to change various operational parameters. set_input_source - selects the CODEC's input and activates the analog switches. It performs writing of the lower 4 bits to CODEC (through DSP SPORT0) and the bits 10 and 11 to APM CFG register. Click here to see the analog front-end schematics. set_input_gain - selects the CODEC's variable gain and the analog switches that set the fixed gain. It performs writing of the lower 4 bits to CODEC (through DSP SPORT0) and the bits 8 and 9 to APM CFG register. Click here to see the analog front-end schematics. set_filter - calculates the FIR filter coefficients for performing the digital filtering of the input signal. The subrouting is invoked whenever the cut-off frequencies of the digital bandpass filter have been changed, to recalculate the FIR coefficients. set_sampling_frequency - subroutine that changes the sampling frequency of the CODEC. If sampling frequency is between 7,040 Hz and 48,000 Hz, then the SPORT0 ISR is set to spr0_asserted and spike discrimination mode is engaged. If it is below 7,040 Hz, the ISR is set to spr0_continuous, and continuous mode is engaged. ReadDM32 - subroutine that reads the contents of a memory area into a message to be sent to PC. The message format is described in the USB Message Format section. RWSPI - subroutine that reads and writes data on the SPI bus (through DSP SPORT1). The message format is described in the USB Message Format section. ReadParam/WriteParam - subroutines that read/write 32-bit values at the specified address of the parameter EEPROM. The parameter EEPROM is a serial device connected on the SPI bus (DSP SPORT1). Although the serial EEPROM is byte-oriented, ReadParam/WriteParam make it visible as a 32-bit device. Parameter addresses start at 0. The message format is described in the USB Message Format section. Main Program Loop After calling the initialization subroutines, the program enters a loop in which it waits for interrupt events to process data. It first tests the bstore variable to see if a spike waveform acquisition has been completed. If yes, the waveform samples are copied from the input circular buffer (spikebuffer, formatted into a message to be sent over USB and stored into the communication buffer. It then tests the bstorelfp variable to see if a LFP data packet acquisition has been completed. If yes, the waveform

77 Design Page 26 of 61 samples are copied from the LFP circular buffer (LFPBuffer, formatted into a message to be sent over USB and stored into the communication buffer. It further tests TSCount variable to see if at least 64 timestamps have been acquired. If yes, assembles the latest 64 timestamps into a message placed inthe USB communication buffer. At trial end and at user request, the timestamps buffer is flushed regardless of the number of acquired timestamps. Next, trial start, trial end, external and reward events, are handled and aprroprate messages are formatted in the USB communication buffer. After all data acquisition-related events have been handled, the data waiting to be sent to PC in the USB comunication buffer is sent one 32-bit word at a time. If the USB bus is busy, transmission is retried during the next execution of the main loop. Then, commands from PC are processed. Finally, the program tests for changes in the operational parameters (filter frequencies, input gain and source, sampling frequency) and invokes the appropriate routines for setting the new modes. See also USB Message Format APM ActiveX Controls The windows application that communicates with the APM module is designed using two custom ActiveX controls for USB communication and data display. These ActiveX controls can be used in other applications (Visual Basic, Matlab), and even in web pages (click here to see the graphics display demo). They handle data for a single channel, and multiple instances of the controls are created in multichannel configurations. The two custom controls are: APM01Comm Properties Methods Events APM01Graph Properties Methods Events Following Microsoft's tradition of documenting ActiveX controls, only VisualBasic syntax is described. Other applications/languages may use a different syntax, but the essential information about the properties, methods and events are as described in the VisualBasic examples. A sample Visual Basic project that illustrates the full use of the controls is located in the VisualBasic folder of the APM software installation. APM Comm Control Properties Methods Events The APM01Comm control manages USB communications between host PC and the APM modules. It fires an event whenever a new message has been received from APM or a message has been sent. It is a convenient way of communicating with the modules without knowledge of the low-level USB communication protocol. Click here for a description of the USB messages format. APM01Comm Properties

78 Design Page 27 of 61 CommPort PortOpen InBufferSize OutBufferSize WaitForEventProcessing Sets/Retrieves the USB port number, or USB device ID, to connect to. Sets/Retrieves the status of the USB communications (open or closed). Sets/Retrieves the size of the input buffer. Sets/Retrieves the size of the output buffer. Boolean variable that indicates whether the read thread of the control waits for the application to process data, as a response to a CommEvent, or continue reading data and add it to the input buffer. Comm Port Property Sets/Retrieves the USB virtual "port number", or USB device ID, to connect to. Syntax object.commport [ = value ] The CommPort property syntax has these parts: Part object value Required. Name of the APMComm object. An Integer specifying the USB communications virtual port number. Remarks The virtual "port number" is a number that is uniquely assigned to each APM module by the APM windows driver when it's powered up and connected to the PC. The USB standard does not define such property, it is defined here for convenience, to be similar to a virtual serial communication port. The port numbers, or USB device IDs, are assigned by the windows driver in the order the devices are powered up, or reported as being connected to the PC by windows lowlevel USB drivers. The first module connected to the system will have virtual port number 0, the next one number 1, and so on, regardless of the physical location of the USB port to which they are connected. The syntax shown here is for VisualBasic. Example MsgBox "USB device ID : " & APM01Comm.CommPort InBufferSize Property Sets/Retrieves the size of the input buffer holding data received from APM over the USB bus. Syntax object.inbuffersize [ = value ] The InBufferSize property syntax has these parts:

79 Design Page 28 of 61 Part object value Required. Name of the APMComm object. An Integer specifying the input buffer size. Remarks Due to the implementation of the input buffer as a circular buffer, the InBufferSize value has to be a power of two. When trying to set it to a different value, it will be truncated to the greatest power of two smaller than the given value. The syntax shown here is for VisualBasic. Example If APM01Comm.InBufferSize < Then APM01Comm.InBufferSize = End If OutBufferSize Property Sets/Retrieves the size of the output buffer holding data to be sent to the APM module over the USB bus. Syntax object.outbuffersize [ = value ] The OutBufferSize property syntax has these parts: Part object value Required. Name of the APMComm object. An Integer specifying the input buffer size. Remarks Due to the implementation of the input buffer as a circular buffer, the OutBufferSize value has to be a power of two. When trying to set it to a different value, it will be truncated to the greatest power of two smaller than the given value. The syntax shown here is for VisualBasic. Example If APM01Comm.OutBufferSize < Then APM01Comm.OutBufferSize = End If PortOpen Property Sets/Retrieves the USB virtual communication port status (open or closed). Syntax

80 Design Page 29 of 61 object.portopen [ = value ] The PortOpen property syntax has these parts: Part object value Required. Name of the APMComm object. A boolean expression specifying the state of the USB virtual communications port. Settings The settings for value are: Setting True False Port is opened Port is closed Remarks The syntax shown here is for VisualBasic. Example If Not APM01Comm.PortOpen Then APM01Comm.PortOpen = True End If WaitForEventProcessing Property Boolean variable that indicates whether the read thread of the control waits for the application to process data, as a response to a CommEvent, or continue reading data and add it to the input buffer. Syntax object.waitforeventprocessing [ = value ] The WaitForEventProcessing property syntax has these parts: Part object value Required. Name of the APMComm object. A boolean expression specifying the wait/no-wait mode. Settings The settings for value are: Setting

81 Design Page 30 of 61 True False Read thread waits for completion of CommEvent Read thread continues reading data after firing CommEvent Remarks When WaitForEventProcessing is set to True, the data array retrieved with the GetInput method, every time a CommEvent is fired, will contain a single APM message. Otherwise, several APM messages are likely to be concatenated in the retrieved array. Having a single message in the input buffer makes their processing more straightforward, but may introduce some delays in receiving data, since the read thread is paused while the application processes the CommEvent and retrieves the data from the buffer. The syntax shown here is for VisualBasic. Example If Not APM01Comm.WaitForEventProcessing Then APM01Comm.WaitForEventProcessing = True End If APM01Comm Methods GetInput SetOutput GetInBufferCount GetOutBufferCount Returns data received through USB interface from the APM module. Sends data through USB interface to an APM module. Returns the number of 32-bit words that are stored in the receive buffer. Returns the number of 32-bit words that are stored in the send buffer. GetInBufferCount Method Returns a Long representing the number of 32-bit Integers received from the APM over the USB bus. Syntax n = object.getinbuffercount The GetInBufferCount function syntax has these parts: Part n The number of 32-bit Integers received from the APM module. object Required. Name of the APMComm object. Remarks The syntax shown here is for VisualBasic.

82 Design Page 31 of 61 Example Private Sub APM01GetData() Dim datalength As Long datalength = APM01Comm.GetInBufferCount If (datalength > 0) Then NewData = APM01Comm.GetInput... End If End Sub GetInput Method Returns a Variant Array of 32-bit Integers containing the input data. Click here for a description of the returned data format. Syntax arrayname = object.getinput The GetInput function syntax has these parts: Part arrayname object Required. Name of the array for the returned data, a Variant Array of 32-bit Integers. Required. Name of the APMComm object. Remarks The return array does not need to be pre-allocated using Dim statement prior to the function call. The GetInput method allocates memory for it and assigns subscripts that are 0 based, regardless of the Option Base statement. The syntax shown here is for VisualBasic. Example Private Sub APM01GetData() Dim datalength As Long datalength = APM01Comm.GetInBufferCount If (datalength > 0) Then NewData = APM01Comm.GetInput... End If End Sub See also USB Message Format. GetOutBufferCount Method

83 Design Page 32 of 61 Returns a Long representing the number of 32-bit Integers that are waiting to be sent to the APM module over the USB bus. Syntax n = object.getoutbuffercount The GetOutBufferCount function syntax has these parts: Part n The number of 32-bit Integers waiting to be sent to the APM module. object Required. Name of the APMComm object. Remarks Due to extra USB buffering of the data performed by the operating system, this method returns 0 most of the time, as if the data is sent instantaneously. The syntax shown here is for VisualBasic. Example Const SOURCE_DEST_ID Const CHECK_DSP_READY As Long = &H As Long = &H ' Checks communications with APM Private Sub APM01CheckComms() Dim NewData(0 To 3) As Long NewData(0) = SOURCE_DEST_ID NewData(1) = CHECK_DSP_READY + 4 NewData(2) = 0 NewData(3) = 0 ' Check if previous data has been sent, before sending the new one While APM01Comm.GetOutBufferCount > 0 DoEvents Wend APM01Comm.SetOutput NewData End Sub SetOutput Method Sends data over the USB bus to the APM module. The argument is an Variant Array of 32-bit Integers containing the output data. Syntax object.setoutput(arrayname) The SetOutput method syntax has these parts: Part arrayname object Required. Name of the array holding the data to be sent, a Variant Array of 32-bit Integers. Required. Name of the APMComm object.

84 Design Page 33 of 61 Remarks The syntax shown here is for VisualBasic. Example Const SOURCE_DEST_ID Const CHECK_DSP_READY As Long = &H As Long = &H ' Checks communications with APM Private Sub APM01CheckComms() Dim NewData(0 To 3) As Long NewData(0) = SOURCE_DEST_ID NewData(1) = CHECK_DSP_READY + 4 NewData(2) = 0 NewData(3) = 0 APM01Comm.SetOutput NewData End Sub APM01Comm Events CommEvent Event that is fired when new USB data has been received from APM or when data has been successfully sent. CommEvent Event CommEvent is generated whenever new input data has been received from APM over the USB bus, or when the output data has been successfully sent. Syntax Private Sub object_commevent ( ByVal eventid As Long ) Part object eventid Required. Name of the APMComm object. The ID of the communictions event, an Integer number. Event Types The eventid can take the following values: Event ID Value evsend 1 Sending buffered data to the APM is completed. evreceive 2 New data has been received.

85 Design Page 34 of 61 Remarks In the current implementation, the output data is sent right away and the evsend is never fired. The syntax shown here is for VisualBasic. Example Private Sub APM01Comm_CommEvent(ByVal eventid As Long) If bprocessevents Then Select Case eventid Case evsend ' Send... Case evreceive ' Receive... End Select End If End Sub APM01Graph Control Properties Methods Events The APM01Graph displays the spike data received from APM control and handles user input for changing some discrimination parameters. It fires an event whenever the user has changed the discrimination parameters (trigger level and delay, window position etc). It provides support multiple data modes: spike data (several superimposed waveforms) or continuous data (scrolling waveform). It also provides a circular buffer for simultaneous display of the last n received waveforms. APM01Graph Properties BackColor DiscriminatorMode DisplayCalibration DisplayedSpikes DisplayGrid DisplayMode FeatureMax FeatureMin ForeColor HorizontalGridLines LineWidth Sets or retrieves the the background color. Sets or retrieves the spike discriminator mode, other than template matching: slope/height window discriminator or level discriminator. The visibility of the voltage and time calibration values. The number of waveforms displayed simultaneously. The visibility of the horizontal and vertical grids. Sets the display mode to: superimposed waveforms, scrolling/sweeping waveform or X-Y plot. Sets the maximum "feature" value when displaying data in X-Y mode. Sets the minimum "feature" value when displaying data in X-Y mode. Sets or retrieves the the foreground color. Sets the number of horizontal grid lines. Sets the width of the line used for drawing the waveforms, trigger level and discriminator window.

86 Design Page 35 of 61 MarkerSize MicrosecondsPerDivision MicrovoltsPerDivision MouseInputEnabled SpikeLength SpikeMax SpikeMin TemplateActive TemplateLineWidth TimeCalibration TriggerDelay TriggerLevel VerticalGridLines VoltageCalibration WindowDelay WindowHigh WindowLow Sets the diameter of the circle marking the trigger delay and the endpoints of the discriminator window. Sets the time calibration of the display, in microseconds per grid division. Sets the voltage calibration of the display, in microvolts per grid division. Allows/Disallows user to modify screen elements using the mouse. Sets the number of samples for displaying a spike. Sets the maximum sample value when displaying a spike, corresponding to the top of the waveform display. Sets the minimum sample value when displaying a spike, corresponding to the bottom of the waveform display. Sets the visibility of the currently selected template and waveforms matching that template. Sets the width of the line used for drawing the templates. Sets the time calibration of the display, in microseconds per sample. Sets the trigger delay. Sets the trigger level. Sets the number of vertical grid lines. Sets the time calibration of the display, in microvolts per ADC level. Sets the discriminator window position on the time axis. Sets the discriminator window upper endpoint. Sets the discriminator window lower endpoint. BackColor, ForeColor Properties BackColor returns or sets the background color of an object. ForeColor returns or sets the foreground color used to display text and graphics in an object. Syntax object.backcolor [= color] object.forecolor [= color] The BackColor and ForeColor property syntaxes have these parts: Part object color Name of the object whose properties are changed. A value or constant that determines the background or foreground colors of an object, as described in Settings.

87 Design Page 36 of 61 Settings Visual Basic uses the Microsoft Windows operating environment red-green-blue (RGB) color scheme. The settings for color are: Setting Normal RGB colors System default colors Colors specified by using the Color palette or by using the RGB or QBColor functions in code. Colors specified by system color constants listed in the Visual Basic object library in the Object Browser. The Windows operating environment substitutes the user's choices as specified in the Control Panel settings. For all forms and controls, the default settings at design time are: BackColor set to the system default color specified by the constant vbwindowbackground. ForeColor set to the system default color specified by the constant vbwindowtext. Remarks The valid range for a normal RGB color is 0 to 16,777,215 (&HFFFFFF). The high byte of a number in this range equals 0; the lower 3 bytes, from least to most significant byte, determine the amount of red, green, and blue, respectively. The red, green, and blue components are each represented by a number between 0 and 255 (&HFF). If the high byte isn't 0, Visual Basic uses the system colors, as defined in the user's Control Panel settings and by constants listed in the Visual Basic (VB) object library in the Object Browser. To display text in the Windows operating environment, both the text and background colors must be solid. If the text or background colors you've selected aren't displayed, one of the selected colors may be dithered that is, comprised of up to three different-colored pixels. If you choose a dithered color for either the text or background, the nearest solid color will be substituted. DiscriminatorMode Property Sets/Retrieves the spike discriminator mode, other than template matching: slope/height window discriminator or level discriminator. Although the spike discrimination is performed by the DSP, the need for different settings in the APMGraph control, too, comes from the fact that the display is different in the two modes. Syntax object.discriminatormode [ = value ] The DiscriminatorMode property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer in the range 0 to 1 specifying the Discriminator mode. Settings The DiscriminatorMode can take the following values: DiscriminatorMode Value S/H Window 0 The slope/height window discriminator mode is selected. A

88 Design Page 37 of 61 Discriminator spike is considered accepted only when it passes through the trigger level with a given slope and also crosses the discriminator window (see window discrimination detailed description). Level Discriminator. 1 Level discriminator is selected. In this mode, a spike does not need to cause a trigger event to be taken into account. The temporal relationship between triggering and window crossing does not matter. Therefore the acceptance window is displayed as two horizontal lines. If a spike crosses twice the lower level, without crossing the upper level in between, it is considered accepted. Same applies when the spike crosses twice the upper level, without crossing the lower level in between. In other words, a spike is accepted whenever the waveform enters the band defined by the upper/lowel levels, and exits it on the same side it has entered it. Remarks In level discriminator mode, although triggering does not matter for spike discrimination, the triggering level is still displayed, to allow alining succesive waveforms in the familiar way an oscilloscope works (also used in the S/H WD mode). The triggering level also defines which waveforms are going to be saved in the data file, regardless of being accepted or not, in both modes. The syntax shown here is for VisualBasic. DisplayCalibration Property Sets/Retrieves the visibility of the voltage and time calibration values. Syntax object.displaycalibration [ = value ] The DisplayCalibrationproperty syntax has these parts: Part object value Required. Name of the APMGraph object. A boolean expression specifying the visibilty of the calibration values. Settings The settings for value are: Setting True False Calibration settings are visible Calibration settings are invisible Remarks The syntax shown here is for VisualBasic.

89 Design Page 38 of 61 Example If Not APM01Graph.DisplayCalibration Then APM01Graph.DisplayCalibration = True End If DisplayedSpikes Property Sets/Retrieves the number of simultaneously displayed spikes. Syntax object.displayedspikes [ = value ] The DisplayedSpikes property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the number of simultaneously displayed spikes. Remarks The spikes are stored in a circular buffer, that means the latest spike will replace the oldest one. There is no need for the application to explicitely manage the circular buffers, all management is performed in background by the APM01Graph control. The application only needs to add spikes using SetSpikeData method. The syntax shown here is for VisualBasic. Example APM01Graph.DisplayedSpikes = 8 DisplayGrid Property Sets/Retrieves the visibility of the voltage and time grid. Syntax object.displaygrid [ = value ] The DisplayGridproperty syntax has these parts: Part object value Required. Name of the APMGraph object. A boolean expression specifying the visibilty of the grid. Settings The settings for value are:

90 Design Page 39 of 61 Setting True False Grid is visible Grid is invisible Remarks The syntax shown here is for VisualBasic. Example If Not APM01Graph.DisplayGrid Then APM01Graph.DisplayGrid = True End If DisplayMode Property Sets/Retrieves the display mode: superimposed waveforms, X-Y plot, or scrolling/sweeping waveforms. Syntax object.displaymode [ = value ] The DisplayMode property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer in the range 0 to 3 specifying the display mode. Settings The DisplayMode can take the following values: DisplayMode Value displayspikes 0 One ore more superimposed waveforms are displayed, as selected by DisplayedSpikes property. displayclusters 1 A X-Y plot of selected spike features is displayed. See SetSpikeData method to see how the values for the X-Y plot are set. displaycontinuous 2 Successive waveforms are concatenated to each other. Since waveform buffer is circular, adding a new "chunk" of data from a continuous stream results in an apparent scrolling the waveform. displaysweeping 3 This mode is very similar to the continuous mode (2), except that instead of scrolling, the displayed waveform is sweeping the display from left to right. Remarks

91 Design Page 40 of 61 In continuous mode, choosing a smaller data chunk (by setting the SpikeLength property to a smaller value) will result in a smoother scrolling of the display. The syntax shown here is for VisualBasic. Example Const displaycontinuous As Long = 2 ' Select scrolling display APM01Graph.DisplayMode = displaycontinuous FeatureMax Property Sets/Retrieves the maximum "feature" value when displaying data in X-Y mode, corresponding to the left of the display. The minimum and maximum "feature" value define the limits of the X axis, while SpikeMin and SpikeMax define the limits of the Y axis. Syntax object.featuremax [ = value ] The FeatureMax property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the "feature" value for the right of the X-Y display. Remarks The syntax shown here is for VisualBasic. Example APM01Graph.FeatureMax = FeatureMin Property Sets/Retrieves the minimum "feature" value when displaying data in X-Y mode, corresponding to the left of the display. The minimum and maximum "feature" value define the limits of the X axis, while SpikeMin and SpikeMax define the limits of the Y axis. Syntax object.featuremin [ = value ] The FeatureMin property syntax has these parts: Part object Required. Name of the APMGraph object.

92 Design Page 41 of 61 value An Integer specifying the "feature" value for the left of the X-Y display. Remarks The syntax shown here is for VisualBasic. Example APM01Graph.FeatureMin = 0 HorizontalGridLines Property Sets/Retrieves the number of grid lines on the horizontal axis. Syntax object.horizontalgridlines [ = value ] The HorizontalGridLines property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the number of grid lines to be displayed on the horizontal axis. Remarks The grid lines are visible if DisplayGrid property is set to True. The displayed grid lines actually have vertical orientation, but are distributed across the horizontal axis of the display, which is the time axis. Changing the number of horizontal grid lines will recalculate the value of MicrosecondsPerDivision property. Also, changing the MicrosecondsPerDivision value will result in a different number of horizontal grid lines. The two properties are just alternative ways of setting the grid appearance. The syntax shown here is for VisualBasic. Example APM01Graph.HorizontalGridLines = 8 LineWidth Property Sets/Retrieves the width of the line used for drawing the waveforms, trigger level and discriminator window. Syntax object.linewidth [ = value ] The LineWidth property syntax has these parts: Part

93 Design Page 42 of 61 object value Required. Name of the APMGraph object. An Integer specifying the line width, in pixels. Remarks The syntax shown here is for VisualBasic. Example ' Use a thicker line... APM01Graph.LineWidth = 2 MarkerSize Property Sets/Retrieves the diameter of the circle marking the trigger delay and the endpoints of the discriminator window. Syntax object.markersize [ = value ] The MarkerSize property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the circle diameter, in pixels. Remarks The syntax shown here is for VisualBasic. Example ' Use a larger circle... APM01Graph.MarkerSize = 9 MicrosecondsPerDivision Property Sets/Retrieves the time calibration of the display, in microseconds per grid division. Syntax object.microsecondsperdivision [ = value ] The MicrosecondsPerDivision property syntax has these parts: Part

94 Design Page 43 of 61 object value Required. Name of the APMGraph object. A Double specifying the time calibration of the display, in microseconds per division. Remarks Changing this value affects the number of horizontal grid lines. Changing the number of horizontal grid lines (see HorizontalGridLines property) will recalculate the MicrosecondsPerDivision value. Also, when changing the TimeCalibration property, the number of horizontal grid lines will have precedence over the microseconds per division. That means that the number of horizontal grid lines will be the same, and microseconds per division will be adjusted accordingly. The syntax shown here is for VisualBasic. Example APM01Graph.MicrosecondsPerDivision = MicrovoltsPerDivision Property Sets/Retrieves the voltage calibration of the display, in microvolts per grid division. Syntax object.microvoltsperdivision [ = value ] The MicrovoltsPerDivision property syntax has these parts: Part object value Required. Name of the APMGraph object. A Double specifying the voltage calibration of the display, in microseconds per division. Remarks Changing this value affects the number of vertical grid lines. Changing the number of vertical grid lines (see VerticalGridLines property) will recalculate the MicrovoltsPerDivision value. Also, when changing the VoltageCalibration property, the number of vertical grid lines will have precedence over the microseconds per division. That means that the number of vertical grid lines will be the same, and microseconds per division will be adjusted accordingly. The syntax shown here is for VisualBasic. Example APM01Graph.MicrovoltsPerDivision = 50.0 MouseInputEnabled Property Enables/Disables mouse input from the user for changing the position of the control elements. Syntax

95 Design Page 44 of 61 object.mouseinputenabled [ = value ] The MouseInputEnabled property syntax has these parts: Part object value Required. Name of the APMGraph object. A boolean expression specifying the state of the mouse input (enabled/disabled). Settings The settings for value are: Setting True False Mouse input is enabled (the user can drag-and-drop various elements) Mouse input is disabled (the user cannot drag-and-drop the displayed elements) Remarks When the mouse input is disabled, only the drag-and-drop elements cannot be changed. All other mouse events are processed in the normal way (for instance mouse clicks). The syntax shown here is for VisualBasic. Example If Not APM01Graph.MouseInputEnabled Then APM01Graph.MouseInputEnabled = True End If SpikeLength Property Sets/Retrieves the number of samples used to display a spike. Syntax object.spikelength [ = value ] The SpikeLength property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the number of samples in a spike. Remarks The size of the array passed as the first argument of SetSpikeData method has to match SpikeLength, or an error will occur when invoking it. The syntax shown here is for VisualBasic.

96 Design Page 45 of 61 Example APM01Graph.SpikeLength = 50 SpikeMax Property Sets/Retrieves the maximum sample value when displaying a spike, corresponding to the top of the waveform display. Syntax object.spikemax [ = value ] The SpikeMax property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the spike samples value for the top of the display. Remarks Setting spike values less than the maximal value will not generate an error. The values outside the range set by SpikeMin and SpikeMax are not drawn. This property is used for changing the vertical zoom and pan. The syntax shown here is for VisualBasic. Example APM01Graph.SpikeMax = SpikeMin Property Sets/Retrieves the minimum sample value when displaying a spike, corresponding to the bottom of the waveform display. Syntax object.spikemin [ = value ] The SpikeMin property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the spike samples value for the bottom of the display. Remarks Setting spike values less than the minimal value will not generate an error. The values outside the range set by SpikeMin and SpikeMax are not drawn. This property is used for changing the vertical zoom and pan. The syntax shown here is for VisualBasic.

97 Design Page 46 of 61 Example APM01Graph.SpikeMin = TemplateActive Property Sets/Retrieves the visibility of the currently selected template and waveforms matching that template. Syntax object.templateactive [ = value ] The TemplateActive property syntax has these parts: Part object value Required. Name of the APMGraph object. A boolean expression specifying the visibility of the currently selected template and waveforms. Settings The settings for value are: Setting True False Template and spikes matching the template are visible Template and spikes matching the template are invisible Remarks The visibility state is set or retrieved for the curent template, as given by the CurrentTemplate property. The syntax shown here is for VisualBasic. Example APM01Graph.CurrentTemplate = 1 APM01Graph.TemplateActive = True TemplateLineWidth Property Sets/Retrieves the width of the line used for drawing the templates. Syntax object.templatelinewidth [ = value ] The TemplateLineWidth property syntax has these parts:

98 Design Page 47 of 61 Part object value Required. Name of the APMGraph object. An Integer specifying the line width, in pixels. Remarks The syntax shown here is for VisualBasic. Example ' Use a thicker line... APM01Graph.TemplateLineWidth = 5 TimeCalibration Property Sets/Retrieves the time calibration of the display, in microseconds per sample. Syntax object.timecalibration [ = value ] The TimeCalibration property syntax has these parts: Part object value Required. Name of the APMGraph object. A Double specifying the time calibration of the display, in microseconds per sample. Remarks Changing this value affects the MicrosecondsPerDivision value, while preserving the number of horizontal grid lines (see HorizontalGridLines property). The syntax shown here is for VisualBasic. Example APM01Graph.TimeCalibration = TriggerDelay Property Sets/Retrieves the trigger delay. Syntax object.triggerdelay [ = value ] The TriggerDelay property syntax has these parts:

99 Design Page 48 of 61 Part object value Required. Name of the APMGraph object. A positive Integer specifying the trigger delay, in samples, relative to the beginning of the waveform window (left of the display). Remarks In order for the trigger delay to be displayed as a circle superimposed on trigger level line, the TriggerDelay values have to lie within the range 0 to SpikeLength - 1. The syntax shown here is for VisualBasic. Example APM01Graph.TriggerDelay = 12 TriggerLevel Property Sets/Retrieves the trigger level. Syntax object.triggerlevel [ = value ] The TriggerLevel property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the trigger level. Remarks In order for the trigger level line to be displayed, the TriggerLevel values have to lie within the range SpikeMin to SpikeMax. The syntax shown here is for VisualBasic. Example APM01Graph.TriggerLevel = VerticalGridLines Property Sets/Retrieves the number of grid lines on the vertical axis. Syntax object.verticalgridlines [ = value ] The VerticalGridLines property syntax has these parts:

100 Design Page 49 of 61 Part object value Required. Name of the APMGraph object. An Integer specifying the number of grid lines to be displayed on the vertical axis. Remarks The grid lines are visible if DisplayGrid property is set to True. The displayed grid lines actually have horizontal orientation, but are distributed across the vertical axis of the display, which is the input voltage. Changing the number of vertical grid lines will recalculate the value of MicrovoltsPerDivision property. Also, changing the MicrovoltsPerDivision value will result in a different number of vertical grid lines. The two properties are just alternative ways of setting the grid appearance. The syntax shown here is for VisualBasic. Example APM01Graph.VerticalGridLines = 8 VoltageCalibration Property Sets/Retrieves the voltage calibration of the display, in microvolts per ADC level. Syntax object.voltagecalibration [ = value ] The VoltageCalibration property syntax has these parts: Part object value Required. Name of the APMGraph object. A Double specifying the voltage calibration of the display, in microvolts per ADC level. Remarks Changing this value affects the MicrovoltsPerDivision value, while preserving the number of vertical grid lines (see VerticalGridLines property). The syntax shown here is for VisualBasic. Example APM01Graph.VoltageCalibration = WindowDelay Property Sets/Retrieves the discriminator window position on the time axis, in samples. Syntax object.windowdelay [ = value ]

101 Design Page 50 of 61 The WindowDelay property syntax has these parts: Part object value Required. Name of the APMGraph object. A positive Integer specifying the window delay, in samples, relative to the beginning of the waveform window (left of the display). Remarks In order for the discriminator window to be displayed as vertical line with two ending circles, the WindowDelay values have to lie within the range 0 to SpikeLength - 1. The syntax shown here is for VisualBasic. Example APM01Graph.WindowDelay = 18 WindowHigh Property Sets/Retrieves the discriminator window upper endpoint. Syntax object.windowhigh [ = value ] The WindowHigh property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the discriminator window upper endpoint. Remarks In order for the discriminator window upperer endpoint to be displayed as a circle, the WindowHigh values have to lie within the range SpikeMin to SpikeMax. The syntax shown here is for VisualBasic. Example APM01Graph.WindowHigh = WindowLow Property Sets/Retrieves the discriminator window lower endpoint. Syntax object.windowlow [ = value ]

102 Design Page 51 of 61 The WindowLow property syntax has these parts: Part object value Required. Name of the APMGraph object. An Integer specifying the discriminator window lower endpoint. Remarks In order for the discriminator window lower endpoint to be displayed as a circle, the WindowLow values have to lie within the range SpikeMin to SpikeMax. The syntax shown here is for VisualBasic. Example APM01Graph.WindowLow = APM01Graph Methods ClearSpikeData Refresh SetSpikeData SetTemplateData Zeroes the waweform samples and clears the display. Refreshes the display. Sets the waweform samples to be displayed. Sets the template samples to be displayed. ClearSpikeData Method Clears (zeroes) the waveform samples and the display. Syntax object.clearspikedata The ClearSpikeData method syntax has these parts: Part object Required. Name of the APMGraph object. Remarks The syntax shown here is for VisualBasic. Example ' Zero all spikes and clear display

103 Design Page 52 of 61 APM01Graph.ClearSpikeData Refresh Method Refreshes the display. For maximum performance, the background of the APMGraph control is not erased every time a new spike is displayed. Occasionally, the display may become "dirty". Call this method whenever the display becomes dirty. Syntax object.refresh() The Refresh method syntax has these parts: Part object Required. Name of the APMGraph object. Remarks Calling this method forces the background to be erased. If that is performed every time a new spike is displayed, there's a significantly higher load of the CPU and the display may flicker when the spike rate is high. The syntax shown here is for VisualBasic. Example APM01Graph.Refresh SetSpikeData Method Sets the waveform samples to be displayed. Syntax object.setspikedata(arrayname, seltemplate As Long) The SetSpikeData method syntax has these parts: Part arrayname seltemplate object Required. Name of the array containing the waveform samples, a Variant Array of 32-bit Integers. Its length has to match SpikeLength property. Required. An Integer representing the template (1 to 4) that it matches. A value of zero means the spike is rejected and accordingly drawn with a different color. Required. Name of the APMGraph object. Remarks In XY mode (DisplayMode property set to 1), the X and Y values are stored in the first and second elements of the input array, respectively. In this mode the SpikeLength property can be greater than 2, without cuasing an error. Array elements with indexes greater than two are ignored. The syntax shown here is for VisualBasic.

104 Design Page 53 of 61 Example For i = 0 To (APM01Graph.SpikeLength - 1) spikedata(i) = 20000# * Sin(0.2 * i) Next APM01Graph.SetSpikeData spikedata, 2 SetTemplateData Method Sets the template samples to be displayed. Syntax object.settemplatedata(arrayname, seltemplate As Long) The SetTemplateData method syntax has these parts: Part arrayname seltemplate object Required. Name of the array containing the template samples, a Variant Array of 32-bit Integers. Its length has to match SpikeLength property. Required. An Integer representing the template (1 to 4) that is set. Required. Name of the APMGraph object. Remarks The syntax shown here is for VisualBasic. Example For i = 0 To (APM01Graph.SpikeLength - 1) TemplateData(i) = 20000# * Sin(0.2 * i+0.1) Next APM01Graph.SetTemplateData TemplateData, 2 APM01Graph Events Click Click SettingsChanged Event that is fired when the user presses and then releases a mouse button over the APMGraph object. Event that is fired when the user presses a mouse button over the APMGraph object. Event that is fired when the user has changed the spike discrimination parameters by using the graphical drag-and-drop elements. Click Event

105 Design Page 54 of 61 Occurs when the user presses and then releases a mouse button over an object. It can also occur when the value of a control is changed. Syntax Private Sub object_click( ) Private Sub object_click( [index As Integer] ) Part object index paramchanged Required. Name of the object. An integer that uniquely identifies a control if it's in a control array. The parameter that has been changed as a result of user input. Remarks The syntax shown here is for VisualBasic. Example Private Sub APM01Graph_Click() MsgBox "Clicked!" End Sub MouseDown, MouseUp Events Occur when the user presses (MouseDown) or releases (MouseUp) a mouse button on the control. Syntax Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub MDIForm_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub object_mousedown([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single) Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) Private Sub MDIForm_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) Private Sub object _MouseUp([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single) The MouseDown and MouseUp event syntaxes have these parts: Part object index Returns an object expression that evaluates to an object in the Applies To list. Returns an integer that uniquely identifies a control if it's in a control array.

106 Design Page 55 of 61 button shift Returns an integer that identifies the button that was pressed (MouseDown) or released (MouseUp) to cause the event. The button argument is a bit field with bits corresponding to the left button (bit 0), right button (bit 1), and middle button (bit 2). These bits correspond to the values 1, 2, and 4, respectively. Only one of the bits is set, indicating the button that caused the event. Returns an integer that corresponds to the state of the SHIFT, CTRL, and ALT keys when the button specified in the button argument is pressed or released. A bit is set if the key is down. The shift argument is a bit field with the least-significant bits corresponding to the SHIFT key (bit 0), the CTRL key (bit 1), and the ALT key (bit 2 ). These bits correspond to the values 1, 2, and 4, respectively. The shift argument indicates the state of these keys. Some, all, or none of the bits can be set, indicating that some, all, or none of the keys are pressed. For example, if both CTRL and ALT were pressed, the value of shift would be 6. x, y Returns a number that specifies the current location of the mouse pointer. The x and y values are always expressed in terms of the coordinate system set by the ScaleHeight, ScaleWidth, ScaleLeft, and ScaleTop properties of the object. Remarks Use a MouseDown or MouseUp event procedure to specify actions that will occur when a given mouse button is pressed or released. Unlike the Click and DblClick events, MouseDown and MouseUp events enable you to distinguish between the left, right, and middle mouse buttons. You can also write code for mouse-keyboard combinations that use the SHIFT, CTRL, and ALT keyboard modifiers. The following applies to both Click and DblClick events: If a mouse button is pressed while the pointer is over the control, that object "captures" the mouse and receives all mouse events up to and including the last MouseUp event. This implies that the x, y mouse-pointer coordinates returned by a mouse event may not always be in the internal area of the object that receives them. If mouse buttons are pressed in succession, the object that captures the mouse after the first press receives all mouse events until all buttons are released. If you need to test for the button or shift arguments, you can use constants listed in the Visual Basic object library in the Object Browser to define the bits within the argument: Constant (Button) Value vbleftbutton 1 Left button is pressed vbrightbutton 2 Right button is pressed vbmiddlebutton 4 Middle button is pressed Constant (Shift) Value vbshiftmask 1 SHIFT key is pressed. vbctrlmask 2 CTRL key is pressed. vbaltmask 4 ALT key is pressed. The constants then act as bit masks you can use to test for any combination of buttons without having to figure out the unique bit field value for each combination. Note You can use a MouseMove event procedure to respond to an event caused by moving the mouse. The button argument for MouseDown and MouseUp differs from the button argument used for MouseMove. For MouseDown and MouseUp, the button argument indicates exactly one button per event, whereas for MouseMove, it indicates the current

107 Design Page 56 of 61 state of all buttons. SettingsChanged Event SettingsChanged event is generated whenever the user has changed the spike discrimination parameters by moving the graphic drag-and-drop elements. Syntax Private Sub object_settingschanged( ByVal paramchanged As Long ) Private Sub object_settingschanged( [index As Integer, ] ByVal paramchanged As Long ) Part object index paramchanged Required. Name of the APMGraph object. An integer that uniquely identifies a control if it's in a control array. The parameter that has been changed as a result of user input. Event Types The paramchanged can take the following values: Parameter Value triglevelchanged 1 The user has moved the trigger level line. trigdelaychanged 2 The user has moved the trigger delay point. winlowchanged 3 The user has moved the lower endpoint of the discriminator window. winhighchanged 4 The user has moved the upper endpoint of the discriminator window. windelaychanged 5 The user has changed the position of the discriminator window. Remarks The syntax shown here is for VisualBasic. Example Private Sub APM01Graph_SettingsChanged(ByVal paramchanged As Long) Select Case paramchanged Case triglevelchanged newtriglevel = APM01Graph.TriggerLevel Case trigdelaychanged newtrigdelay = APM01Graph.TriggerDelay Case winlowchanged newwindowlow = APM01Graph.WindowLow Case winhighchanged newwindowhigh = APM01Graph.WindowHigh Case windelaychanged newwindowdelay = APM01Graph.WindowDelay

108 Design Page 57 of 61 End Sub ' The window's Lo/Hi may change as well when moving it newwindowlow = APM01Graph.WindowLow newwindowhigh = APM01Graph.WindowHigh End Select Packaging The stand-alone modules of the neurocraft series instruments are packaged in metal cases, which consist of standard 5.25" high front panels. Front panel widths are specified as Type 2 modules (2.05" actual), Type 4 modules (4.15" actual), and Type 6 modules (6.25" actual). Front panels are mounted on extruded top and bottom panels. Flat side panels slide into slots in the extrusions, and are held in place when the back panel is secured into the extrusion. All modules are 9.75" in depth. Mounting Type 2 Module Type 4 Module Type 6 Module All stand-alone modules are completely encased and can be used without further mounting or hardware. Provided rubber feet may be used to protect surfaces from scratching. However, it may be suitable to group modules, and we have made provision for several configurations. The SAF-08 Rack Frame for Stand-Alone Modules (cat # ) will hold up to eight Type 2 modules, four Type 4 modules, or two Type 6 modules and 2 ea. Type 2 Dress Panels (cat # , use optional), while occupying only 3 rack units (5.25") vertically on a standard 19 instrument rack. Several combinations are available for all of the neurocraft series stand-alone modules. For example an SAF-08 frame could accommodate 3-Type 2, 1-Type 4, and 1-Type 6 within its 16" of horizontal rack space.

109 Design Page 58 of 61 Dress Panels for SAF (Ordered Separately): Type 2 Dress Panel Inspection SAF Rack Frame For Stand-Alone Modules (Shown with a neurocraft Type 2 Module) FHC Modules are factory checked and calibrated but should be carefully inspected upon receipt, before using, or activating power. If any exterior damage to the shipping carton is noted, the instrument(s) should be inspected for obvious physical damage. The contents of each package should be physically checked against the inventory list to determine shortages or errors in inventory. Power Connections All of the stand-alone modules in the neurocraft series are powered by a desktop 12V power supply. (input: vac, 50-60Hz, 1.7A output: +12VDC,5000mA) (Cat. # ) An international pattern Line Cord (not shown) is ordered separately, and is specified by country per the catalog number. (See table below for catalog numbers.) Additionally, the power transfer cord (not shown) supplied with the NeuroCraft stand-alone modules can be used to "daisy-chain" the power between other instruments in the series from one power supply. The amount of modules powered from one supply is determined by the amount of current drawn by each module. Contact Technical Services at (207) for assistance. 55-AUS Australia 55-CH China 55-DAN Denmark 55-EURO Europe 55-ISR Israel 55-ITA Italy

110 Design Page 59 of JA Japan 55-SAF South Africa 55-SWI Switzerland 55-UK United Kingdom 55-USA North America Power Information for LSG (use optional): The LSG contains a built-in universal power input. A switch is located on the front panel for selecting the input voltage range. For operation at volts (For example, in North America): Ensure the switch is positioned so that 115 is visible on the switch. For operation at volts (For example, in Australia or Europe): Ensure the switch is positioned so that 230 is visible on the switch. Warranty All FHC products are unconditionally guaranteed against defects in workmanship for one year from date of shipment as long as they have been exposed to normal and proper use. Although the one- year warranty may have expired, please contact our Service Department before attempting any repairs or alterations. Many of these repairs will still be performed at the factory at no charge to the customer. Policies 1. TECHNICAL SUPPORT: It is our policy to provide our customers with the most comprehensive technical support in the industry. If any questions arise or problems occur, we encourage you to call or write and we promise to promptly and comprehensively respond to your requirements. 2. TRADE-UP POLICY: It is our policy to offer customers trade-up ability as new and/or expanded capabilities for their instruments are announced. In many cases, full credit will be given. In general, we will allow 100% credit for two years and depreciate 20% per year thereafter. Please contact our Marketing Department for information relating to your particular situation. Policies Should service be required, please contact our Service Department for a return authorization number and instructions ( ). Please have the model and serial number on hand (Both are located on the back panel). Carefully pack the instrument before returning. Please include a note indicating: 1. The model number and purchase date of the instrument 2. The person to contact if questions arise 3. The "symptoms" indicating that repair is necessary If the instrument is not covered by the warranty, a quotation will be forwarded to the sender detailing the repairs necessary and charges, before repair is begun. Scheduled Maintenance

111 Design Page 60 of 61 The Functional Checkout in this manual should be performed on a yearly basis. The procedure for Gain and Offset calibration described in the Functional Checkout should be performed on a yearly basis and/or whenever the user changes the headstage, or inserts more signal conditioning modules in the signal path. Glossary Adaptive Template Discrimination A method of neural discrimination whereby a particular spike shape is used as a template. A spike is accepted when its shape matches the template. Amplitude Discrimination A method of neural pattern recording whereby a spike is accepted whenever the input signal crosses a set voltage level trigger. ADC Analog-to-Digital Converter - a device that converts continuous input signals in numeric form. The APM modules have 16-bit dual channel ADC's. CODEC The COder/DECoder is a circuit that contains a pair of analog-to-digital (ADC) and digital-to-analog (DAC) converters. Driver Drivers are programs that allow the operating system, and the applications running on it, to communicate with the hardware connected to the computer. DSP Digital Signal Processor - a microprocessor that has an architecture and instruction set optimized for real-time processing of digitized analog signals. FLASH Memory A read-write memory whose content is non-volatile. The programmed data is permanently stored. Re-programming the memory is performed by first erasing the chip, then writing the new data. All these functions can be performed in-circuit, by issuing a sequence of software commands. Level Discrimination A method of neural pattern recording using levels of amplitude to discriminate between spikes. A spike is accepted in this method when the input signal crosses a voltage threshold twice without crossing another threshold set above it. Local Field Potential The electrical signal obtained by averaging the signals coming from a larger number of neurons in the area around the

112 Design Page 61 of 61 electrode tip. The averaging is typically obtained at the electrode level by using a low-impedance electrode that has a larger exposed tip surface, thus collecting electrical signals from several neurons simultaneously. MClust MClust is a Matlab toolbox which enables a user to perform automated and manual clustering, allowing also manual corrections to automated clustering results. It was originally developed by A. David Redish (current address, University of Minnesota, Minneapolis MN), but includes add-ons and modifications from various contributors. There is a MClust loading engine that allows loading data in APM format in Matlab/MClust samples subdirectory. Sorted data can be merged with the APM data using an utility located in the same directory. Slope/Height Window Discrimination A method of neural discrimination whereby the spike amplitude in relation to time (slope) is used to classify different spike shapes. A spike is accepted when it passes through both the trigger level and also through a voltage window in time with a given height/extent. SRAM Memory A Static Random Access Memory that allows fast read-write operations. Being a static RAM, it does not require periodic refreshing of data, therefore data storage is obtained with no CPU overhead. A complete read/write cycle can be performed during one DSP clock cycle, with no extra wait states. Template A characteristic waveform pattern against which the incoming spikes are checked for matching. Triggering level The voltage level that causes a spike triggering event when the input signal passes through it with a given slope. USB Universal Serial Bus - a standard interface for connecting peripherals to computers, that is supported by most modern hardware platforms and operating systems.

113 APM01Graph Events file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE434.htm Page 1 of 5 APM01Graph Events Click Click SettingsChanged Event that is fired when the user presses and then releases a mouse button over the APMGraph object. Event that is fired when the user presses a mouse button over the APMGraph object. Event that is fired when the user has changed the spike discrimination parameters by using the graphical drag-anddrop elements. Click Event Occurs when the user presses and then releases a mouse button over an object. It can also occur when the value of a control is changed. Syntax Private Sub object_click( ) Private Sub object_click( [index As Integer] ) Part object index paramchanged Required. Name of the object. An integer that uniquely identifies a control if it's in a control array. The parameter that has been changed as a result of user input. Remarks The syntax shown here is for VisualBasic. Example Private Sub APM01Graph_Click() MsgBox "Clicked!" End Sub

114 APM01Graph Events file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE434.htm Page 2 of 5 MouseDown, MouseUp Events Occur when the user presses (MouseDown) or releases (MouseUp) a mouse button on the control. Syntax Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub MDIForm_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub object_mousedown([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single) Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) Private Sub MDIForm_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) Private Sub object _MouseUp([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single) The MouseDown and MouseUp event syntaxes have these parts: Part object index button shift Returns an object expression that evaluates to an object in the Applies To list. Returns an integer that uniquely identifies a control if it's in a control array. Returns an integer that identifies the button that was pressed (MouseDown) or released (MouseUp) to cause the event. The button argument is a bit field with bits corresponding to the left button (bit 0), right button (bit 1), and middle button (bit 2). These bits correspond to the values 1, 2, and 4, respectively. Only one of the bits is set, indicating the button that caused the event. Returns an integer that corresponds to the state of the SHIFT, CTRL, and ALT keys when the button specified in the button argument is pressed or released. A bit is set if the key is down. The shift argument is a bit field with the least-significant bits corresponding to the SHIFT key (bit 0), the CTRL key (bit 1), and the ALT key (bit 2 ). These bits correspond to the values 1, 2, and 4, respectively. The shift argument indicates the state of these keys. Some, all, or none of the bits can be set, indicating that some, all, or none of the keys are pressed. For example, if both CTRL and ALT were pressed, the value of shift would be 6. x, y Returns a number that specifies the current location of the mouse pointer. The x and y values are always expressed in terms of the coordinate system set by the ScaleHeight, ScaleWidth, ScaleLeft, and ScaleTop properties of the object. Remarks

115 APM01Graph Events file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE434.htm Page 3 of 5 Use a MouseDown or MouseUp event procedure to specify actions that will occur when a given mouse button is pressed or released. Unlike the Click and DblClick events, MouseDown and MouseUp events enable you to distinguish between the left, right, and middle mouse buttons. You can also write code for mouse-keyboard combinations that use the SHIFT, CTRL, and ALT keyboard modifiers. The following applies to both Click and DblClick events: If a mouse button is pressed while the pointer is over the control, that object "captures" the mouse and receives all mouse events up to and including the last MouseUp event. This implies that the x, y mouse-pointer coordinates returned by a mouse event may not always be in the internal area of the object that receives them. If mouse buttons are pressed in succession, the object that captures the mouse after the first press receives all mouse events until all buttons are released. If you need to test for the button or shift arguments, you can use constants listed in the Visual Basic object library in the Object Browser to define the bits within the argument: Constant (Button) Value vbleftbutton 1 Left button is pressed vbrightbutton 2 Right button is pressed vbmiddlebutton 4 Middle button is pressed Constant (Shift) Value vbshiftmask 1 SHIFT key is pressed. vbctrlmask 2 CTRL key is pressed. vbaltmask 4 ALT key is pressed. The constants then act as bit masks you can use to test for any combination of buttons without having to figure out the unique bit field value for each combination. Note You can use a MouseMove event procedure to respond to an event caused by moving the mouse. The button argument for MouseDown and MouseUp differs from the button argument used for MouseMove. For MouseDown and MouseUp, the button argument indicates exactly one button per event, whereas for MouseMove, it indicates the current state of all buttons. SettingsChanged Event SettingsChanged event is generated whenever the user has changed the spike discrimination parameters by moving the graphic drag-and-drop elements.

116 APM01Graph Events file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE434.htm Page 4 of 5 Syntax Private Sub object_settingschanged( ByVal paramchanged As Long ) Private Sub object_settingschanged( [index As Integer, ] ByVal paramchanged As Long ) Part object index paramchanged Required. Name of the APMGraph object. An integer that uniquely identifies a control if it's in a control array. The parameter that has been changed as a result of user input. Event Types The paramchanged can take the following values: Parameter Value triglevelchanged 1 The user has moved the trigger level line. trigdelaychanged 2 The user has moved the trigger delay point. winlowchanged 3 The user has moved the lower endpoint of the discriminator window. winhighchanged 4 The user has moved the upper endpoint of the discriminator window. windelaychanged 5 The user has changed the position of the discriminator window. Remarks The syntax shown here is for VisualBasic. Example Private Sub APM01Graph_SettingsChanged(ByVal paramchanged As Long) Select Case paramchanged Case triglevelchanged newtriglevel = APM01Graph.TriggerLevel Case trigdelaychanged newtrigdelay = APM01Graph.TriggerDelay Case winlowchanged newwindowlow = APM01Graph.WindowLow Case winhighchanged newwindowhigh = APM01Graph.WindowHigh

117 APM01Graph Events file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hhE434.htm Page 5 of 5 End Sub Case windelaychanged newwindowdelay = APM01Graph.WindowDelay ' The window's Lo/Hi may change as well when moving it newwindowlow = APM01Graph.WindowLow newwindowhigh = APM01Graph.WindowHigh End Select

118 APM Samples file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hh1ACE.htm Page 1 of 2 APM Samples Sample Data Tools Audio recording of neural activity in MP3 format, playable in Windows Media Player: SampleData\Test Waveform.mp3 Sample data file (recording of "Test Waveform.mp3"), in APM format: SampleData\DemoData.apm. This data can be loaded using APMReadData.m Matlab script in Matlab\DataImport folder. Sample data file (recording of "Test Waveform.mp3"), recorded in PLX format, recorded using APM: SampleData\DemoData.plx. This data can be loaded using Plexon applications or Neuroexplorer. APMEdit is an utility for viewing and editing channel properties in the apm data files, extracting data on single channels and converting files from.apm to.plx files. It is located in the Tools subdirectory of your installation directory. Type APMEdit /h at windows command prompt for help or!apmedit /h Matlab command prompt for help on using the tool. The tool has been designed to support batch mode usage from command prompt (Windows or Matlab) or graphical user interface. APMEdit [/t] [/a] [/c:channel] [/i:interval] [/f:frequency] [/s:channel] [/g] [/h] /t - when destination is in plx format, converts spike timestamps instead of waveforms /a - when destination is in plx format, converts both spike timestamps and waveforms (records with duplicate waveforms will occur in the data file) /c:channel - a particular channel on which data is extracted. By default, all channels are extracted. /i:interval - the interval in seconds to be added to each trial, when recording has been performed in gated mode with timers reset /f:frequency - the sampling frequency for the selected channel (overrides value in the file). /s:channel - sets the sampling frequency (set by /f switch) on the specified channel. /g - brings up graphical user interface. /h - displays help. Run apmedit with no arguments to open the graphical user interface. Matlab Samples Loading engine for MClust offline analysis package. The MClust\LoadSE_APM.m script must be placed in MClust\LoadingEngines subfolder of the folder where MClust is installed. MClust is a single-channel or tetrode-oriented package. Therefore, only channel 1 must be selected in MClust main panel before loading APM files. To select which APM channel is analyzed, an auxiliary script, SetAPM.m must be invoked (with APM channel number as argument) before starting MClust or before loading data. To switch to another channel, the MClust workspace must be cleared, and "clear all" command must be typed at Matlab command prompt. The.fd files created when loading the previous channel data must be manually deleted, or moved to a different subdirectory. The SetAPM function must be invoked with the new APM channel number as argument. After that, MClust is ready to process the new channel data. When using gated mode with counters reset, where each new trial starts at zero timestamp, SetAPM must be invoked with a second argument, the default interval, in microseconds, between two consecutive trials. That interval is going to be added each new trial to the existing time reference, in such a way that timestamps for all trials will appear concatenated, not overlapping in time. For example, the Matlab sequence for selecting channel 5 with a trial interval of 5 seconds and starting MClust is: > SetAPM(5,5e6); > MClust Type help LoadSE_APM at Matlab prompt for more information. Sample demonstrating APM data file import in Matlab and waveform plotting: DataImport\APMReadDemo.m Utility for reading APM data files in Matlab: DataImport\APMReadData.m Retrieving online APM data over TCPIP networks in Matlab. The sample demonstrates online plottting of spike rate histograms on remote computers TCPIPClient\RateHistogram.m Sending user codes to APM: Over TCPIP networks :UserData\SendUserDataDemo.m Through the asynchronous serial port :UserData\SerialDataDemo.m User codes are saved in the data file along with the spike data and can be read into Matlab using UserData\APMReadUserData.m. A complex sample demonstrating a possible architecture of a system that integrates visual stimuli presentation using Psychophysics Toolbox ( and spike recording using APM. The proposed implementation uses different computers for visual stimulation and spike recording, communicating with each other through TCPIP connections. Since PsychToolbox uses the main display of the computer on which is running for displaying visual stimuli, a client-server architecture has been designed, where on a second computer all the Matlab GUI controls and the APM application runs. The two computers transfer data between them using TCPIP connections. Real-time sinchronization of stimulus display with spike recording is impemented by means of a hardware signal coming from a photodiode that has to be attached to the top-left corner of the screen where a small white square is flashed whenever stimulus display changes. Here are the steps to be followed in order to run the sample: Copy the content of the PsychToolboxServer directory onto the computer running the Psychophysics Toolbox. Start Matlab with the -nojvm option (a shortcut for Matlab -nojvm is installed by default by the PsychToolbox setup program on the desktop) and run: TCPIPServer.m

119 APM Samples file://c:\documents and Settings\jmoyer\Local Settings\Temp\~hh1ACE.htm Page 2 of 2 By default, TCPIPServer listens to incoming connections on port The data is sent to it as a sequence of matlab command strings that are executed. For instance sending a string "VisuallyGuidedSaccades" starts the script named "VisuallyGuidedSaccades.m" in the same directory. Task parameters are sent in for of Matlab command strings that set the fields of a global structure "par", for instance; "par.targetred=255;". For more information, type: help TCPIPServer at Matlab command prompt. Then go to the controlling computer and copy the contents of PsychToolboxClient directory. Start Matlab and change directory to PsychToolboxClient. Run: ControlPanel.m A Matlab GUI is displayed: Start the APM application on the client computer or on a different one, and enter the IP address of that computer in the APM Server Address box. Make sure that TCPIP message server on port 2566 is enabled prior to running this sample. You could also choose at this time a file where data is going to be recorded, and adjust the spike discrimination and recording parameters. Enter the IP address of the computer that's running the PsychToolbox in the PsychToolboxServer Address field, then press the 'Connect' button. If the status bar at the bottom displays the message Connected, then you can choose the task (for instance "Visually Guided Saccades"), set its parameters, then press the Run button. If the program runs successfully, you should see the Block, Current Dir, andcurrent Ecc fields changing, as the PsychToolbox server sends back information about the current trial. The provided samples do not perform behavioral data recording and retrieval. The user will have to insert its hardwarespecfic code to retrieve behavioral data, then use the same methods shown in the examples to send it to the Control Panel and/or APM. For an example that uses the new Experiment Control Module (ECM), see the the ECM documentation on web site.

QUALITY INSPECTION SUMMARY

QUALITY INSPECTION SUMMARY QUALITY INSPECTION SUMMARY We have made every effort to manufacture this instrument to the highest quality standards. All assemblies have been thoroughly tested and inspected at the factory as follows:

More information

Operating Instructions

Operating Instructions Operating Instructions HAEFELY TEST AG KIT Measurement Software Version 1.0 KIT / En Date Version Responsable Changes / Reasons February 2015 1.0 Initial version WARNING Introduction i Before operating

More information

DT9834 Series High-Performance Multifunction USB Data Acquisition Modules

DT9834 Series High-Performance Multifunction USB Data Acquisition Modules DT9834 Series High-Performance Multifunction USB Data Acquisition Modules DT9834 Series High Performance, Multifunction USB DAQ Key Features: Simultaneous subsystem operation on up to 32 analog input channels,

More information

Lab 1 Introduction to the Software Development Environment and Signal Sampling

Lab 1 Introduction to the Software Development Environment and Signal Sampling ECEn 487 Digital Signal Processing Laboratory Lab 1 Introduction to the Software Development Environment and Signal Sampling Due Dates This is a three week lab. All TA check off must be completed before

More information

Major Differences Between the DT9847 Series Modules

Major Differences Between the DT9847 Series Modules DT9847 Series Dynamic Signal Analyzer for USB With Low THD and Wide Dynamic Range The DT9847 Series are high-accuracy, dynamic signal acquisition modules designed for sound and vibration applications.

More information

DT3162. Ideal Applications Machine Vision Medical Imaging/Diagnostics Scientific Imaging

DT3162. Ideal Applications Machine Vision Medical Imaging/Diagnostics Scientific Imaging Compatible Windows Software GLOBAL LAB Image/2 DT Vision Foundry DT3162 Variable-Scan Monochrome Frame Grabber for the PCI Bus Key Features High-speed acquisition up to 40 MHz pixel acquire rate allows

More information

MTL Software. Overview

MTL Software. Overview MTL Software Overview MTL Windows Control software requires a 2350 controller and together - offer a highly integrated solution to the needs of mechanical tensile, compression and fatigue testing. MTL

More information

ME EN 363 ELEMENTARY INSTRUMENTATION Lab: Basic Lab Instruments and Data Acquisition

ME EN 363 ELEMENTARY INSTRUMENTATION Lab: Basic Lab Instruments and Data Acquisition ME EN 363 ELEMENTARY INSTRUMENTATION Lab: Basic Lab Instruments and Data Acquisition INTRODUCTION Many sensors produce continuous voltage signals. In this lab, you will learn about some common methods

More information

SigPlay User s Guide

SigPlay User s Guide SigPlay User s Guide . . SigPlay32 User's Guide? Version 3.4 Copyright? 2001 TDT. All rights reserved. No part of this manual may be reproduced or transmitted in any form or by any means, electronic or

More information

Application Note AN-708 Vibration Measurements with the Vibration Synchronization Module

Application Note AN-708 Vibration Measurements with the Vibration Synchronization Module Application Note AN-708 Vibration Measurements with the Vibration Synchronization Module Introduction The vibration module allows complete analysis of cyclical events using low-speed cameras. This is accomplished

More information

medlab One Channel ECG OEM Module EG 01000

medlab One Channel ECG OEM Module EG 01000 medlab One Channel ECG OEM Module EG 01000 Technical Manual Copyright Medlab 2012 Version 2.4 11.06.2012 1 Version 2.4 11.06.2012 Revision: 2.0 Completely revised the document 03.10.2007 2.1 Corrected

More information

The BAT WAVE ANALYZER project

The BAT WAVE ANALYZER project The BAT WAVE ANALYZER project Conditions of Use The Bat Wave Analyzer program is free for personal use and can be redistributed provided it is not changed in any way, and no fee is requested. The Bat Wave

More information

Getting started with Spike Recorder on PC/Mac/Linux

Getting started with Spike Recorder on PC/Mac/Linux Getting started with Spike Recorder on PC/Mac/Linux You can connect your SpikerBox to your computer using either the blue laptop cable, or the green smartphone cable. How do I connect SpikerBox to computer

More information

Portable in vivo Recording System

Portable in vivo Recording System Portable in vivo Recording System 16 or 32 channel version Pre- and filter amplifier included USB 2.0 data transfer Adapters for commercially available probes Real-time signal detection and feedback Flexible

More information

Central Software Suite

Central Software Suite 630 Komas Drive Suite 200 Salt Lake City UT 84108 USA P +1 801.582.5533 F +1 801.582.1509 www.blackrockmicro.com Central Software Suite Instructions for Use Revision 4.00 / LB-0574 Central Software Suite

More information

Oscilloscopes, logic analyzers ScopeLogicDAQ

Oscilloscopes, logic analyzers ScopeLogicDAQ Oscilloscopes, logic analyzers ScopeLogicDAQ ScopeLogicDAQ 2.0 is a comprehensive measurement system used for data acquisition. The device includes a twochannel digital oscilloscope and a logic analyser

More information

imso-104 Manual Revised August 5, 2011

imso-104 Manual Revised August 5, 2011 imso-104 Manual Revised August 5, 2011 Section 1 Getting Started SAFETY 1.10 Quickstart Guide 1.20 SAFETY 1.30 Compatibility 1.31 Hardware 1.32 Software Section 2 How it works 2.10 Menus 2.20 Analog Channel

More information

SpikePac User s Guide

SpikePac User s Guide SpikePac User s Guide Updated: 7/22/2014 SpikePac User's Guide Copyright 2008-2014 Tucker-Davis Technologies, Inc. (TDT). All rights reserved. No part of this manual may be reproduced or transmitted in

More information

Quick Reference Manual

Quick Reference Manual Quick Reference Manual V1.0 1 Contents 1.0 PRODUCT INTRODUCTION...3 2.0 SYSTEM REQUIREMENTS...5 3.0 INSTALLING PDF-D FLEXRAY PROTOCOL ANALYSIS SOFTWARE...5 4.0 CONNECTING TO AN OSCILLOSCOPE...6 5.0 CONFIGURE

More information

USER S GUIDE DSR-1 DE-ESSER. Plug-in for Mackie Digital Mixers

USER S GUIDE DSR-1 DE-ESSER. Plug-in for Mackie Digital Mixers USER S GUIDE DSR-1 DE-ESSER Plug-in for Mackie Digital Mixers Iconography This icon identifies a description of how to perform an action with the mouse. This icon identifies a description of how to perform

More information

2 MHz Lock-In Amplifier

2 MHz Lock-In Amplifier 2 MHz Lock-In Amplifier SR865 2 MHz dual phase lock-in amplifier SR865 2 MHz Lock-In Amplifier 1 mhz to 2 MHz frequency range Dual reference mode Low-noise current and voltage inputs Touchscreen data display

More information

AC334A. VGA-Video Ultimate BLACK BOX Remote Control. Back Panel View. Side View MOUSE DC IN BLACK BOX ZOOM/FREEZE POWER

AC334A. VGA-Video Ultimate BLACK BOX Remote Control. Back Panel View. Side View MOUSE DC IN BLACK BOX ZOOM/FREEZE POWER AC334A BLACK BOX 724-746-5500 VGA-Video Ultimate BLACK BOX 724-746-5500 Zoom Position PAL ZOOM/FREEZE POWER FREEZE ZOOM NTSC/PAL SIZE RESET POWER Size Power Remote Control DC IN MOUSE MIC IN AUDIO OUT

More information

AC335A. VGA-Video Ultimate Plus BLACK BOX Back Panel View. Remote Control. Side View MOUSE DC IN OVERLAY

AC335A. VGA-Video Ultimate Plus BLACK BOX Back Panel View. Remote Control. Side View MOUSE DC IN OVERLAY AC335A BLACK BOX 724-746-5500 VGA-Video Ultimate Plus Position OVERLAY MIX POWER FREEZE ZOOM NTSC/PAL SIZE GENLOCK POWER DC IN MOUSE MIC IN AUDIO OUT VGA IN/OUT (MAC) Remote Control Back Panel View RGB

More information

DRAFT RELEASE FOR BETA EVALUATION ONLY

DRAFT RELEASE FOR BETA EVALUATION ONLY IPM-16 In-Picture Audio Metering User Manual DRAFT RELEASE FOR BETA EVALUATION ONLY Ver 0.2 April 2013 1 Contents Introduction...3 In Picture Audio Meter Displays...4 Installation...7 External Audio Board

More information

Transmitter Interface Program

Transmitter Interface Program Transmitter Interface Program Operational Manual Version 3.0.4 1 Overview The transmitter interface software allows you to adjust configuration settings of your Max solid state transmitters. The following

More information

Element 78 MPE-200. by Summit Audio. Guide To Operations. for software version 1.23

Element 78 MPE-200. by Summit Audio. Guide To Operations. for software version 1.23 Element 78 MPE-200 by Summit Audio Guide To Operations for software version 1.23 TABLE OF CONTENTS IMPORTANT SAFETY AND GROUNDING INSTRUCTIONS COVER 1. UNPACKING AND CONNECTING...3 AUDIO CONNECTIONS...4

More information

D-901 PC SOFTWARE Version 3

D-901 PC SOFTWARE Version 3 INSTRUCTION MANUAL D-901 PC SOFTWARE Version 3 Please follow the instructions in this manual to obtain the optimum results from this unit. We also recommend that you keep this manual handy for future reference.

More information

Manual Version Ver 1.0

Manual Version Ver 1.0 The BG-3 & The BG-7 Multiple Test Pattern Generator with Field Programmable ID Option Manual Version Ver 1.0 BURST ELECTRONICS INC CORRALES, NM 87048 USA (505) 898-1455 VOICE (505) 890-8926 Tech Support

More information

Spatial Light Modulators XY Series

Spatial Light Modulators XY Series Spatial Light Modulators XY Series Phase and Amplitude 512x512 and 256x256 A spatial light modulator (SLM) is an electrically programmable device that modulates light according to a fixed spatial (pixel)

More information

EdgeConnect Module Quick Start Guide ITERIS INNOVATION FOR BETTER MOBILITY

EdgeConnect Module Quick Start Guide ITERIS INNOVATION FOR BETTER MOBILITY EdgeConnect Module Quick Start Guide ITERIS INNOVATION FOR BETTER MOBILITY 493456301 Rev B April 2009 Table of Contents Installation... 1 Setup... 2 Operation... 4 Live Video... 4 Video Settings... 5 Network

More information

FS3. Quick Start Guide. Overview. FS3 Control

FS3. Quick Start Guide. Overview. FS3 Control FS3 Quick Start Guide Overview The new FS3 combines AJA's industry-proven frame synchronization with high-quality 4K up-conversion technology to seamlessly integrate SD and HD signals into 4K workflows.

More information

Noise Detector ND-1 Operating Manual

Noise Detector ND-1 Operating Manual Noise Detector ND-1 Operating Manual SPECTRADYNAMICS, INC 1849 Cherry St. Unit 2 Louisville, CO 80027 Phone: (303) 665-1852 Fax: (303) 604-6088 Table of Contents ND-1 Description...... 3 Safety and Preparation

More information

System Requirements SA0314 Spectrum analyzer:

System Requirements SA0314 Spectrum analyzer: System Requirements SA0314 Spectrum analyzer: System requirements Windows XP, 7, Vista or 8: 1 GHz or faster 32-bit or 64-bit processor 1 GB RAM 10 MB hard disk space \ 1. Getting Started Insert DVD into

More information

PRELIMINARY INFORMATION. Professional Signal Generation and Monitoring Options for RIFEforLIFE Research Equipment

PRELIMINARY INFORMATION. Professional Signal Generation and Monitoring Options for RIFEforLIFE Research Equipment Integrated Component Options Professional Signal Generation and Monitoring Options for RIFEforLIFE Research Equipment PRELIMINARY INFORMATION SquareGENpro is the latest and most versatile of the frequency

More information

NanoGiant Oscilloscope/Function-Generator Program. Getting Started

NanoGiant Oscilloscope/Function-Generator Program. Getting Started Getting Started Page 1 of 17 NanoGiant Oscilloscope/Function-Generator Program Getting Started This NanoGiant Oscilloscope program gives you a small impression of the capabilities of the NanoGiant multi-purpose

More information

AVTuner PVR Quick Installation Guide

AVTuner PVR Quick Installation Guide AVTuner PVR Quick Installation Guide Introducing the AVTuner PVR The AVTuner PVR allows you to watch, record, pause live TV and capture high resolution video on your computer. Features and Benefits Up

More information

FS1-X. Quick Start Guide. Overview. Frame Rate Conversion Option. Two Video Processors. Two Operating Modes

FS1-X. Quick Start Guide. Overview. Frame Rate Conversion Option. Two Video Processors. Two Operating Modes FS1-X Quick Start Guide Overview Matching up and synchronizing disparate video and audio formats is a critical part of any broadcast, mobile or post-production environment. Within its compact 1RU chassis,

More information

C8000. switch over & ducking

C8000. switch over & ducking features Automatic or manual Switch Over or Fail Over in case of input level loss. Ducking of a main stereo or surround sound signal by a line level microphone or by a pre recorded announcement / ad input.

More information

NOTICE: This document is for use only at UNSW. No copies can be made of this document without the permission of the authors.

NOTICE: This document is for use only at UNSW. No copies can be made of this document without the permission of the authors. Brüel & Kjær Pulse Primer University of New South Wales School of Mechanical and Manufacturing Engineering September 2005 Prepared by Michael Skeen and Geoff Lucas NOTICE: This document is for use only

More information

C8188 C8000 1/10. digital audio modular processing system. 4 Channel AES/EBU I/O. features. block diagram. 4 balanced AES inputs

C8188 C8000 1/10. digital audio modular processing system. 4 Channel AES/EBU I/O. features. block diagram. 4 balanced AES inputs features 4 balanced AES inputs Input Sample Rate Converters (SRC) 4 balanced AES outputs Relay bypass for pairs of I/Os Relay wait time after power up Master mode (clock master for the frame) 25pin Sub-D,

More information

Portable USB Potentiostat Low-Current Portable USB Potentiostat Extended Voltage USB Potentiostat

Portable USB Potentiostat Low-Current Portable USB Potentiostat Extended Voltage USB Potentiostat WaveNow USB Potentiostat / Galvanostat WaveNow / WaveNowXV Portable USB Potentiostat WaveNano Low-Current Portable USB Potentiostat Part Numbers Product Name WaveNow WaveNano WaveNowXV Description Portable

More information

Lab experience 1: Introduction to LabView

Lab experience 1: Introduction to LabView Lab experience 1: Introduction to LabView LabView is software for the real-time acquisition, processing and visualization of measured data. A LabView program is called a Virtual Instrument (VI) because

More information

Oscilloscope Guide Tektronix TDS3034B & TDS3052B

Oscilloscope Guide Tektronix TDS3034B & TDS3052B Tektronix TDS3034B & TDS3052B Version 2008-Jan-1 Dept. of Electrical & Computer Engineering Portland State University Copyright 2008 Portland State University 1 Basic Information This guide provides basic

More information

Quick Start. RSHS1000 Series Handheld Digital Oscilloscope

Quick Start. RSHS1000 Series Handheld Digital Oscilloscope Quick Start RSHS1000 Series Handheld Digital Oscilloscope General Safety Summary Carefully read the following safety precautions to avoid personal injury and prevent damage to the instrument or any products

More information

SignalTap Plus System Analyzer

SignalTap Plus System Analyzer SignalTap Plus System Analyzer June 2000, ver. 1 Data Sheet Features Simultaneous internal programmable logic device (PLD) and external (board-level) logic analysis 32-channel external logic analyzer 166

More information

VNS2210 Amplifier & Controller Installation Guide

VNS2210 Amplifier & Controller Installation Guide VNS2210 Amplifier & Controller Installation Guide VNS2210 Amplifier & Controller Installation 1. Determine the installation location for the VNS2210 device. Consider the following when determining the

More information

DX-10 tm Digital Interface User s Guide

DX-10 tm Digital Interface User s Guide DX-10 tm Digital Interface User s Guide GPIO Communications Revision B Copyright Component Engineering, All Rights Reserved Table of Contents Foreword... 2 Introduction... 3 What s in the Box... 3 What

More information

R H Y T H M G E N E R A T O R. User Guide. Version 1.3.0

R H Y T H M G E N E R A T O R. User Guide. Version 1.3.0 R H Y T H M G E N E R A T O R User Guide Version 1.3.0 Contents Introduction... 3 Getting Started... 4 Loading a Combinator Patch... 4 The Front Panel... 5 The Display... 5 Pattern... 6 Sync... 7 Gates...

More information

Introduction to LasrPlay and DVDplay Synchronizers

Introduction to LasrPlay and DVDplay Synchronizers Introduction to LasrPlay and DVDplay Synchronizers Multi-channel Synchronizers and Controllers for Pioneer Laserdisc and DVD Video players Dave Jones Design Dave Jones Design 87 Chestnut St., Owego, NY

More information

Getting Started. Connect green audio output of SpikerBox/SpikerShield using green cable to your headphones input on iphone/ipad.

Getting Started. Connect green audio output of SpikerBox/SpikerShield using green cable to your headphones input on iphone/ipad. Getting Started First thing you should do is to connect your iphone or ipad to SpikerBox with a green smartphone cable. Green cable comes with designators on each end of the cable ( Smartphone and SpikerBox

More information

VNS2200 Amplifier & Controller Installation Guide

VNS2200 Amplifier & Controller Installation Guide VNS2200 Amplifier & Controller Installation Guide VNS2200 Amplifier & Controller Installation 1. Determine the installation location for the VNS2200 device. Consider the following when determining the

More information

imso-104 Manual Revised July 19, 2012

imso-104 Manual Revised July 19, 2012 imso-104 Manual Section 1 Getting Started SAFETY 1.10 Quickstart Guide 1.20 SAFETY 1.30 Compatibility 1.31 Hardware 1.32 Software Section 2 How it works 2.10 Menus 2.20 Analog Channel 2.21 On / Off 2.22

More information

Part names (continued) Remote control

Part names (continued) Remote control Introduction Part names (continued) Remote control (1) STANDBY ( 25) (1) (2) ON ( 25) (3) (3) ID - 1 / 2 / 3 / 4 s ( 18) (4) (4) COMPUTER 1 ( 27) (7) (5) COMPUTER 2 * (8) (6) COMPUTER 3 * (10) (13) (7)

More information

Kramer Electronics, Ltd. USER MANUAL. Model: VS x 1 Sequential Video Audio Switcher

Kramer Electronics, Ltd. USER MANUAL. Model: VS x 1 Sequential Video Audio Switcher Kramer Electronics, Ltd. USER MANUAL Model: VS-120 20 x 1 Sequential Video Audio Switcher Contents Contents 1 Introduction 1 2 Getting Started 1 2.1 Quick Start 2 3 Overview 3 4 Installing the VS-120 in

More information

AI-1616L-LPE. Features. High-precision Analog input board (Low Profile size) for PCI Express AI-1616L-LPE 1. Ver.1.02 Ver.1.01

AI-1616L-LPE. Features. High-precision Analog input board (Low Profile size) for PCI Express AI-1616L-LPE 1. Ver.1.02 Ver.1.01 High-precision Analog input board (Low Profile size) for PCI Express AI-1616L-LPE This product is a multi-function, PCI Express bus-compliant interface board that incorporates high-precision 16-bit analog

More information

Dell Wyse 5030 PCoIP Zero Client

Dell Wyse 5030 PCoIP Zero Client Dell Wyse 5030 PCoIP Zero Client User Guide Regulatory Model: PxN Regulatory Type: PxN001 Notes, cautions, and warnings NOTE: A NOTE indicates important information that helps you make better use of your

More information

Fluke 190-Series II Firmware Upgrade V11.44

Fluke 190-Series II Firmware Upgrade V11.44 Fluke 190-Series II Firmware Upgrade V11.44 Requirements 1. Fluke 190- Series II ScopeMeter with firmware prior to V11.44 2. Supported models are: 190-102, 190-104, 190-062, 190-202, 190-204, 190-502,

More information

PicoScope 6407 Digitizer

PicoScope 6407 Digitizer YE AR HIGH PERFORMANCE USB DIGITIZER Programmable and Powerful 1 GHz bandwidth 1 GS buffer size 5 GS/s real-time sampling Advanced digital triggers Built-in function generator USB-connected Signals Analysis

More information

EASY-MCS. Multichannel Scaler. Profiling Counting Rates up to 150 MHz with 15 ppm Time Resolution.

EASY-MCS. Multichannel Scaler. Profiling Counting Rates up to 150 MHz with 15 ppm Time Resolution. Multichannel Scaler Profiling Counting Rates up to 150 MHz with 15 ppm Time Resolution. The ideal solution for: Time-resolved single-photon counting Phosphorescence lifetime spectrometry Atmospheric and

More information

DT9857E. Key Features: Dynamic Signal Analyzer for Sound and Vibration Analysis Expandable to 64 Channels

DT9857E. Key Features: Dynamic Signal Analyzer for Sound and Vibration Analysis Expandable to 64 Channels DT9857E Dynamic Signal Analyzer for Sound and Vibration Analysis Expandable to 64 Channels The DT9857E is a high accuracy dynamic signal acquisition module for noise, vibration, and acoustic measurements

More information

FCPM-6000RC. Mini-Circuits P.O. Box , Brooklyn, NY (718)

FCPM-6000RC. Mini-Circuits  P.O. Box , Brooklyn, NY (718) USB / Ethernet Integrated Frequency Counter & Power Meter 50Ω -30 dbm to +20 dbm, 1 MHz to 6000 MHz The Big Deal Automatically synchronized power & frequency measurements USB and Ethernet control Includes

More information

AI-1204Z-PCI. Features. 10MSPS, 12-bit Analog Input Board for PCI AI-1204Z-PCI 1. Ver.1.04

AI-1204Z-PCI. Features. 10MSPS, 12-bit Analog Input Board for PCI AI-1204Z-PCI 1. Ver.1.04 10MSPS, 12-bit Analog Board for PCI AI-1204Z-PCI * Specifications, color and design of the products are subject to change without notice. This product is a PCI bus-compliant interface board that expands

More information

VIDEO GRABBER. DisplayPort. User Manual

VIDEO GRABBER. DisplayPort. User Manual VIDEO GRABBER DisplayPort User Manual Version Date Description Author 1.0 2016.03.02 New document MM 1.1 2016.11.02 Revised to match 1.5 device firmware version MM 1.2 2019.11.28 Drawings changes MM 2

More information

PulseCounter Neutron & Gamma Spectrometry Software Manual

PulseCounter Neutron & Gamma Spectrometry Software Manual PulseCounter Neutron & Gamma Spectrometry Software Manual MAXIMUS ENERGY CORPORATION Written by Dr. Max I. Fomitchev-Zamilov Web: maximus.energy TABLE OF CONTENTS 0. GENERAL INFORMATION 1. DEFAULT SCREEN

More information

PicoScope 6407 Digitizer

PicoScope 6407 Digitizer YE AR PicoScope 6407 Digitizer HIGH PERFORMANCE USB DIGITIZER Programmable and Powerful 1 GHz bandwidth 1 GS buffer size 5 GS/s real-time sampling Advanced digital triggers Built-in function generator

More information

Analyze Frequency Response (Bode Plots) with R&S Oscilloscopes Application Note

Analyze Frequency Response (Bode Plots) with R&S Oscilloscopes Application Note Analyze Frequency Response (Bode Plots) with R&S Oscilloscopes Application Note Products: R&S RTO2002 R&S RTO2004 R&S RTO2012 R&S RTO2014 R&S RTO2022 R&S RTO2024 R&S RTO2044 R&S RTO2064 This application

More information

Digital Storage Oscilloscopes 2550 Series

Digital Storage Oscilloscopes 2550 Series Data Sheet Digital Storage Oscilloscopes 2550 Series The 2550 series digital storage oscilloscopes provide high performance and value in 2-channel and 4-channel configurations. With bandwidth from 70 MHz

More information

DETEXI Basic Configuration

DETEXI Basic Configuration DETEXI Network Video Management System 5.5 EXPAND YOUR CONCEPTS OF SECURITY DETEXI Basic Configuration SETUP A FUNCTIONING DETEXI NVR / CLIENT It is important to know how to properly setup the DETEXI software

More information

This guide gives a brief description of the ims4 functions, how to use this GUI and concludes with a number of examples.

This guide gives a brief description of the ims4 functions, how to use this GUI and concludes with a number of examples. Quick Start Guide: Isomet ims Studio Isomet ims Studio v1.40 is the first release of the Windows graphic user interface for the ims4- series of 4 channel synthezisers, build level rev A and rev B. This

More information

DPD80 Infrared Datasheet

DPD80 Infrared Datasheet Data Sheet v1.4 DPD8 Infrared DPD8 Infrared Datasheet Resolved Inc. www.resolvedinstruments.com info@resolvedinstruments.com 217 Resolved Inc. All rights reserved. DPD8 Infrared General Description The

More information

PCM ENCODING PREPARATION... 2 PCM the PCM ENCODER module... 4

PCM ENCODING PREPARATION... 2 PCM the PCM ENCODER module... 4 PCM ENCODING PREPARATION... 2 PCM... 2 PCM encoding... 2 the PCM ENCODER module... 4 front panel features... 4 the TIMS PCM time frame... 5 pre-calculations... 5 EXPERIMENT... 5 patching up... 6 quantizing

More information

New Generation of MEA-Systems: MEA2100-System

New Generation of MEA-Systems: MEA2100-System New Generation of MEA-Systems: MEA2100-System Integrated stimulation Gain and bandwidth adjustable via software Up to 240 recording channels Variable contact unit for microelectrode arrays with 32, 60

More information

ESI VLS-2000 Video Line Scaler

ESI VLS-2000 Video Line Scaler ESI VLS-2000 Video Line Scaler Operating Manual Version 1.2 October 3, 2003 ESI VLS-2000 Video Line Scaler Operating Manual Page 1 TABLE OF CONTENTS 1. INTRODUCTION...4 2. INSTALLATION AND SETUP...5 2.1.Connections...5

More information

SPATIAL LIGHT MODULATORS

SPATIAL LIGHT MODULATORS SPATIAL LIGHT MODULATORS Reflective XY Series Phase and Amplitude 512x512 A spatial light modulator (SLM) is an electrically programmable device that modulates light according to a fixed spatial (pixel)

More information

amplipex KJE-1001 recording system Updated:

amplipex KJE-1001 recording system Updated: amplipex KJE-1001 recording system Updated:2012.12.14 Mainbox (KJE-1001) Demultiplexer (KJD-1000) Grass audio monitor Oscilloscope PC + Monitor + a USB webcam General system overview Units, lines, etc

More information

Product Information. EIB 700 Series External Interface Box

Product Information. EIB 700 Series External Interface Box Product Information EIB 700 Series External Interface Box June 2013 EIB 700 Series The EIB 700 units are external interface boxes for precise position measurement. They are ideal for inspection stations

More information

ViewCommander- NVR Version 3. User s Guide

ViewCommander- NVR Version 3. User s Guide ViewCommander- NVR Version 3 User s Guide The information in this manual is subject to change without notice. Internet Video & Imaging, Inc. assumes no responsibility or liability for any errors, inaccuracies,

More information

EAN-Performance and Latency

EAN-Performance and Latency EAN-Performance and Latency PN: EAN-Performance-and-Latency 6/4/2018 SightLine Applications, Inc. Contact: Web: sightlineapplications.com Sales: sales@sightlineapplications.com Support: support@sightlineapplications.com

More information

User manual Transmodulators. Ref. 5103S/5103T/5103Q/5130

User manual Transmodulators. Ref. 5103S/5103T/5103Q/5130 User manual Transmodulators Ref. 5103S/5103T/5103Q/5130 Contents 1 Introduction 2 1.1 The ProQuad range................................ 2 1.2 Modular system solution.............................. 4 1.3

More information

AD16-64(LPCI)LA. Non-isolated high precision analog input board for Low Profile PCI AD16-64(LPCI)LA 1. Ver.1.01

AD16-64(LPCI)LA. Non-isolated high precision analog input board for Low Profile PCI AD16-64(LPCI)LA 1. Ver.1.01 Non-isolated high precision analog board for Low Profile PCI AD16-64(LPCI)LA * Specifications, color and design of the products are subject to change without notice. This product is a PCI bus compatible

More information

DAC20. 4 Channel Analog Audio Output Synapse Add-On Card

DAC20. 4 Channel Analog Audio Output Synapse Add-On Card DAC20 4 Channel Analog Audio Output Synapse Add-On Card TECHNICAL MANUAL DAC20 Analog Audio Delay Line Lange Wagenstraat 55 NL-5126 BB Gilze The Netherlands Phone: +31 161 850 450 Fax: +31 161 850 499

More information

Night Hawk Firing System User s Manual

Night Hawk Firing System User s Manual Firmware Version 2.53 Page 1 of 37 Table of Contents Features of the Night Hawk Panel... 4 A reminder on the safe use of Electronic Pyrotechnic Firing Systems... 5 Night Hawk Firing Panel Controls... 6

More information

DPD80 Visible Datasheet

DPD80 Visible Datasheet Data Sheet v1.3 Datasheet Resolved Inc. www.resolvedinstruments.com info@resolvedinstruments.com 217 Resolved Inc. All rights reserved. General Description The DPD8 is a low noise digital photodetector

More information

Getting Started with the LabVIEW Sound and Vibration Toolkit

Getting Started with the LabVIEW Sound and Vibration Toolkit 1 Getting Started with the LabVIEW Sound and Vibration Toolkit This tutorial is designed to introduce you to some of the sound and vibration analysis capabilities in the industry-leading software tool

More information

Ensemble QLAB. Stand-Alone, 1-4 Axes Piezo Motion Controller. Control 1 to 4 axes of piezo nanopositioning stages in open- or closed-loop operation

Ensemble QLAB. Stand-Alone, 1-4 Axes Piezo Motion Controller. Control 1 to 4 axes of piezo nanopositioning stages in open- or closed-loop operation Ensemble QLAB Motion Controllers Ensemble QLAB Stand-Alone, 1-4 Axes Piezo Motion Controller Control 1 to 4 axes of piezo nanopositioning stages in open- or closed-loop operation Configurable open-loop

More information

Sapera LT 8.0 Acquisition Parameters Reference Manual

Sapera LT 8.0 Acquisition Parameters Reference Manual Sapera LT 8.0 Acquisition Parameters Reference Manual sensors cameras frame grabbers processors software vision solutions P/N: OC-SAPM-APR00 www.teledynedalsa.com NOTICE 2015 Teledyne DALSA, Inc. All rights

More information

Multiband Noise Reduction Component for PurePath Studio Portable Audio Devices

Multiband Noise Reduction Component for PurePath Studio Portable Audio Devices Multiband Noise Reduction Component for PurePath Studio Portable Audio Devices Audio Converters ABSTRACT This application note describes the features, operating procedures and control capabilities of a

More information

Quick Start for TrueRTA (v3.5) on Windows XP (and earlier)

Quick Start for TrueRTA (v3.5) on Windows XP (and earlier) Skip directly to the section that covers your version of Windows (XP and earlier, Vista or Windows 7) Quick Start for TrueRTA (v3.5) on Windows XP (and earlier) Here are step-by-step instructions to get

More information

FS4 Quick Start Guide

FS4 Quick Start Guide FS4 Quick Start Guide Overview FS4 is AJA s flagship frame synchronizer and converter, offering incredible versatility and connectivity in a sleek and compact 1RU frame for all your 4K/ UltraHD/2K/HD/SD

More information

MSO-28 Oscilloscope, Logic Analyzer, Spectrum Analyzer

MSO-28 Oscilloscope, Logic Analyzer, Spectrum Analyzer Link Instruments Innovative Test & Measurement solutions since 1986 Store Support Oscilloscopes Logic Analyzers Pattern Generators Accessories MSO-28 Oscilloscope, Logic Analyzer, Spectrum Analyzer $ The

More information

MINI PC SCOPE PCSU01. User manual. test leads software download USB cable design enclosure

MINI PC SCOPE PCSU01. User manual. test leads software download USB cable design enclosure MINI PC SCOPE PCSU01 User manual Features test leads software download USB cable design enclosure Specifications oscilloscope: o bandwidth: DC to 200 khz ± 3 db o input impedance: 100 ko / 20 pf o maximum

More information

S op o e p C on o t n rol o s L arni n n i g n g O bj b e j ctiv i e v s

S op o e p C on o t n rol o s L arni n n i g n g O bj b e j ctiv i e v s ET 150 Scope Controls Learning Objectives In this lesson you will: learn the location and function of oscilloscope controls. see block diagrams of analog and digital oscilloscopes. see how different input

More information

Solutions to Embedded System Design Challenges Part II

Solutions to Embedded System Design Challenges Part II Solutions to Embedded System Design Challenges Part II Time-Saving Tips to Improve Productivity In Embedded System Design, Validation and Debug Hi, my name is Mike Juliana. Welcome to today s elearning.

More information

Kramer Electronics, Ltd. USER MANUAL. Model: FC Analog Video to SDI Converter

Kramer Electronics, Ltd. USER MANUAL. Model: FC Analog Video to SDI Converter Kramer Electronics, Ltd. USER MANUAL Model: FC-7501 Analog Video to SDI Converter Contents Contents 1 Introduction 1 2 Getting Started 1 3 Overview 2 4 Your Analog Video to SDI Converter 3 5 Using Your

More information

P-2 Installing the monitor (continued) Carry out as necessary

P-2 Installing the monitor (continued) Carry out as necessary P-2 Installing the monitor (continued) Carry out as necessary Using the monitor without the bezel MDT552S satisfies the UL requirements as long as it is used with the bezel attached. When using the monitor

More information

R5 RIC Quickstart R5 RIC. R5 RIC Quickstart. Saab TransponderTech AB. Appendices. Project designation. Document title. Page 1 (25)

R5 RIC Quickstart R5 RIC. R5 RIC Quickstart. Saab TransponderTech AB. Appendices. Project designation. Document title. Page 1 (25) Appendices 1 (25) Project designation R5 RIC Document title CONTENTS 2 (25) 1 References... 4 2 Dimensions... 5 3 Connectors... 6 3.1 Power input... 6 3.2 Video I... 6 3.3 Video Q... 6 3.4 Sync... 6 3.5

More information

A MISSILE INSTRUMENTATION ENCODER

A MISSILE INSTRUMENTATION ENCODER A MISSILE INSTRUMENTATION ENCODER Item Type text; Proceedings Authors CONN, RAYMOND; BREEDLOVE, PHILLIP Publisher International Foundation for Telemetering Journal International Telemetering Conference

More information

Auxiliary states devices

Auxiliary states devices 22 Auxiliary states devices When sampling using multiple frame states, Signal can control external devices such as stimulators in addition to switching the 1401 outputs. This is achieved by using auxiliary

More information

WAVES Cobalt Saphira. User Guide

WAVES Cobalt Saphira. User Guide WAVES Cobalt Saphira TABLE OF CONTENTS Chapter 1 Introduction... 3 1.1 Welcome... 3 1.2 Product Overview... 3 1.3 Components... 5 Chapter 2 Quick Start Guide... 6 Chapter 3 Interface and Controls... 7

More information

Single Axis Position Controller

Single Axis Position Controller SERIES P9511 Single Axis Position Controller Compact Construction Simple Go-to operation Integrated Relay Output Integrated Mains Power Supply ELEKTRO-TRADING sp. Z o.o. 44-109 Gliwice, ul. Mechaników

More information