|
|
Programming a Fast Device Tune Measurement
Last updated: July 4, 2006
This section is only applicable to the lab application and to a test application with the required feature license.
This section provides an example of how to make a Fast Device Tune (FDT) measurement via GPIB.
The following program example assumes that the mobile station (MS) is connected to the test set's RF IN/OUT connector.
The basic procedure to make the FDT measurement is as follows:
-
Set the test set's initial conditions required for FDT measurement (refer to Set_init_cond subroutine):
set the operating mode to IS-2000 Test mode, measurement frequency to manual mode, receiver power to manual mode, and RF generator frequency control to manual mode.
-
Set the MS Rx Frequency/Power series (10 power step levels at 4 frequency points) on the test set to match your MS's configuration (refer to Set_msrx_series subroutine). See
SETup:CFDTune
for details on the commands.
-
Set the MS Tx Frequency/Power series (10 power step levels at 4 frequency points) on the test set to match your MS's configuration (refer to Set_mstx_series subroutine). See
SETup:CFDTune
for details on the commands.
-
Verify that your MS is placed into the test mode and has properly configured for calibration.
-
Order the MS to transmit continuously at >20 dB below the power level of the first step in the MS TX Power Sequence.
Note: If your MS TX Power Sequence starts at a power level that is less than 20 dB above the minimum transmit power of your MS, then you must include a trigger pulse as the first step in the MS TX Power Sequence. The power level of this trigger pulse will be measured by the test set as one of the steps in the sequence.
-
Initiate (arm) the FDT measurement using the
INITiate<:measurement mnemonic>[:ON]
(this prepares the test set's hardware to execute the frequency/power series you've specified and arms the measurement's RF rise trigger).
-
Send the
INITiate:CFDTung:ARMed?
query and wait for it to return a value of
1
, indicating that the measurement is armed and ready to be triggered.
-
Order your MS to begin transmission of its MS TX Frequency/Power Series (the MS should then increase its output power by more than 20 dB to reach the first step in the series, which triggers the measurement with an RF rise).
-
Once triggered, the FDT measurement performs a series of channel power measurements at each step of the MS TX Frequency/Power Series. When finished, use the
FETCh:CFDTune
commands to obtain power results for all of the measured steps.
Programming Example
10 ! ====================================================================
20 ! This program is intended to control the cdma2000 Fast Devie Tune
30 ! measurement for use with the Qualcomm 6500 MS.
40 ! ====================================================================
50 !
60 ! *** Initialize Program Variables ***
70 !
80 OPTION BASE 0
90 Testset=714
100 CLEAR SCREEN
110 CLEAR 7
120 CLEAR Testset
130 PRINT "*** Fast Device Tune (CFDT) Measurement Program for 1xEV-DO***"
140 PRINT
150 !
160 !***Set up GPIB timeout***
170 ON TIMEOUT 7,32 CALL Timeout
180 ! Call "Timeout" routine after 32 seconds of GP-IB hang-up
190 !
200 ! *** Variable declarations for the FDT measurements ***
210 DIM Mstx_pow$[8000]
220 !
230 ALLOCATE REAL Mstx_pow_res(0:399)
240 Sz=16*(20+19) !ASCII Arrays = 16*(20+19) elements
250 ALLOCATE Freq_rx$[Sz],Pow_rx$[Sz],Freq_tx$[Sz],Pow_tx$[Sz]
260 !
270 Op_mode$="D2KT" !Operation mode.
280 Meas_timeout=15 !Measurement timeout.
290 !
300 Num_freq_steps=4 !Number of Rx and Tx Frequency Steps
310 Num_pow_steps=10 !Number of Rx and Tx Power Steps
320 !
330 Str_ind_freq_rx=0 !Start Index of Rx Frequencies to be hopped
340 Str_ind_pow_rx=0 !Start Index of Rx Power series
350 Freq_rx$="872E6, 873E6, 874E6, 875E6"
351 !Forward Channel Frequencies in Band Class 0 (US Cellular)
360 Pow_rx$="-15,-20,-25,-60,-35,-40,-45,-50,-55,-60"
370 !
380 Str_ind_freq_tx=0 !Start Index of Tx Frequency series
390 Str_ind_pow_tx=0 !Start Index of Tx Power series
400 Freq_tx$="827.2E6, 828E6, 829E6, 830E6"
401 !Reverse Channel Frequencies in Band Class 0 (US Cellular)
410 Pow_tx$="0,-5,-10,-15,-20,-25,-30,-35,-40,-45"
420 !
430 !Uncomment the pass loss varables and set the value as needed.
440 !Loss_frequency$=" 8.3652E+8,8.60E+8" !Set frequencies for path loss.
450 !Expected_loss$=" -1.5,-1.5" !Set path loss at frequencies specified
460 !
470 !************************************
480 !***Simple Test Executive
490 !************************************
500 !
510 GOSUB Preset_test_set
520 !End any current connection and preset test set
530 !GOSUB Set_path_loss
540 !If needed, uncomment this line and set the pass loss required for your test.
550 GOSUB Set_init_cond
560 !Set initial conditions required for the FDT test
570 GOSUB Set_msrx_series
580 !Set up the MS Rx Freq/Power Series
590 GOSUB Set_mstx_series
600 !Set up the MS Tx Freq/Power Series
610 GOSUB Check_ms_config
620 !Check MS settings matching what you've set on the test set
630 GOSUB Fdt_meas
640 !Make the Fast Device Tune measurement.
650 GOTO End_program
660 !
670 !
680 !**************************************************************************
690 ! BEGINNING OF SUBROUTINES
700 !**************************************************************************
710 !
720 !
730 Preset_test_set: !
740 !*******************************************************************
750 ! Subroutine: Preset the test set (Step 1: Set Up the Test Set)
760 !*******************************************************************
770 !
780 OUTPUT Testset;"*RST"
790 ! Full preset test set
800 OUTPUT Testset;"*OPC?"
810 ENTER Testset;Opc$
820 RETURN
830 !
840 Set_path_loss: !
850 !*******************************************************************
860 ! Subroutine: Set path loss values
870 !*******************************************************************
880 !
890 OUTPUT Testset;"SYST:CORR:FREQ";Loss_frequency$
900 ! Set the frequencies for amplitude offset
910 OUTPUT Testset;"SYST:CORR";Expected_loss$
920 ! Set the amplitude offsets for above frequencies
930 RETURN
940 !
950 Set_init_cond: !
960 !*******************************************************************
970 ! Subroutine: Set initial conditions required for the FDT Test
980 !*******************************************************************
990 !
1000 !GOSUB Set_path_loss !Set pass loss as required for your test
1010 !If needed, uncomment above line
1020 OUTPUT Testset;"CALL:OPER:MODE ";Op_mode$
1030 !Set Operating Mode to cdma2000 Test Mode
1040 OUTPUT Testset;"SET:CFDT:TIM "&VAL$(Meas_timeout)
1050 !Set measurement timeout.
1060 OUTPUT Testset;"CALL:CONT:DOWN:FREQ:AUTO OFF"
1070 !Set RF generator frequency control to manual mode.
1080 OUTPUT Testset;"RFAN:CONT:MEAS:FREQ:AUTO OFF"
1090 !Set receiver measurement frequency control to manual mode.
1100 OUTPUT Testset;"RFAN:CONT:POW:AUTO OFF"
1110 !Set receiver power control to manual mode.
1120 RETURN
1130 !
1140 Set_msrx_series: !
1150 !*******************************************************************
1160 ! Subroutine: Set up the MS Rx Freq/Power Series
1170 !*******************************************************************
1180 !
1190 PRINT "*** Set the number of Tx/Rx Frequency and Power Steps ***"
1200 OUTPUT Testset;"SET:CFDT:FREQ:STEP:COUN ";Num_freq_steps
1210 OUTPUT Testset;"SET:CFDT:POW:STEP:COUN ";Num_pow_steps
1220 PRINT "Number of Tx/Rx Frequency Steps =";Num_freq_steps
1230 PRINT "Number of Tx/Rx Power Steps =";Num_pow_steps
1240 PRINT
1250 PRINT "*** Set MS Rx Freq/Power Series ***"
1260 Stp_ind_freq_rx=Str_ind_freq_rx+Num_freq_steps
1270 !Compute Stop Index of Frequency steps
1280 Stp_ind_pow_rx=Str_ind_pow_rx+Num_pow_steps
1290 ! Compute Stop Index of Power steps
1300 !
1310 ! Check for Mx Rx Test Freq/Power Indicies Out of Range
1320 IF (Stp_ind_freq_rx<40 AND Stp_ind_pow_rx<40) THEN
1330 ! Set MS Rx Frequency and Power Start Indicies
1340 OUTPUT Testset;"SET:CFDT:MS:RX:FREQ:STEP:STAR:IND ";Str_ind_freq_rx
1350 OUTPUT Testset;"SET:CFDT:MS:RX:POW:STEP:STAR:IND ";Str_ind_pow_rx
1360 PRINT "MS Rx Test Start Freq Index = ";Str_ind_freq_rx
1370 PRINT "MS Rx Test Start Power Index = ";Str_ind_pow_rx
1380 ELSE
1390 PRINT
1400 PRINT "Error-The number of freq steps or power steps Out of Range (>40)"
1410 PRINT
1420 PRINT "Program Stopped"
1430 STOP
1440 END IF
1450 !
1460 !*** Set MS Rx Freq/Power Values ***
1470 OUTPUT Testset;"SET:CFDT:MS:RX:FREQ:STEP ";Freq_rx$
1480 PRINT "MS Rx Test Freq Seires = ";Freq_rx$
1490 OUTPUT Testset;"SET:CFDT:MS:RX:POW:STEP ";Pow_rx$
1500 PRINT "MS Rx Test Power Series = ";Pow_rx$
1510 PRINT
1520 !
1530 RETURN
1540 !
1550 Set_mstx_series: !
1560 !*******************************************************************
1570 ! Subroutine: Set up the MS Tx Freq/Power Series
1580 !*******************************************************************
1590 PRINT "*** Set MS Tx Freq/Power Series ***"
1600 Stp_ind_freq_tx=Str_ind_freq_tx+Num_freq_steps
1610 !Compute Stop Index of Frequency steps
1620 Stp_ind_pow_tx=Str_ind_pow_tx+Num_pow_steps
1630 ! Compute Stop Index of Power steps
1640 !
1650 ! Check for Mx Tx Test Freq/Power Indicies Out of Range
1660 IF (Stp_ind_freq_tx<40 AND Stp_ind_pow_tx<40) THEN
1670 ! Set MS Tx Frequency and Power Start Indicies
1680 OUTPUT Testset;"SET:CFDT:MS:TX:FREQ:STEP:STAR:IND ";Str_ind_freq_tx
1690 OUTPUT Testset;"SET:CFDT:MS:TX:POW:STEP:STAR:IND ";Str_ind_pow_tx
1700 PRINT "MS Tx Test Start Freq Index =";Str_ind_freq_tx
1710 PRINT "MS Tx Test Start Power Index =";Str_ind_pow_tx
1720 ELSE
1730 PRINT
1740 PRINT "Error-The number of freq steps or power steps Out of Range (>40)"
1750 PRINT
1760 PRINT "Program Stopped"
1770 STOP
1780 END IF
1790 !
1800 !*** Set MS Tx Freq/Power Values ***
1810 !
1820 OUTPUT Testset;"SET:CFDT:MS:TX:FREQ:STEP ";Freq_tx$
1830 PRINT "MS Tx Test Freq Series = ";Freq_tx$
1840 OUTPUT Testset;"SET:CFDT:MS:TX:POW:STEP ";Pow_tx$
1850 PRINT "MS Tx Test Power Series = ";Pow_tx$
1860 PRINT
1870 !
1880 RETURN
1890 !
1900 Check_ms_config: !
1910 !*******************************************************************
1920 ! Subroutine: Check MS Configuration Matching Test Set's
1930 !*******************************************************************
1940 PRINT "************** NOTE *****************************************"
1950 PRINT "Make sure that your MS is placed into a test mode, and is properly"
1960 PRINT "configured to measure the MS Rx Freq/Power series and transmit"
1970 PRINT "the MS Tx Freq/Power series you've set in the test set."
1980 PRINT
1990 PRINT "Order your MS to transmit continuously at >20 dB below the power level"
2000 PRINT "of the first step in MS Tx Power Series, for at least 1 ms"
2010 PRINT "*************************************************************"
2020 PRINT
2030 LINPUT "Press ENTER when finished",Keyboard$
2040 RETURN
2050 !
2060 Fdt_meas:!
2070 !*******************************************************************
2080 ! Subroutine: Perform FDT Measurement
2090 !*******************************************************************
2100 !
2110 OUTPUT Testset;"INIT:CFDT"
2120 !Arm the FDT measurement and start to build the MS Tx and Rx Freq/Power Series.
2130 OUTPUT Testset;"INIT:CFDT:ARMed?"
2140 !Queries that the MS Tx and Rx Freq/Power Series is successfully built
2150 !and the test set is ready for test.
2160 ENTER Testset;Meas_arm
2170 IF Meas_arm THEN
2180 PRINT "Command the MS to trigger the measurement (20 dB RF rise)..."
2181 PRINT
2190 LINPUT "Press ENTER when finished",Keyboard$
2200 LOOP
2210 OUTPUT Testset;"INITiate:DONE?"
2220 !Query to find out if FDT measurement is done.
2230 ENTER Testset;Meas_done$
2240 SELECT Meas_done$
2250 CASE "CFDT"
2260 ! test for the string "CFDT" indicating
2270 ! Fast Device Tune measurement is done.
2280 !***Obtain measurement results***
2290 OUTPUT Testset;"FETC:CFDT?"
2300 ENTER Testset;Integrity,Freq_step_cnt,Pow_step_cnt,Num_meas,Mstx_pow$
2310 END SELECT
2320 EXIT IF Meas_done$="NONE"
2321 ! Exit loop when the measurement completes
2330 END LOOP
2331 ! If Meas_done$="WAIT" then loop continues until "NONE"
2340 ELSE
2350 PRINT "The test set is not properly armed. Please check the MS Tx and"
2360 PRINT "Rx Freq/Power Series Setups."
2370 GOTO End_program
2380 END IF
2390 !
2400 PRINT "*** Print MS Tx Measurement Results ***"
2410 PRINT
2420 PRINT "Integrity = ";Integrity
2430 PRINT "Number of Freq Steps = ";Freq_step_cnt
2440 PRINT "Number of Power Steps = ";Pow_step_cnt
2450 PRINT "Total Number of Meas Results = ";Num_meas
2460 PRINT
2470 !
2480 !Convert ASCII Arra to Real Array
2490 FOR N=1 TO Num_meas
2500 Dynamic_mkr=((N-1)*17)
2510 !Set up a marker that will jump to each comma in the ascii string
2520 Mstx_pow_res(N)=VAL(Mstx_pow$[Dynamic_mkr+1,Dynamic_mkr+16])
2530 !Convert ascii to a numeric value
2540 NEXT N
2550 !
2560 ! PRINT "MS Tx Power Results:"
2570 PRINT "Freq Step # Power Step # Meas Power[dBm/1.23MHz]"
2580 PRINT
2590 FOR N_freq=0 TO Freq_step_cnt-1
2600 FOR N_pow=0 TO Pow_step_cnt-1
2610 PRINT N_freq+1," ",N_pow+1," ",Mstx_pow_res(N_freq*Pow_step_cnt+N_pow+1)
2620 NEXT N_pow
2630 PRINT
2640 NEXT N_freq
2650 !
2660 RETURN
2670 !
2680 End_program:!
2690 !*******************************************************************
2700 ! Subroutine: End of all testing clean up
2710 !*******************************************************************
2720 !
2730 OUTPUT Testset;"*RST"
2740 !Full preset test set
2750 OUTPUT Testset;"*OPC?"
2760 ENTER Testset;Opc$
2770 DEALLOCATE Mstx_pow_res(*),Freq_rx$,Pow_rx$,Freq_tx$,Pow_tx$
2780 PRINT
2790 PRINT "End of Program"
2800 END
2810 !
2820 !**************************************************************************
2830 ! SUB-PROGRAM SECTION
2840 !**************************************************************************
2850 !
2860 Timeout: SUB Timeout ! Global timeout handler
2870 PRINT
2880 PRINT "Program timed out, check setup"
2890 CLEAR 7
2900 CLEAR Testset
2910 STOP
2920 SUBEND
2930 !
The measurement results include an integrity indicator, number of the frequency steps (Freq_step_cnt), number of the power steps at each frequency (Pow_step_cnt), total number of the measured power steps (Num_meas should equal to Freq_step_cnt * Pow_step_cnt), followed by Num_meas of power results transmitted by the MS.
A sample output from this program example is shown below:
|
|