A number of self tests are implemented in the recording system to debug combinations of subsystems.
Test | Functional Area |
---|---|
--------------------- | -------------------------------- |
Base Station | PC -> BS (slot) connection |
Heartbeat | Probe -> BSC FPGA connection |
SerDes Link | HS -> BSC communication |
I2C/Memmap | Probe configuration interface |
EEPROM | Part number/version data storage |
Shift Registers | Shank configuration network |
Parallel Serial Bus | Probe -> BSC data connection |
Signal Path | Signal fidelity check |
Noise Level | Amplifier noise check |
Terminology:
HW = hardware
SW = software
PC = computer
FPGA = microcomputer
I2C = inter-IC bus
BS = base station card
BSC = base station connect card
HS = headstage
PSB = parallel serial bus
POR = power-on reset
PRBS = pseudo random binary signal
SerDes = serializer/deserializer
This test checks the connectivity between PC and BS FPGA board over the PCIe interface.
The heartbeat signal generated by the PSB_SYNC signal of the probe is routed via the SerDes to the BSC FPGA. The BSC analyzes the presence of a 1 Hz clock signal.
The presence of a heartbeat signal indicates the functionality of the power supplies on the HS for serializer and probe, the POR signal, the presence of the master clock signal on the probe, the functionality of the clock divider on the probe, and basic communication over the SerDes link.
The functionality of the SerDes link is quantitatively verified using the integrated PRBS test of the SerDes component pair.
This test verifies the functionality of the I2C interface and the probe's memory map. The function reads a register on a memory map address, writes back a modified value, reads this again, and writes the original value again to restore the probe to its settings before test.
The test is successful if the modified value can be read back, and if an ‘Ack’ byte has been received for each R/W operation.
The test verifies the correct access to the EEPROM on flex, HS and BSC. The function writes data to an unused location on the EEPROM, and reads it back.
The test is successful if the data can be read back, and if a ‘Ack’ byte has been received for each R/W operation.
The function tests the flex, HS and BSC EEPROM consecutively. The function returns an error after the first failed test.
This test verifies the functionality of the shank and base shift registers (SR_CHAIN 1 to 3). The function configures the shift register two times with the same code. After the 2nd write cycle the SR_OUT_OK bit in the STATUS register is read. If OK, the shift register configuration was successful. The test is done for all 3 registers. The configuration code used for the test is a dedicated code (to make sure the bits are not all 0 or 1).
If this test fails, the shank is likely broken.
A test mode is implemented on the probe which enables the transmission of a known data pattern over the PSB bus. This test records a small data set and verifies whether that matches the known data pattern.
This way the PSB bus on the probe and all data lines between probe and serializer are verified.
The probe is configured for recording of a test signal which is generated on the HS. This configuration is done via the shank and base configuration registers and the memory map. The AP data signal is recorded and the frequency and amplitude of the recorded signal are extracted for each electrode. If at least 90% of the electrodes show a signal within the frequency and amplitude tolerance, the functions returns a pass/fail value.
The function requires more than 30 seconds to complete.
The probe is configured for noise analysis. Via the base configuration registers and the memory map, the channel inputs are shorted to ground. The data signal is recorded and the noise level is calculated. The function analyses if the probe performance falls inside a specified tolerance range (go/no-go test).
The probe passes the noise test if fewer than 20% of the electrodes have their AP noise value out of spec, and if fewer than 20% of the electrodes have their LFP noise value out of spec.
The API function returns a pass/fail value.
The function requires more than 30 seconds to complete.
fin