Wednesday, December 5, 2012

Flow for Logic Analyzer Experiment

To root out the causes of time dilation, I've set up a flow for collecting spike time stamps from Neurogrid for comparing them with the programmed spike times.  I can then compare the measured ISIs (to the tens of picosecond resolution) to the programmed ISIs.  Time dilation manifests as an additional delay in the ISI, and likewise time contraction manifests as a shortening of the ISI.

Flow:

Set up Neurogrid
  1. Connect FPGA to leaf of 9
  2. Spoof FPGA as chip 15
    1. change xml config file so 15 is at leaf of 9
    2. comment out chip 17 in xml config file route (17 is normal FPGA)
    3.  In bias-ZIF-6k.xml, change chip_15 route_to to match xml config file 
  3. Connect as shown
    1. Connect FPGA reset pin to Neurogrid reset
    2. Connect FPGA acknowledge pin to oscilloscope and logic analyzer











Set up Logic Analyzer
  1. load Stimulus\System1.tla configuration file
  2. go to setup > probes tab
  3. look for signals on channel 7
    1. Probes C3 and C2 should be all triggering except first channel on C3
  4. Start spring gui, and if software doesnt see sufficient signal, gui will time out.
    1. The board light will trip.  This is normal for this experiment
Set up Software
In neuro-boa/apps/loopback_test/
  1. Edit loopback_parameters.py
  2. python loopback_parameters.py
  3. python generate_spikes.py
Run experiment
  1. In spring, run NEF/loopback_test/loopback_test.py
  2. Right before experiment starts (when terminal shows "Update called to replace child:" , run logic analyzer
  3. When logic analyzer stops, File > export data
Analyze data
  1. Transfer logic analyzer data to desktop
  2. Use loopback_test/ReadLAdataAllGroupsMultipleFilesStimulus.nb Mathematica script to parse logic analyzer data
    1. change input file names
    2. change output file names
  3. Use loopback_test/cleanLogicData.sh to clean the spike data
    1. change input file names
  4. python loopback_test/analyze_loopback.py to analyze the spike data

Logic Analyzer Spike Time Cleanup Script

Here's a little bash script I use for cleaning up data files of spike times returned by the logic analyzer experiment
#!/bin/bash
# Cleans up logic analyzer data files prepended with "spike_times_"

FILES=spike_times_*

clean_file()
{
 echo processing $f
  sed -i 's/{//g' $1  # remove '{' at beginning of file
  sed -i 's/}//g' $1  # remove '}' at end of file
  sed -i 's/\ //g' $1  # remove ' ' spaces
  sed -i 's/,/\n/g' $1 # replace ',' with newlines
  sed -i '/^$/d' $1  # remove empty lines
}


for f in $FILES
do
 clean_file $f
done