:CALibrate Subsystem

Flex Apps:
FlexDCA
FlexRT
FlexPLL

Use FlexPLL's Calibrate subsystem commands to calibrate:

  • Receiver's clock-recovery module or DCA-M module. This includes vertical and clock recovery calibrations. (:CALibrate:MODule commands)
  • Test setup's Response calibration. (:CALibrate:RESPonse commands)

If needed, FlexPLL automatically starts a module calibration before starting a Response Calibration. The receiver's clock recovery does not need to be locked when performing the calibrations. When a Response calibration completes, FlexPLL automatically locks the receiver's clock recovery.

The following two Python functions are an example of running a calibration using remote control. It is part of a complete example script that configures the test setup and returns a scalar measurement.

Copy

example function for module and response calibration

def module_cal(FlexPLL):
    """  """
    if FlexPLL.query(':CAL:MOD:STATus?') == 'CALIBRATED':
        print('\nModule calibration is valid.')
        return True
    FlexPLL.write(':CAL:MOD:ENABled ENABled')
    print('\nModule Calibration')
    print('Disconnect all inputs from Receiver.')
    input('Press any key to continue...')
    print('Module cal is running. Please wait...')
    FlexPLL.write(':CAL:MOD:STARt')
    FlexPLL.query(':CALibrate:SDONe?')  # mod cal complete?
    FlexPLL.query(':CALibrate:CONTinue;*OPC?')
    if FlexPLL.query(':CAL:MOD:STATus?') == 'UNCALIBRATED':
        print('\nModule calibration failed')
        FlexPLL.write(':CALibrate:CANCel')
        return False
    else:
        print('\nModule calibration is valid.')
        FlexPLL.write(':CALibrate:CONTinue')
        return True


    def response_cal(FlexPLL):
    """  """
    if FlexPLL.query(':CAL:RESP:CDATa:STATus?') == 'CORR':
        print('Response calibration is valid.')
        return True
    FlexPLL.write(':JSOurce:OENable ON')
    print('Connect the Source directly to the Receiver input.')
    input('Press any key to continue...')
    print('\nResponse calibration is running...')
    FlexPLL.write(':CAL:RESPonse:STARt')
    FlexPLL.query(':CAL:RESPonse:SDONe?')  # dismiss cal instruction dialog
    FlexPLL.write(':CAL:RESPonse:CONTinue')
    FlexPLL.query(':CAL:RESPonse:SDONe?;*OPC?')  # wait for cal to complete
    FlexPLL.write(':CAL:RESP:CONT;*OPC?')  # Dismiss cal completed dialog
    if FlexPLL.query(':CAL:RESPonse:CDATa:STATus?') == 'CORR':
        FlexPLL.write(':CAL:RESPonse:ENABle ON')
        print('\nResponse Calibration completed.')
        print('\nConnect your DUT to start making JTF measurements.')
        input('Press any key to continue...')
        return True
    else:
        print('Response calibration failed')
        return False