Commit bee55ecc authored by Matthieu Cattin's avatar Matthieu Cattin

fmc_adc_demo: Modify fmc_adc_demo GUI to use the common classes.

parent 301e0b67
#!/usr/bin/python #! /usr/bin/env python
# coding: utf8 # coding: utf8
# Copyright CERN, 2011
# Author: Matthieu Cattin <matthieu.cattin@cern.ch>
# Licence: GPL v2 or later.
# Website: http://www.ohwr.org
# Last modifications: 10/5/2012
# Import system modules
import sys import sys
import rr
import time import time
import os import os
import math import math
# Add common modules and libraries location to path
sys.path.append('../../../')
sys.path.append('../../../gnurabbit/python/')
sys.path.append('../../../common/')
# Import common modules
from ptsexcept import *
import rr
# Import specific modules
from fmc_adc_spec import *
from fmc_adc import *
from numpy import * from numpy import *
from pylab import * from pylab import *
...@@ -17,8 +36,8 @@ import PyQt4.uic ...@@ -17,8 +36,8 @@ import PyQt4.uic
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyQt4.QtCore import * from PyQt4.QtCore import *
import fmc_adc #import fmc_adc
import spec_fmc_adc #import spec_fmc_adc
from PAGE.Agilent33250A import * from PAGE.Agilent33250A import *
from PAGE.SineWaveform import * from PAGE.SineWaveform import *
...@@ -64,15 +83,15 @@ def acq_plot(): ...@@ -64,15 +83,15 @@ def acq_plot():
carrier_addr = ((trig_pos-pre_trig+1)<<3) carrier_addr = ((trig_pos-pre_trig+1)<<3)
print('trig_pos:%.8X (%d) pre_trig:%.8X (%d)')%(trig_pos, trig_pos, pre_trig, pre_trig) print('trig_pos:%.8X (%d) pre_trig:%.8X (%d)')%(trig_pos, trig_pos, pre_trig, pre_trig)
print('carrier addr: %.8X (%d)')%(carrier_addr, carrier_addr) print('carrier addr: %.8X (%d)')%(carrier_addr, carrier_addr)
channels_data = spec_fmc.get_data(carrier_addr, (NB_POINTS*8)) channels_data = carrier.get_data(carrier_addr, (NB_POINTS*8))
else: else:
print('Multi-shot acq') print('Multi-shot acq')
channels_data = spec_fmc.get_data(0, (NB_POINTS*8)) channels_data = carrier.get_data(0, (NB_POINTS*8))
channels_data = [hex2signed(item) for item in channels_data] channels_data = [hex2signed(item) for item in channels_data]
channels_data = [digital2volt(item,ADC_FS,ADC_NBITS) for item in channels_data] channels_data = [digital2volt(item,ADC_FS,ADC_NBITS) for item in channels_data]
#channels_data = spec_fmc.get_data(0, (NB_POINTS*8)) #channels_data = carrier.get_data(0, (NB_POINTS*8))
print('Nb points:%d')%NB_POINTS print('Nb points:%d')%NB_POINTS
print('channels data length:%d')%len(channels_data) print('channels data length:%d')%len(channels_data)
sample = arange(len(channels_data)/4) sample = arange(len(channels_data)/4)
...@@ -106,7 +125,7 @@ def update_chan_cfg(channel): ...@@ -106,7 +125,7 @@ def update_chan_cfg(channel):
def update_trig_cfg(): def update_trig_cfg():
print('Update trigger configuration') print('Update trigger configuration')
int_thres = m.int_trig_thres.value() int_thres = m.int_trig_thres.value()
int_sel = m.int_trig_sel.currentIndex() int_sel = m.int_trig_sel.currentIndex() + 1
hw_sel = m.hw_trig_sel.currentIndex() hw_sel = m.hw_trig_sel.currentIndex()
hw_pol = m.hw_trig_pol.currentIndex() hw_pol = m.hw_trig_pol.currentIndex()
hw_en = bool(m.hw_trig_en.checkState()) hw_en = bool(m.hw_trig_en.checkState())
...@@ -115,7 +134,7 @@ def update_trig_cfg(): ...@@ -115,7 +134,7 @@ def update_trig_cfg():
print('int_thres:%d int_sel:%d hw_sel:%d hw_pol:%d hw_en:%d sw_en:%d delay:%d')%(int_thres,int_sel,hw_sel,hw_pol,hw_en,sw_en,delay) print('int_thres:%d int_sel:%d hw_sel:%d hw_pol:%d hw_en:%d sw_en:%d delay:%d')%(int_thres,int_sel,hw_sel,hw_pol,hw_en,sw_en,delay)
fmc.set_trig_config(hw_sel, hw_pol, hw_en, sw_en, int_sel, int_thres, delay) fmc.set_trig_config(hw_sel, hw_pol, hw_en, sw_en, int_sel, int_thres, delay)
#fmc.print_adc_core_config() #fmc.print_adc_core_config()
#spec_fmc.print_csr() #carrier.print_csr()
def update_acq_cfg(): def update_acq_cfg():
print('Update acquisition configuration') print('Update acquisition configuration')
...@@ -147,7 +166,7 @@ def on_stop_acq(): ...@@ -147,7 +166,7 @@ def on_stop_acq():
def on_acq_data(): def on_acq_data():
print('ACQ DATA') print('ACQ DATA')
#spec_fmc.wait_end_acq() #carrier.wait_end_acq()
acq_plot() acq_plot()
def on_reset_offset(): def on_reset_offset():
...@@ -167,16 +186,16 @@ def poll_timer_cb(): ...@@ -167,16 +186,16 @@ def poll_timer_cb():
m.ch2_value.setText(str(fmc.get_current_adc_value(2))) m.ch2_value.setText(str(fmc.get_current_adc_value(2)))
m.ch3_value.setText(str(fmc.get_current_adc_value(3))) m.ch3_value.setText(str(fmc.get_current_adc_value(3)))
m.ch4_value.setText(str(fmc.get_current_adc_value(4))) m.ch4_value.setText(str(fmc.get_current_adc_value(4)))
temp = "%3.3f"%spec_fmc.get_temp() temp = "%3.3f"%carrier.get_temp()
temp += u'\u00B0'+'C' temp += u'\u00B0'+'C'
m.carrier_temp.setText(temp) m.carrier_temp.setText(temp)
temp = "%3.3f"%fmc.get_temp() temp = "%3.3f"%fmc.get_temp()
temp += u'\u00B0'+'C' temp += u'\u00B0'+'C'
m.mezz_temp.setText(temp) m.mezz_temp.setText(temp)
trig_tag = spec_fmc.get_utc_trig_tag() trig_tag = carrier.get_utc_trig_tag()
start_tag = spec_fmc.get_utc_start_tag() start_tag = carrier.get_utc_start_tag()
stop_tag = spec_fmc.get_utc_stop_tag() stop_tag = carrier.get_utc_stop_tag()
end_tag = spec_fmc.get_utc_end_tag() end_tag = carrier.get_utc_end_tag()
trig_tag_s = "%09d.%010d s"%(trig_tag[2],(trig_tag[3]*8)) trig_tag_s = "%09d.%010d s"%(trig_tag[2],(trig_tag[3]*8))
start_tag_s = "%09d.%010d s"%(start_tag[2],(start_tag[3]*8)) start_tag_s = "%09d.%010d s"%(start_tag[2],(start_tag[3]*8))
stop_tag_s = "%09d.%010d s"%(stop_tag[2],(stop_tag[3]*8)) stop_tag_s = "%09d.%010d s"%(stop_tag[2],(stop_tag[3]*8))
...@@ -197,7 +216,7 @@ if __name__ == "__main__": ...@@ -197,7 +216,7 @@ if __name__ == "__main__":
# Load firmware to FPGA # Load firmware to FPGA
default_directory = '.' default_directory = '.'
path_fpga_loader = '../../../gnurabbit/user/fpga_loader'; path_fpga_loader = '../../../gnurabbit/user/fpga_loader';
path_firmware = '../firmwares/spec_fmcadc100m14b4cha.bin'; path_firmware = '../firmwares/spec_fmcadc100m14b4cha_test.bin';
firmware_loader = os.path.join(default_directory, path_fpga_loader) firmware_loader = os.path.join(default_directory, path_fpga_loader)
bitstream = os.path.join(default_directory, path_firmware) bitstream = os.path.join(default_directory, path_firmware)
print firmware_loader + ' ' + bitstream print firmware_loader + ' ' + bitstream
...@@ -206,22 +225,22 @@ if __name__ == "__main__": ...@@ -206,22 +225,22 @@ if __name__ == "__main__":
# Objects declaration # Objects declaration
spec = rr.Gennum() # bind to the SPEC board spec = rr.Gennum() # bind to the SPEC board
fmc = fmc_adc.CFmcAdc100Ms(spec) fmc = CFmcAdc100m(spec)
gen = Agilent33250A(device=USB_DEVICE, bauds=RS232_BAUD) gen = Agilent33250A(device=USB_DEVICE, bauds=RS232_BAUD)
sine = SineWaveform() sine = SineWaveform()
spec_fmc = spec_fmc_adc.CSpecFmcAdc100Ms(spec) carrier = CFmcAdc100mSpec(spec, 0x1)
# Enable DMA interrupts (finished, error) # Enable DMA interrupts (finished, error)
spec_fmc.set_irq_en_mask(0x3) carrier.set_irq_en_mask(0x3)
# Set UTC # Set UTC
current_time = time.time() current_time = time.time()
utc_seconds = int(current_time) utc_seconds = int(current_time)
spec_fmc.set_utc_second_cnt(utc_seconds) carrier.set_utc_second_cnt(utc_seconds)
#print('UTC core seconds counter: %d')%spec_fmc.get_utc_second_cnt() #print('UTC core seconds counter: %d')%carrier.get_utc_second_cnt()
utc_coarse = int((current_time - utc_seconds)/8E-9) utc_coarse = int((current_time - utc_seconds)/8E-9)
spec_fmc.set_utc_coarse_cnt(utc_coarse) carrier.set_utc_coarse_cnt(utc_coarse)
#print('UTC core coarse counter: %d')%spec_fmc.get_utc_coarse_cnt() #print('UTC core coarse counter: %d')%carrier.get_utc_coarse_cnt()
# Variables from GUI # Variables from GUI
ch_range = [m.ch1_range, m.ch2_range, m.ch3_range, m.ch4_range] ch_range = [m.ch1_range, m.ch2_range, m.ch3_range, m.ch4_range]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment