def check_core_alignment(r,cores=4): adc.set_spi_register(r,0,0x05+0x80,0) #use counter adc.set_test_mode(r, 0) adc.sync_adc(r,zdok_0=True,zdok_1=True) test_vec = np.array(adc.get_test_vector(r, ['snapshot_adc0'])) #for i in range(1): # for core in range(cores): # print "%3d"%test_vec[core,i], # print '' s = test_vec[:,0] if np.any(s==255): # Lazy way to make sure we aren't looking at a wrapping section of the counter s = test_vec[100] offset = np.min(s) - s #these are the relative arrival times. i.e. -1 means arrival is one clock too soon return offset
score = np.zeros([n_bits,n_delays-max_zeros+1]) for bit in range(n_bits): score[bit] = np.convolve(np.ones(max_zeros), d[bit,:], mode='valid') for delay in range(n_delays-max_zeros+1): print "DELAY %2d:" %delay, for bit in range(n_bits): print "%4d"%score[bit,delay], print '' ROACH = '192.168.0.111' r = corr.katcp_wrapper.FpgaClient(ROACH) time.sleep(0.1) adc.set_spi_register(r,0,0x05+0x80,1) #use strobing test mode adc.set_test_mode(r, 0) adc.set_test_mode(r, 1) adc.sync_adc(r,zdok_0=True,zdok_1=False) BITS = 8 DELAY_RANGE = 32 CORES = 4 glitches = np.zeros([CORES,BITS,DELAY_RANGE]) for delay in range(DELAY_RANGE): print "setting delay %d"%(delay) set_io_delay(r,0,0,delay) set_io_delay(r,0,1,delay) set_io_delay(r,0,2,delay) set_io_delay(r,0,3,delay) test_vec = np.array(adc.get_test_vector(r, ['snapshot_adc0']))
for bit in range(n_bits): score[bit] = np.convolve(np.ones(max_zeros), d[bit, :], mode='valid') for delay in range(n_delays - max_zeros + 1): print "DELAY %2d:" % delay, for bit in range(n_bits): print "%4d" % score[bit, delay], print '' ROACH = '192.168.0.111' r = corr.katcp_wrapper.FpgaClient(ROACH) time.sleep(0.1) adc.set_spi_register(r, 0, 0x05 + 0x80, 1) #use strobing test mode adc.set_test_mode(r, 0) adc.set_test_mode(r, 1) adc.sync_adc(r, zdok_0=True, zdok_1=False) BITS = 8 DELAY_RANGE = 32 CORES = 4 glitches = np.zeros([CORES, BITS, DELAY_RANGE]) for delay in range(DELAY_RANGE): print "setting delay %d" % (delay) set_io_delay(r, 0, 0, delay) set_io_delay(r, 0, 1, delay) set_io_delay(r, 0, 2, delay) set_io_delay(r, 0, 3, delay) test_vec = np.array(adc.get_test_vector(r, ['snapshot_adc0']))
import numpy as np import corr import adc5g as adc import time import struct import sys ROACH = '192.168.0.111' r = corr.katcp_wrapper.FpgaClient(ROACH) time.sleep(0.1) adc.set_spi_register(r, 0, 0x05 + 0x80, 0) #use counter mode adc.set_test_mode(r, 0) adc.set_test_mode(r, 1) adc.sync_adc(r, zdok_0=True, zdok_1=False) time.sleep(0.5) Fpercore = 5. / 4. #GHz i = 0 r.write_int('rst', 1) r.write_int('rst', 0) CORES = 4 glitches = np.zeros(CORES) start_time = time.time() while (True): for core in range(CORES): glitches[core] = r.read_uint('glitch_cnt%d' % core)
import numpy as np import corr import adc5g as adc import time import struct import sys ROACH = "192.168.0.111" r = corr.katcp_wrapper.FpgaClient(ROACH) time.sleep(0.1) adc.set_spi_register(r, 0, 0x05 + 0x80, 0) # use counter mode adc.set_test_mode(r, 0) adc.set_test_mode(r, 1) adc.sync_adc(r, zdok_0=True, zdok_1=False) time.sleep(0.5) Fpercore = 5.0 / 4.0 # GHz i = 0 r.write_int("rst", 1) r.write_int("rst", 0) CORES = 4 glitches = np.zeros(CORES) start_time = time.time() while True: for core in range(CORES): glitches[core] = r.read_uint("glitch_cnt%d" % core)