|
@@ -73,6 +73,7 @@ class BoardConfiguration(QtGui.QWidget):
|
|
|
|
|
|
'chip_delay_max': 31,
|
|
|
'chip_delay' : [0,0,0,0,0,0,0,0],
|
|
|
+ 'bunch_shift' : [2,2,2,2,2,2,2,2], #Offset by +2 to encode -2 to +2 range
|
|
|
'chip_delay_factor': 3,
|
|
|
|
|
|
|
|
@@ -320,6 +321,7 @@ class BoardConfiguration(QtGui.QWidget):
|
|
|
|
|
|
self.observe_write(self._set_chip_delay, 'chip_delay')
|
|
|
self.observe_write(self._set_samplingrate, 'samplingrate')
|
|
|
+ self.observe_write(self._set_bunch_shift, 'bunch_shift')
|
|
|
|
|
|
if self._config['adc_number'] > 4:
|
|
|
#Setup Long delay 330ps. Value needs to be shifted to the left because first bit is used vor halfstep
|
|
@@ -581,7 +583,20 @@ class BoardConfiguration(QtGui.QWidget):
|
|
|
s += ' ADC_%i Fine Delay: %i,' % (adc+4, value)
|
|
|
s = s[:-1] # cut away the last dangling ','
|
|
|
logging.vinfo(s)
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ def _set_bunch_shift(self, values):
|
|
|
+ #print("Setting bunch shifts: ", values)
|
|
|
+
|
|
|
+ base_reg = 0x9320
|
|
|
+
|
|
|
+ for i, val in enumerate(values):
|
|
|
+ reg = hex(base_reg+(i*4))
|
|
|
+ set = "0x{0:08x}".format(val)
|
|
|
+
|
|
|
+ logging.vinfo("Setting %s to %s"%(reg,set))
|
|
|
+ pci.write(self.identifier, set, reg)
|
|
|
|
|
|
|
|
|
|
|
@@ -663,7 +678,7 @@ class BoardConfiguration(QtGui.QWidget):
|
|
|
if rate == 1:
|
|
|
#500 MHz
|
|
|
self.update('delay_25_adc', 10)
|
|
|
- self.update('delay_330_adc', 1)#
|
|
|
+ self.update('delay_330_adc', 1)
|
|
|
self.update('delay_25_adc_2', 10)
|
|
|
self.update('delay_330_adc_2', 1)
|
|
|
elif rate == 2:
|
|
@@ -687,13 +702,15 @@ class BoardConfiguration(QtGui.QWidget):
|
|
|
sleep(0.1)
|
|
|
self.update('chip_delay', [0,0,0,0, 0,0,0,0])
|
|
|
sleep(0.1)
|
|
|
+ #Bunch Shifts are offset by +2 to encode -2 to +2 as 0x0 to 0x4 in hardware
|
|
|
+ self.update('bunch_shift', [2,2,2,2, 2,2,2,2])
|
|
|
+ sleep(0.1)
|
|
|
self.update('adc_gain', [0,0,0,0, 0,0,0,0])
|
|
|
sleep(0.1)
|
|
|
self.update('header', 1)
|
|
|
sleep(0.1)
|
|
|
self.update('pilot_bunch', 1)
|
|
|
logging.vinfo('Startup Config Set')
|
|
|
-
|
|
|
def read_from_board(self):
|
|
|
"""
|
|
|
Read values from board and update them in the configuration (Mainly used for skip init functionality)
|
|
@@ -714,6 +731,13 @@ class BoardConfiguration(QtGui.QWidget):
|
|
|
tmp[selector[i]] = int(val[(adc_number-1-i)*2:(adc_number-i)*2], 16)
|
|
|
self.update('chip_delay', tmp , write=False)
|
|
|
|
|
|
+ # --[ read bunch shifts ] --
|
|
|
+ bunch_shifts = pci.read(self.identifier, reg='9320', amount=4, decimal=True)
|
|
|
+
|
|
|
+ if adc_number > 4:
|
|
|
+ bunch_shifts = bunch_shifts + pci.read(self.identifier, reg='9330', amount=4, decimal=True)
|
|
|
+ self.update('bunch_shift', bunch_shifts, write=False)
|
|
|
+
|
|
|
# --[ read and set th delay ]--
|
|
|
val = pci.read(self.identifier, reg='90B0')[0]
|
|
|
self.update('delay_330_th', self._config['delay_330_max'] - ((int(val, 16)>>1)-5), write=False)
|