コード例 #1
0
def runExpt(cparVal, cserVal, S11mV_ref, useRef):
    # useRef: use the pregenerated S11mV_ref as a reference to compute
    # reflection. If this option is 0, then the compute_wobble will instead
    # generated S11 in mV format instead of dB format

    if meas_time:
        start_time = time.time()

    # enable power and signal path
    nmrObj.assertControlSignal(nmrObj.RX1_2L_msk | nmrObj.RX_SEL2_msk
                               | nmrObj.RX_FL_msk)
    nmrObj.assertControlSignal(nmrObj.PSU_15V_TX_P_EN_msk
                               | nmrObj.PSU_15V_TX_N_EN_msk
                               | nmrObj.PSU_5V_TX_N_EN_msk
                               | nmrObj.PSU_5V_ADC_EN_msk
                               | nmrObj.PSU_5V_ANA_P_EN_msk
                               | nmrObj.PSU_5V_ANA_N_EN_msk)

    # change matching network values (twice because sometimes it doesnt' work
    # once due to transient
    nmrObj.setMatchingNetwork(cparVal, cserVal)
    nmrObj.setMatchingNetwork(cparVal, cserVal)

    # do measurement
    nmrObj.wobble(sta_freq, sto_freq, spac_freq, samp_freq)

    # disable all to save power
    nmrObj.deassertAll()

    if meas_time:
        elapsed_time = time.time() - start_time
        start_time = time.time()  # reset the start time
        print("### time elapsed for running wobble exec: %.3f" %
              (elapsed_time))

    # compute the generated data
    meas_folder = parse_simple_info(data_parent_folder, 'current_folder.txt')
    S11dB, S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq = compute_wobble(
        nmrObj, data_parent_folder, meas_folder[0], -10, S11mV_ref, useRef,
        en_fig, fig_num)
    print(
        '\t\tfmin={:0.3f} fmax={:0.3f} bw={:0.3f} minS11={:0.2f} minS11_freq={:0.3f} cparVal={:d} cserVal={:d}'
        .format(S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq, cparVal,
                cserVal))

    if meas_time:
        elapsed_time = time.time() - start_time
        print("### time elapsed for compute_wobble: %.3f" % (elapsed_time))

    return S11dB, minS11_freq
コード例 #2
0
def wobb_meas(data_parent_folder, cparIdx, cserIdx, s11_obj, en_fig):
    startfreq = 3
    stopfreq = 5.5
    spacfreq = 0.02
    sampfreq = 25
    wobb_samples = int(sampfreq / spacfreq)
    command = ("./thesis_nmr_de1soc_hdl2.0_wobble" + " " + str(cparIdx) + " " +
               str(cserIdx) + " " + str(startfreq) + " " + str(stopfreq) +
               " " + str(spacfreq) + " " + str(sampfreq) + " " +
               str(wobb_samples))
    os.system(command + ' > /dev/null')
    meas_folder = parse_simple_info(data_parent_folder, 'current_folder.txt')
    S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq = compute_wobble(
        data_parent_folder, meas_folder[0], s11_obj, en_fig)
    #print('fmin={0:0.3f} fmax={1:0.3f} bw={2:0.3f}'.format(S11_fmin, S11_fmax, S11_bw))

    return S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq
コード例 #3
0
def runExpt(cparVal, cserVal, minReflxTable):
    if meas_time:
        start_time = time.time()

    nmrObj.assertControlSignal(nmrObj.RX_IN_SEL_2_msk
                               | nmrObj.PAMP_IN_SEL_RX_msk)
    nmrObj.assertControlSignal(nmrObj.AMP_HP_LT1210_EN_msk
                               | nmrObj.PSU_15V_TX_P_EN_msk
                               | nmrObj.PSU_15V_TX_N_EN_msk)

    # change matching network values (twice because sometimes it doesnt' work once due to transient
    nmrObj.setMatchingNetwork(cparVal, cserVal)
    nmrObj.setMatchingNetwork(cparVal, cserVal)

    # do measurement
    nmrObj.wobble(freqSta, freqSto, freqSpa, freqSamp)

    # disable all to save power
    nmrObj.deassertControlSignal(nmrObj.AMP_HP_LT1210_EN_msk
                                 | nmrObj.PSU_15V_TX_P_EN_msk
                                 | nmrObj.PSU_15V_TX_N_EN_msk)
    nmrObj.deassertControlSignal(nmrObj.RX_IN_SEL_2_msk
                                 | nmrObj.PAMP_IN_SEL_RX_msk)

    if meas_time:
        elapsed_time = time.time() - start_time
        start_time = time.time()  # reset the start time
        print("### time elapsed for running wobble exec: %.3f" %
              (elapsed_time))

    # compute the generated data
    meas_folder = parse_simple_info(data_parent_folder, 'current_folder.txt')
    S11mV, S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq = compute_wobble(
        nmrObj, data_parent_folder, meas_folder[0], S11_min, en_fig, fig_num)
    print(
        '\t\tfmin={:0.3f} fmax={:0.3f} bw={:0.3f} minS11={:0.2f} minS11_freq={:0.3f} cparVal={:d} cserVal={:d}'
        .format(S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq, cparVal,
                cserVal))

    if meas_time:
        elapsed_time = time.time() - start_time
        print("### time elapsed for compute_wobble: %.3f" % (elapsed_time))

    # update the table
    minReflxTable = updateTable(minReflxTable, S11mV, cparVal, cserVal)

    # move the measurement folder to the main folder
    swfolder_ind = swfolder + '/' + str('Cp_[{:d}]__Cs_[{:d}]'.format(
        cparVal, cserVal))
    if en_fig:
        shutil.move(data_parent_folder + '/' + meas_folder[0] + '/wobble.png',
                    swfolder + '/' +
                    str('plot_Cp_[{:d}]__Cs_[{:d}].png'.format(
                        cparVal, cserVal)))  # move the figure

    if keepRawData:
        # write gain values to a file
        RawDataFile = open(
            swfolder +
            '/S11_Cp_[{:d}]__Cs_[{:d}].txt'.format(cparVal, cserVal), 'w')
        RawDataFile.write('freq(MHz)\t min-voltage(mV)\n')
        RawDataFile.close()
        with open(
                swfolder +
                '/S11_Cp_[{:d}]__Cs_[{:d}].txt'.format(cparVal, cserVal),
                'a') as f:
            for (a, b) in zip(freqSw, S11mV):
                f.write('{:-8.3f},{:-8.3f}\n'.format(a, b))

        shutil.rmtree(data_parent_folder + '/' +
                      meas_folder[0])  # move the data folder
    else:
        shutil.rmtree(data_parent_folder + '/' + meas_folder[0])

    return S11mV, minS11_freq, minReflxTable
コード例 #4
0
while True:
    nmrObj.assertControlSignal(nmrObj.RX_IN_SEL_1_msk
                               | nmrObj.PAMP_IN_SEL_TEST_msk)
    nmrObj.assertControlSignal(nmrObj.AMP_HP_LT1210_EN_msk
                               | nmrObj.PSU_15V_TX_P_EN_msk
                               | nmrObj.PSU_15V_TX_N_EN_msk)
    time.sleep(0.1)

    sta_freq = 1
    sto_freq = 4
    spac_freq = 0.01
    samp_freq = 25
    nmrObj.wobble(sta_freq, sto_freq, spac_freq, samp_freq)

    nmrObj.deassertControlSignal(nmrObj.AMP_HP_LT1210_EN_msk
                                 | nmrObj.PSU_15V_TX_P_EN_msk
                                 | nmrObj.PSU_15V_TX_N_EN_msk)
    nmrObj.deassertControlSignal(nmrObj.RX_IN_SEL_1_msk
                                 | nmrObj.PAMP_IN_SEL_TEST_msk)

    S11_min = -10
    meas_folder = parse_simple_info(data_parent_folder, 'current_folder.txt')
    # meas_folder[0] = "nmr_wobb_2018_06_25_12_44_48"

    S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq = compute_wobble(
        data_parent_folder, meas_folder[0], S11_min, en_fig, fig_num)
    print(
        'fmin={0:0.3f} fmax={1:0.3f} bw={2:0.3f} minS11={3:0.2f} minS11_freq={4:0.2f}'
        .format(S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq))
