Programming Example
10 ! ====================================================================
20 !
30 ! Fast Device Tune Programming Example for W-CDMA/HSDPA
40 !
50 ! ====================================================================
60 !
70 ! *** Initialize Program Variables ***
80 !
90 OPTION BASE 0
100 Testset=714
110 CLEAR SCREEN
120 CLEAR 7
130 CLEAR Testset
140 PRINT "*** Fast Device Tune Programming Example for W-CDMA/HSDPA***"
150 PRINT
160 !
170 !
180 !***Set up GPIB timeout***
190 ON TIMEOUT 7,32 CALL Timeout
200 ! Call "Timeout" routine after 32 seconds of GP-IB hang-up
210 !
220 !
230 ! *** Variable declarations ***
240 DIM Mstx_pow$[8000]
250 ALLOCATE REAL Mstx_pow_res(0:399)
260 Sz=16*(20+19) !ASCII Arrays = 16*(20+19) elements
270 ALLOCATE Freq_rx$[Sz],Pow_rx$[Sz],Freq_tx$[Sz],Pow_tx$[Sz]
280 !
290 Op_mode$="FDDTest" !Operating mode.
300 Meas_timeout=15 !Measurement timeout.
310 !
320 Num_freq_steps=4 !Number of Rx and Tx Frequency Steps
330 Num_pow_steps=10 !Number of Rx and Tx Power Steps
340 !
350 Str_ind_freq_rx=0 !Start Index of Rx Frequency
360 Str_ind_pow_rx=0 !Start Index of Rx Power
370 !
380 Freq_rx$="1932.4E6, 1950.4E6, 1966.4E6, 1982.4E6"
390 ! MS RX Frequencies
400 Pow_rx$="-80, -60, -40, -60, -60, -60, -60, -60, -60, -60"
410 ! MS RX Powers (last 7 values are "dummy" values)
420 !
430 Str_ind_freq_tx=0 !Start Index of Tx Frequency
440 Str_ind_pow_tx=0 !Start Index of Tx Power
450 !
460 Freq_tx$="1852.4E6, 1870.4E6, 1886.4E6, 1902.4E6"
470 ! MS TX Frequencies
480 Pow_tx$="16, 12, 8, 4, 0, -4, -8, -12, -16, -20"
490 ! MS TX Powers
500 !
510 Loss_frequency$="800E6"!Set frequencies for path loss
520 Expected_loss$="-1.5"!Set path loss at frequencies specified
530 !
540 !************************************
550 !***Simple Test Executive
560 !************************************
570 !
580 GOSUB Preset_test_set
590 !End any current connection and preset test set
600 GOSUB Set_path_loss
610 !Set the pass loss required for your test.
620 GOSUB Set_init_cond
630 !Set initial conditions required for the FDT test
640 GOSUB Set_msrx_series
650 !Set up the MS Rx Freq/Power Series
660 GOSUB Set_mstx_series
670 !Set up the MS Tx Freq/Power Series
680 GOSUB Check_ms_config
690 !Check UE settings match what you've set on the test set
700 GOSUB Fdt_meas
710 !Make the Fast Device Tune measurement.
720 GOTO End_program
730 !
740 !
750 !**************************************************************************
760 ! BEGINNING OF SUBROUTINES
770 !**************************************************************************
780 !
790 !
800 Preset_test_set: !
810 !*******************************************************************
820 ! Subroutine: Preset the test set (Step 1: Set Up the Test Set)
830 !*******************************************************************
840 !
850 OUTPUT Testset;"*RST"
860 ! Full preset test set
870 RETURN
880 !
890 Set_path_loss: !
900 !*******************************************************************
910 ! Subroutine: Set path loss values
920 !*******************************************************************
930 !
940 OUTPUT Testset;"SYST:CORR:FREQ ";Loss_frequency$
950 ! Set the frequencies for amplitude offset
960 OUTPUT Testset;"SYST:CORR ";Expected_loss$
970 ! Set the amplitude offsets for above frequencies
980 RETURN
990 !
1000 Set_init_cond: !
1010 !*******************************************************************
1020 ! Subroutine: Set initial conditions required for the FDT Test
1030 !*******************************************************************
1040 !
1050 OUTPUT Testset;"CALL:OPER:MODE ";Op_mode$
1060 !Set Operating Mode
1070 OUTPUT Testset;"SET:CFDT:TIM "&VAL$(Meas_timeout)
1080 !Set measurement timeout.
1090 OUTPUT Testset;"CALL:CONT:DOWN:FREQ:AUTO OFF"
1100 !Set RF generator frequency control to manual mode.
1110 OUTPUT Testset;"RFAN:CONT:MEAS:FREQ:AUTO OFF"
1120 !Set receiver measurement frequency control to manual mode.
1130 OUTPUT Testset;"RFAN:CONT:POW:AUTO OFF"
1140 !Set receiver power control to manual mode.
1150 RETURN
1160 !
1170 Set_msrx_series: !
1180 !*******************************************************************
1190 ! Subroutine: Set up the MS Rx Freq/Power Series
1200 !*******************************************************************
1210 !
1220 PRINT "*** Set the number of Tx/Rx Frequency and Power Steps ***"
1230 OUTPUT Testset;"SET:CFDT:FREQ:STEP:COUN ";Num_freq_steps
1240 OUTPUT Testset;"SET:CFDT:POW:STEP:COUN ";Num_pow_steps
1250 PRINT "Number of Tx/Rx Frequency Steps = ";Num_freq_steps
1260 PRINT "Number of Tx/Rx Power Steps = ";Num_pow_steps
1270 PRINT
1280 PRINT "*** Set MS Rx Freq/Power Series ***"
1290 Stp_ind_freq_rx=Str_ind_freq_rx+Num_freq_steps
1300 ! Compute Stop Index of Frequency steps
1310 Stp_ind_pow_rx=Str_ind_pow_rx+Num_pow_steps
1320 ! Compute Stop Index of Power steps
1330 !
1340 ! Check for Mx Rx Test Freq/Power Indicies Out of Range
1350 IF (Stp_ind_freq_rx<40 AND Stp_ind_pow_rx<40) THEN
1360 ! Set MS Rx Frequency and Power Start Indicies
1370 OUTPUT Testset;"SET:CFDT:MS:RX:FREQ:STEP:STAR:IND ";Str_ind_freq_rx
1380 OUTPUT Testset;"SET:CFDT:MS:RX:POW:STEP:STAR:IND ";Str_ind_pow_rx
1390 PRINT "MS Rx Test Start Freq Index = ";Str_ind_freq_rx
1400 PRINT "MS Rx Test Start Power Index = ";Str_ind_pow_rx
1410 ELSE
1420 PRINT
1430 PRINT "Error-The number of freq steps or power steps Out of Range (>40)"
1440 PRINT
1450 PRINT "Program Stopped"
1460 STOP
1470 END IF
1480 !
1490 !*** Set MS Rx Freq/Power Values ***
1500 OUTPUT Testset;"SET:CFDT:MS:RX:FREQ:STEP ";Freq_rx$
1510 PRINT "MS Rx Test Freq Series = ";Freq_rx$
1520 OUTPUT Testset;"SET:CFDT:MS:RX:POW:STEP ";Pow_rx$
1530 PRINT "MS Rx Test Power Series = ";Pow_rx$
1540 PRINT
1550 !
1560 RETURN
1570 !
1580 Set_mstx_series: !
1590 !*******************************************************************
1600 ! Subroutine: Set up the MS Tx Freq/Power Series
1610 !*******************************************************************
1620 PRINT "*** Set MS Tx Freq/Power Series ***"
1630 Stp_ind_freq_tx=Str_ind_freq_tx+Num_freq_steps
1640 ! Compute Stop Index of Frequency steps
1650 Stp_ind_pow_tx=Str_ind_pow_tx+Num_pow_steps
1660 ! Compute Stop Index of Power steps
1670 !
1680 ! Check for MS Tx Test Freq/Power Indicies Out of Range
1690 IF (Stp_ind_freq_tx<40 AND Stp_ind_pow_tx<40) THEN
1700 ! Set MS Tx Frequency and Power Start Indicies
1710 OUTPUT Testset;"SET:CFDT:MS:TX:FREQ:STEP:STAR:IND ";Str_ind_freq_tx
1720 OUTPUT Testset;"SET:CFDT:MS:TX:POW:STEP:STAR:IND ";Str_ind_pow_tx
1730 PRINT "MS Tx Test Start Freq Index =";Str_ind_freq_tx
1740 PRINT "MS Tx Test Start Power Index =";Str_ind_pow_tx
1750 ELSE
1760 PRINT
1770 PRINT "Error-The number of freq steps or power steps Out of Range (>40)"
1780 PRINT
1790 PRINT "Program Stopped"
1800 STOP
1810 END IF
1820 !
1830 !*** Set MS Tx Freq/Power Values ***
1840 !
1850 OUTPUT Testset;"SET:CFDT:MS:TX:FREQ:STEP ";Freq_tx$
1860 PRINT "MS Tx Test Freq Series = ";Freq_tx$
1870 OUTPUT Testset;"SET:CFDT:MS:TX:POW:STEP ";Pow_tx$
1880 PRINT "MS Tx Test Power Series = ";Pow_tx$
1890 PRINT
1900 !
1910 RETURN
1920 !
1930 Check_ms_config: !
1940 !*******************************************************************
1950 ! Subroutine: Check UE's Configuration Matches Test Set's
1960 !*******************************************************************
1970 PRINT "************** NOTE *****************************************"
1980 PRINT "Make sure that your UE is placed into a test mode, and is properly"
1990 PRINT "configured to measure the MS RX Freq/Power series and transmit"
2000 PRINT "the MS TX Freq/Power series you've set in the test set."
2010 PRINT
2020 PRINT "Order your UE to transmit continuously at >20 dB below the power level"
2030 PRINT "of the first step in MS Tx Power Series"
2040 PRINT "*************************************************************"
2050 PRINT
2060 LINPUT "Press ENTER when finished",Keyboard$
2070 RETURN
2080 !
2090 Fdt_meas: !
2100 !*******************************************************************
2110 ! Subroutine: Perform FDT Measurement
2120 !*******************************************************************
2130 !
2140 OUTPUT Testset;"INIT:CFDT"
2150 !Arm the FDT measurement and start to build the MS Tx and Rx Freq/Power Series.
2160 OUTPUT Testset;"INIT:CFDT:ARMed?"
2170 !Queries that the MS Tx and Rx Freq/Power Series is successfully built
2180 !and the test set is ready for test.
2190 ENTER Testset;Meas_arm
2200 IF Meas_arm THEN
2210 PRINT "Command the UE to trigger the measurement (20 dB RF rise)..."
2220 PRINT
2230 !
2240 !***Obtain measurement results***
2250 OUTPUT Testset;"FETC:CFDT?"
2260 ENTER Testset;Integrity,Freq_step_cnt,Pow_step_cnt,Num_meas,Mstx_pow$
2270 !
2280 ELSE
2290 PRINT "The test set is not properly armed. Please check the MS Tx and"
2300 PRINT "Rx Freq/Power Series Setups."
2310 GOTO End_program
2320 END IF
2330 !
2340 PRINT "*** Print MS Tx Measurement Results ***"
2350 PRINT
2360 PRINT "Integrity = ";Integrity
2370 PRINT "Number of Freq Steps = ";Freq_step_cnt
2380 PRINT "Number of Power Steps = ";Pow_step_cnt
2390 PRINT "Total Number of Meas Results = ";Num_meas
2400 PRINT
2410 !
2420 !Convert ASCII Array to Real Array
2430 FOR N=1 TO Num_meas
2440 Dynamic_mkr=((N-1)*17)
2450 !Set up a marker that will jump to each comma in the ascii string
2460 Mstx_pow_res(N)=VAL(Mstx_pow$[Dynamic_mkr+1,Dynamic_mkr+16])
2470 !Convert ascii to a numeric value
2480 NEXT N
2490 !
2500 ! PRINT "MS Tx Power Results:"
2510 PRINT "Freq Step # Power Step # Meas Power[dBm/5 MHz]"
2520 PRINT
2530 FOR N_freq=0 TO Freq_step_cnt-1
2540 FOR N_pow=0 TO Pow_step_cnt-1
2550 PRINT N_freq+1," ",N_pow+1," ",Mstx_pow_res(N_freq*Pow_step_cnt+N_pow+1)
2560 NEXT N_pow
2570 PRINT
2580 NEXT N_freq
2590 !
2600 RETURN
2610 !
2620 End_program: !
2630 !*******************************************************************
2640 ! Subroutine: End of all testing clean up
2650 !*******************************************************************
2660 !
2670 OUTPUT Testset;"*RST"
2680 !Full preset test set
2690 DEALLOCATE Mstx_pow_res(*),Freq_rx$,Pow_rx$,Freq_tx$,Pow_tx$
2700 PRINT
2710 PRINT "End of Program"
2720 END
2730 !
2740 !**************************************************************************
2750 ! SUB-PROGRAM SECTION
2760 !**************************************************************************
2770 !
2780 Timeout: SUB Timeout ! Global timeout handler
2790 PRINT
2800 PRINT "Program timed out, check setup"
2810 CLEAR 7
2820 CLEAR Testset
2830 STOP
2840 SUBEND
2850 !
2860 !
The measurement results include an integrity indicator, the number of frequency steps (Freq_step_cnt), the number of power steps at each frequency (Pow_step_cnt), number of MS TX power steps measured (Num_meas should equal Freq_step_cnt * Pow_step_cnt), followed by Num_meas power results.
A sample output from this program example is shown below: