8 Комити 1f3c06dbad ... 024799a287

Аутор SHA1 Порука Датум
  meghana-soleil-pc 024799a287 working version пре 3 година
  meghana-soleil-pc 36555c028c changed filter setting пре 3 година
  meghana-soleil-pc 262e01c4a4 rearranged the order of the setting пре 3 година
  meghana-soleil-pc 123467ba7a added 910c, 904c пре 3 година
  meghana-soleil-pc 3c264d59f6 default jesd delay changed again пре 3 година
  meghana-soleil-pc 767429d987 Default jesd dealy changes again! пре 3 година
  meghana-soleil-pc baa26e687c New values found by measuring on the board пре 3 година
  meghana-soleil-pc dca14c81bc Added button for phase align and setting for jesd delay пре 3 година
11 измењених фајлова са 212 додато и 123 уклоњено
  1. 105 4
      GUI.py
  2. 2 2
      align_clock.sh
  3. 7 4
      full_sequence.sh
  4. 4 1
      full_sequence_ex_rf.sh
  5. 14 0
      kalypso_registers.json
  6. 35 34
      reset.sh
  7. 44 77
      reset_ex_rf.sh
  8. 1 1
      strip_data.py
  9. BIN
      strip_data.pyc
  10. BIN
      temp.bin
  11. BIN
      temp_bg.bin

+ 105 - 4
GUI.py

@@ -331,7 +331,7 @@ class Ui_MainWindow(object):
 
         ## Int. Delay
         self.label_int_delay = QtGui.QLabel(self.centralwidget)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
         sizePolicy.setHorizontalStretch(0)
         sizePolicy.setVerticalStretch(0)
         sizePolicy.setHeightForWidth(self.label_int_delay.sizePolicy().hasHeightForWidth())
@@ -440,6 +440,71 @@ class Ui_MainWindow(object):
         self.label_int_trig.setObjectName(_fromUtf8("label_int_trig"))
         self.gridLayout.addWidget(self.label_int_trig, 8, 0, 1, 1)
 
+#########################------ADC SETTINGS-----------------################################################
+        self.line_0 = QtGui.QFrame(self.centralwidget)
+        self.line_0.setFrameShape(QtGui.QFrame.HLine)
+        self.line_0.setFrameShadow(QtGui.QFrame.Sunken)
+        self.line_0.setObjectName(_fromUtf8("line_0"))
+        self.gridLayout.addWidget(self.line_0, 9, 0, 1, 1)
+        self.line_1 = QtGui.QFrame(self.centralwidget)
+        self.line_1.setFrameShape(QtGui.QFrame.HLine)
+        self.line_1.setFrameShadow(QtGui.QFrame.Sunken)
+        self.line_1.setObjectName(_fromUtf8("line_1"))
+        self.gridLayout.addWidget(self.line_1, 9, 1, 1, 1)
+
+        self.adc_label_settings = QtGui.QLabel(self.centralwidget)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.adc_label_settings.sizePolicy().hasHeightForWidth())
+        self.adc_label_settings.setSizePolicy(sizePolicy)
+        self.adc_label_settings.setObjectName(_fromUtf8("label_settings"))
+        self.gridLayout.addWidget(self.adc_label_settings, 10, 0, 1, 1)
+
+        self.spinBox_jesd_delay= QtGui.QSpinBox(self.centralwidget)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.spinBox_jesd_delay.sizePolicy().hasHeightForWidth())
+        self.spinBox_jesd_delay.setSizePolicy(sizePolicy)
+        self.spinBox_jesd_delay.setMaximumSize(QtCore.QSize(300, 16777215))
+        self.spinBox_jesd_delay.setObjectName(_fromUtf8("spinBox_jesd_delay"))
+        self.spinBox_jesd_delay.setMaximum(61)
+        self.gridLayout.addWidget(self.spinBox_jesd_delay, 11, 1, 1, 1)
+        self.label_jesd_delay = QtGui.QLabel(self.centralwidget)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.label_jesd_delay.sizePolicy().hasHeightForWidth())
+        self.label_jesd_delay.setSizePolicy(sizePolicy)
+        self.label_jesd_delay.setObjectName(_fromUtf8("label_jesd_delay"))
+        self.gridLayout.addWidget(self.label_jesd_delay, 11, 0, 1, 1)
+
+
+##############################----------tx_trig-------##########################################################
+        # self.pushButton_tx_trig = QtGui.QPushButton(self.centralwidget)
+        # sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+        # sizePolicy.setHorizontalStretch(0)
+        # sizePolicy.setVerticalStretch(0)
+        # sizePolicy.setHeightForWidth(self.pushButton_tx_trig.sizePolicy().hasHeightForWidth())
+        # self.pushButton_tx_trig.setSizePolicy(sizePolicy)
+        # self.pushButton_tx_trig.setMaximumSize(QtCore.QSize(800, 16777215))
+        # self.pushButton_tx_trig.setObjectName(_fromUtf8("pushButton_tx_trig"))
+        # self.gridLayout.addWidget(self.pushButton_tx_trig, 11, 0, 1, 1)
+
+######################################################################################################
+##############################-------phase shifter------##########################################################
+        self.pushButton_phase_swap = QtGui.QPushButton(self.centralwidget)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+        sizePolicy.setHeightForWidth(self.pushButton_phase_swap.sizePolicy().hasHeightForWidth())
+        self.pushButton_phase_swap.setSizePolicy(sizePolicy)
+        self.pushButton_phase_swap.setMaximumSize(QtCore.QSize(800, 16777215))
+        self.pushButton_phase_swap.setObjectName(_fromUtf8("pushButton_phase_swap"))
+        self.gridLayout.addWidget(self.pushButton_phase_swap, 12, 0, 1, 1)
+
+######################################################################################################
 
 
 
@@ -458,7 +523,7 @@ class Ui_MainWindow(object):
         self.gridLayout_acq.setObjectName(_fromUtf8("gridLayout_acq"))
 
         self.label_acq = QtGui.QLabel(self.centralwidget)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
+        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
         sizePolicy.setHorizontalStretch(0)
         sizePolicy.setVerticalStretch(0)
         sizePolicy.setHeightForWidth(self.label_pix_min.sizePolicy().hasHeightForWidth())
@@ -1093,6 +1158,8 @@ class Ui_MainWindow(object):
             else:
                 self.pushButton_run.setStyleSheet("background-color : green")
                 self.pushButton_run.setText(_translate("MainWindow", "RUN", None))
+            check_status()
+            led_update()
 
 
 
@@ -1109,6 +1176,8 @@ class Ui_MainWindow(object):
             if (read_register("PCIE_RESET",hex=True) != "14021700"):
                 self.status_bar.showMessage('Error!', 1000)
                 self.textEdit.insertPlainText(u'\u26A0' + ' Communication failed with FPGA board... Check FPGA, the PCI-Express connection and reboot')
+                check_status()
+                led_update()
             else:
                 self.status_bar.showMessage('Initializing board...', 5000)
                 subprocess.call(['./full_sequence.sh'])
@@ -1118,6 +1187,7 @@ class Ui_MainWindow(object):
                 self.spinBox_total_samples.setValue(100)
                 self.spinBox_skip_samples.setValue(0)
                 self.spinBox_int_trig.setValue(126)
+                self.spinBox_jesd_delay.setValue(50)
                 rst_slow_trigger_samples()
                 self.status_bar.showMessage('Board initialized', 1000)
                 self.textEdit.insertPlainText(subprocess.check_output(['./status.sh']))
@@ -1130,6 +1200,8 @@ class Ui_MainWindow(object):
             if (read_register("PCIE_RESET",hex=True) != "14021700"):
                 self.status_bar.showMessage('Error!', 1000)
                 self.textEdit.insertPlainText(u'\u26A0' + ' Communication failed with FPGA board... Check FPGA, the PCI-Express connection and reboot')
+                check_status()
+                led_update()
             else:
                 self.status_bar.showMessage('Initializing board...', 5000)
                 subprocess.call(['./full_sequence_ex_rf.sh'])
@@ -1139,6 +1211,7 @@ class Ui_MainWindow(object):
                 self.spinBox_total_samples.setValue(100)
                 self.spinBox_skip_samples.setValue(0)
                 self.spinBox_int_trig.setValue(126)
+                self.spinBox_jesd_delay.setValue(50)
                 rst_slow_trigger_samples()
                 self.status_bar.showMessage('Board initialized with external RF parameters', 1000)
                 self.textEdit.insertPlainText(subprocess.check_output(['./status.sh']))
@@ -1184,6 +1257,22 @@ class Ui_MainWindow(object):
             write_reg("INTEG_DELAY",integration_delay_w)
             return integration_delay_w
 
+
+        def tx_trig():
+            self.pushButton_run.setFlat(0)
+            subprocess.call(['./tx_trig_adcs.sh'])
+
+        def phase_swap():
+            self.pushButton_run.setFlat(0)
+            phase0 = 8
+            phase180 = 12296 #3008
+            phase_set = read_register("PHASE_SWAP", hex = False)
+            if (str(phase_set) == str(phase0)):
+                write_reg("PHASE_SWAP", str(phase180)) #3008
+            else:
+                write_reg("PHASE_SWAP", str(phase0))  #008
+
+
 ########################################################################################################################
         def timescan():
             self.textEdit.setText(timestamp())
@@ -1400,6 +1489,8 @@ class Ui_MainWindow(object):
                     self.spinBox_total_samples.setValue(read_register("FT_TO_ACQ"))
                     self.spinBox_skip_samples.setValue(read_register("FT_SKIP"))
                     self.spinBox_int_trig.setValue(read_register("CLK_DIV"))
+                    self.spinBox_jesd_delay.setValue(read_register("JESD_DELAY"))
+
             except:
                 self.status_bar.showMessage('Error!', 1000)
                 self.textEdit.insertPlainText(u'\u26A0' + ' Communication failed with FPGA board... Check FPGA, the PCI-Express connection and reboot')
@@ -1531,6 +1622,10 @@ class Ui_MainWindow(object):
         self.spinBox_total_samples.valueChanged.connect(lambda: write_reg("FT_TO_ACQ",self.spinBox_total_samples.text()))
         self.spinBox_skip_samples.valueChanged.connect(lambda: write_reg("FT_SKIP",self.spinBox_skip_samples.text()))
         self.spinBox_int_trig.valueChanged.connect(lambda: write_reg("CLK_DIV",self.spinBox_int_trig.text()))
+        self.spinBox_jesd_delay.valueChanged.connect(lambda: write_reg("JESD_DELAY",self.spinBox_jesd_delay.text()))
+
+
+        self.pushButton_phase_swap.clicked.connect(phase_swap)
 
         self.pushButton_file_path.clicked.connect(getDir)
         self.pushButton_background_file.clicked.connect(get_background)
@@ -1580,6 +1675,9 @@ class Ui_MainWindow(object):
         self.label_settings.setText(_translate("MainWindow", "KALYPSO settings", None))
         self.pushButton_readsettings.setText(_translate("MainWindow", "Read-back", None))
         self.label_settings.setFont(boldFont)
+        self.adc_label_settings.setText(_translate("MainWindow", "ADC settings", None))
+        self.adc_label_settings.setFont(boldFont)
+
         self.label_int_time.setText(_translate("MainWindow", "Integration Time (ns)", None))
         self.label_int_delay.setText(_translate("MainWindow", "Integration Delay", None))
         self.label_gott_gain.setText(_translate("MainWindow", "GOTTHARD Gain", None))
@@ -1592,11 +1690,14 @@ class Ui_MainWindow(object):
         self.label_skip_samples.setText(_translate("MainWindow", "Fast-trigger skip", None))
         # self.label_int_trig_text.setText(_translate("MainWindow", "Internal trigger (0 = external trigger)", None))
         # self.label_int_trig_text.setFont(boldFont)
+
+        self.label_jesd_delay.setText(_translate("MainWindow", "JESD delay", None))
+        self.pushButton_phase_swap.setText(_translate("MainWindow", "Phase swap", None))
         self.label_int_trig.setText(_translate("MainWindow", "Internal trig. DIV (0 = ext)", None))
         self.label_controls.setText(_translate("MainWindow", "KALYPSO operation", None))
         self.label_controls.setFont(boldFont)
-        self.pushButton_init_board.setText(_translate("MainWindow", "Init Board", None))
-        self.pushButton_init_board_ex_rf.setText(_translate("MainWindow", "Init Board (Soleil)", None))
+        self.pushButton_init_board.setText(_translate("MainWindow", "Internal CLK", None))
+        self.pushButton_init_board_ex_rf.setText(_translate("MainWindow", "External CLK", None))
 
 
         self.pushButton_timescan.setText(_translate("MainWindow", "Timescan", None))

+ 2 - 2
align_clock.sh

@@ -11,10 +11,10 @@ echo "*CLOCK: Alignment...."
 # pci -w 908C 6d6
 # sleep 0.05
 
-pci -w 9088 1500
+pci -w 9088 0 # was 1500
 sleep 0.05
 
-pci -w 908C 1000
+pci -w 908C 0 # was 1000
 sleep 0.05
 
 