コード例 #5
0
def runExpt( cparVal, cserVal, S11mV_ref, useRef ):
    # useRef: use the pregenerated S11mV_ref as a reference to compute reflection. If this option is 0, then the compute_wobble will instead generated S11 in mV format instead of dB format

    # global variable
    global exptnum
    global minReflxTable
    global minReflxTable_tmp

    exptnum = exptnum + 1

    if meas_time:
        start_time = time.time()

    # enable power and signal path
    nmrObj.assertControlSignal( nmrObj.RX1_2L_msk | nmrObj.RX_SEL2_msk | nmrObj.RX_FL_msk )
    nmrObj.assertControlSignal( nmrObj.PSU_15V_TX_P_EN_msk | nmrObj.PSU_15V_TX_N_EN_msk | nmrObj.PSU_5V_TX_N_EN_msk |
                               nmrObj.PSU_5V_ADC_EN_msk | nmrObj.PSU_5V_ANA_P_EN_msk | nmrObj.PSU_5V_ANA_N_EN_msk )

    # change matching network values (twice because sometimes it doesnt' work once due to transient
    nmrObj.setMatchingNetwork( cparVal, cserVal )
    nmrObj.setMatchingNetwork( cparVal, cserVal )

    # do measurement
    nmrObj.wobble( freqSta, freqSto, freqSpa, freqSamp )

    # disable all to save power
    nmrObj.deassertAll()

    if meas_time :
        elapsed_time = time.time() - start_time
        start_time = time.time()  # reset the start time
        print( "### time elapsed for running wobble exec: %.3f" % ( elapsed_time ) )

    # compute the generated data
    meas_folder = parse_simple_info( data_parent_folder, 'current_folder.txt' )
    S11dB, S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq = compute_wobble( nmrObj, data_parent_folder, meas_folder[0], S11_min, S11mV_ref, useRef, en_fig, fig_num )
    print( '\t\tfmin={:0.3f} fmax={:0.3f} bw={:0.3f} minS11={:0.2f} minS11_freq={:0.3f} cparVal={:d} cserVal={:d}'.format( S11_fmin, S11_fmax, S11_bw, minS11, minS11_freq, cparVal, cserVal ) )

    if meas_time :
        elapsed_time = time.time() - start_time
        print( "### time elapsed for compute_wobble: %.3f" % ( elapsed_time ) )

    # update the table
    minReflxTable = updateTable( minReflxTable, S11dB, cparVal, cserVal )
    minReflxTable_tmp = updateTable( minReflxTable_tmp, S11dB, cparVal, cserVal )
    
    # move the measurement folder to the main folder
    swfolder_ind = swfolder + '/' + str( 'Cp_[{:d}]__Cs_[{:d}]'.format( cparVal, cserVal ) )
    if en_fig:
        shutil.move( data_parent_folder + '/' + meas_folder[0] + '/wobble.png', swfolder + '/' + str( 'plt{:03d}_Cp_[{:d}]__Cs_[{:d}].png'.format( exptnum, cparVal, cserVal ) ) )  # move the figure

    if keepRawData:
        # write gain values to a file
        RawDataFile = open( swfolder + '/S11_Cp_[{:d}]__Cs_[{:d}].txt'.format( cparVal, cserVal ), 'w' )
        RawDataFile.write( 'freq(MHz)\t min-voltage(mV)\n' )
        RawDataFile.close()
        with open( swfolder + '/S11_Cp_[{:d}]__Cs_[{:d}].txt'.format( cparVal, cserVal ), 'a' ) as f:
            for ( a, b ) in zip ( freqSw, S11dB ):
                f.write( '{:-8.3f},{:-8.3f}\n' .format( a, b ) )

        shutil.rmtree ( data_parent_folder + '/' + meas_folder[0] )  # remove the data folder
    else:
        shutil.rmtree( data_parent_folder + '/' + meas_folder[0] )  # remove the data folder

    return S11dB, minS11_freq