+ 7 - 4
full_sequence.sh

@@ -61,9 +61,9 @@ sleep 0.1
 pci -w 0x9028 0x0
 sleep 0.1
 
-echo "Clock alignment top and bottom ... "
-./align_clock.sh
-sleep 0.1
+#echo "Clock alignment top and bottom ... "
+#./align_clock.sh
+#sleep 0.1
 
 
 pci -w 0x910C 0
@@ -74,5 +74,8 @@ sleep 0.1
 #pci -w 0x910C e
 #sleep 0.1
 
-pci -w 0x910C 2f
+pci -w 0x910C 33   # with 904c 3009
 sleep 0.1
+
+#pci -w 0x910C 32   # with 904c 009
+#sleep 0.1

+ 4 - 1
full_sequence_ex_rf.sh

@@ -71,5 +71,8 @@ sleep 0.1
 #pci -w 0x910C e
 #sleep 0.1
 
-pci -w 0x910C 32
+pci -w 0x910C 33   # with 904c 3009
 sleep 0.1
+
+#pci -w 0x910C 32   # with 904c 009
+#sleep 0.1

+ 14 - 0
kalypso_registers.json

@@ -63,6 +63,20 @@
     "notes": ""
   },
 
+  "JESD_DELAY" : {
+      "name" : "jesd initial delay",
+      "address" : "0x910C",
+      "mask" : "0x000000FF",
+      "notes": "MAX 3F"
+    },
+
+    "PHASE_SWAP" : {
+        "name" : "180 deg phase shift",
+        "address" : "0x904C",
+        "mask" : "0x0000FFFF",
+        "notes": "MAX 3F"
+      },
+
   "FRAME_RATE" : {
       "name" : "Time for total Acquisition",
       "address": "0x90C0",

+ 35 - 34
reset.sh

@@ -1,36 +1,9 @@
 #! /bin/bash
 export PCILIB_MODEL=ipedma
 
-#echo "ADC & GOT: Turning on power..."
-#pci -w 9048 f0
-#sleep 0.1
-
-#pci -w 9048 ff
-#sleep 0.1
-################################################
-echo "KALYPSO: reset internal PLL"
-pci -w 904C 1
-sleep 0.1
-
-echo "KALYPSO: enable internal clock (WARNING: ONLY FOR DEBUGGING!)"
-pci -w 904C 0
-sleep 0.1
-
-echo "reset and synchronize TOP and BOTTOM"
-pci -w 904C 2
-sleep 0.1
-
-echo "SETTING FOR 512 PIXELS"
-pci -w 904C 8
-sleep 0.1
-
-
-###################################################
-# echo "----------> reset of the clock align stage"
-# pci -w 9040 10310f00
-# sleep 0.05
-# pci -w 9040 10210f00
-# sleep 0.05
+echo " ###########################################################"
+echo "          KALYPSO 512 pix  - INTERNAL CLOCK      "
+echo " ###########################################################"
 
 ####################################################
 echo "RESET of the KALYPSO"
@@ -40,9 +13,7 @@ sleep 0.1
 echo "DE-RESET of the KALYPSO"
 pci -w 9040 0x0
 sleep 0.1
-#echo "KALYPSO: Total Orbits"
-#pci -w 0x9020 0x400
-#sleep 0.1
+
 ######################################
 pci -w 0x9024 0
 sleep 0.1
@@ -70,9 +41,39 @@ echo "write the number of samples to be acquired"
 pci -w 9108 0x0400
 sleep 0.1
 
-
+################################################
 echo "----------> reset of the clock align stage"
+pci -w 9088 0
+sleep 0.05
+#
+pci -w 908C 0
+sleep 0.05
+
 pci -w 9040 10310f00
 sleep 0.05
 pci -w 9040 10210f00
 sleep 0.05
+
+pci -w 9040 10310f00
+sleep 0.05
+pci -w 9040 10210f00
+sleep 0.05
+#
+pci -w 9040 10310f00
+sleep 0.05
+pci -w 9040 10210f00
+sleep 0.05
+#
+pci -w 9040 10310f00
+sleep 0.05
+pci -w 9040 10210f00
+sleep 1 # do not reduce this time, waiting till the PLL is locked #
+
+ ############## For internal RF clock ############
+echo "reset and synchronize TOP and BOTTOM"
+pci -w 904C 2
+sleep 0.1
+
+echo "SETTING FOR 512 PIXELS"
+pci -w 904C 8
+sleep 0.1

+ 44 - 77
reset_ex_rf.sh

@@ -1,77 +1,9 @@
 #! /bin/bash
 export PCILIB_MODEL=ipedma
 
-#echo "ADC & GOT: Turning on power..."
-#pci -w 9048 f0
-#sleep 0.1
-
-#pci -w 9048 ff
-#sleep 0.1
-###################### For internal RF clock ##########################
- #echo "KALYPSO: reset internal PLL"
- #pci -w 904C 1
- #sleep 0.1
-#
- #echo "KALYPSO: enable internal clock (WARNING: ONLY FOR DEBUGGING!)"
- #pci -w 904C 0
- #sleep 0.1
-#
-#
- #echo "reset and synchronize TOP and BOTTOM"
- #pci -w 904C 2
- #sleep 0.1
-#
-# echo "SETTING FOR 512 PIXELS"
- #pci -w 904C 8
- #sleep 0.1
-
-
-############## For external RF clock ############
-#echo "KALYPSO: #################################################"
-#echo "KALYPSO: setup enable external RF clock"
-#echo "KALYPSO: #################################################"
-
-pci -w 904C 1
-sleep 0.1
-#
-echo "reset and synchronize TOP and BOTTOM"
-pci -w 904C 003
-sleep 0.1
-#
-echo "SETTING FOR 512 PIXELS"
-pci -w 904C 009
-sleep 0.1
-
-
-###################################################
-echo "----------> reset of the clock align stage"
-
-# pci -w 9088 0
-# sleep 0.05
-#
-# pci -w 908C 0
-# sleep 0.05
-#
-#
-# pci -w 9040 10310f00
-# sleep 0.05
-# pci -w 9040 10210f00
-# sleep 0.05
-#
-# pci -w 9040 10310f00
-# sleep 0.05
-# pci -w 9040 10210f00
-# sleep 0.05
-#
-# pci -w 9040 10310f00
-# sleep 0.05
-# pci -w 9040 10210f00
-# sleep 0.05
-#
-# pci -w 9040 10310f00
-# sleep 0.05
-# pci -w 9040 10210f00
-# sleep 0.05
+echo " ###########################################################"
+echo "          KALYPSO 512 pix - EXTERNAL CLOCK      "
+echo " ###########################################################"
 
 ####################################################
 echo "RESET of the KALYPSO"
@@ -81,12 +13,7 @@ sleep 0.1
 
 echo "DE-RESET of the KALYPSO"
 pci -w 9040 0x0 # -- enable internal clock
-#pci -w 9040 80000000 # enable external clock
-# pci -w 9040 0x0 #
-sleep 0.1
-#echo "KALYPSO: Total Orbits"
-#pci -w 0x9020 0x400
-#sleep 0.1
+
 ######################################
 pci -w 0x9024 0
 sleep 0.1
@@ -112,3 +39,43 @@ sleep 0.1
 
 echo "write the number of samples to be acquired"
 pci -w 9108 0x0400
+sleep 0.1
+
+###################################################
+echo "----------> reset of the clock align stage"
+
+ pci -w 9088 0
+ sleep 0.05
+
+ pci -w 908C 0
+ sleep 0.05
+
+ pci -w 9040 10310f00
+ sleep 0.05
+ pci -w 9040 10210f00
+ sleep 0.05
+#
+ pci -w 9040 10310f00
+ sleep 0.05
+ pci -w 9040 10210f00
+ sleep 0.05
+#
+ pci -w 9040 10310f00
+ sleep 0.05
+ pci -w 9040 10210f00
+ sleep 0.05
+#
+ pci -w 9040 10310f00
+ sleep 0.05
+ pci -w 9040 10210f00
+ sleep 1 # do not reduce this time, waiting till the PLL is locked #
+
+ ############## For external RF clock ############
+
+ echo "reset and synchronize TOP and BOTTOM"
+ pci -w 904C 003
+ sleep 0.1
+ #
+ echo "SETTING FOR 512 PIXELS"
+ pci -w 904C 009
+ sleep 0.1

+ 1 - 1
strip_data.py

@@ -109,7 +109,7 @@ def strip_data(filename, number_pixels, orbits, offset = None):
         data = data[:,index_interleave]
 
         ###### filter out the saw pattern ####################
-        data = ss.savgol_filter(data, 15, 3) # window size 51, polynomial order 3
+        data = ss.savgol_filter(data, 21, 3) # window size 51, polynomial order 3
 
         orb, pix = np.shape(data)