10    !***************************************************************

20    !

30    ! Comprehensive Example Program

40    ! 8960 W-CDMA FDD Test Mode (E1963A)

50    ! (Rev. 09/13/01)

60    !

70    ! This is a program to demonstrate the use of the 8960

80    ! with E1963A W-CDMA TA testing a FDD W-CDMA UE in FDD test mode

90    !

100   !***************************************************************

110   !

120   COM /Address/ INTEGER Testset

130   Testset=714

140   ON TIMEOUT 7,20 GOSUB Timeout

150   Rf_level=-106.7

160   CLEAR SCREEN

170   !

180   !***************************************************************

190   ! Step 1: Set Up the Test Set

200   !***************************************************************

210   !

220   !***************************************************************

230   ! Initialize the Test Set

240   !***************************************************************

250   ! Fully preset the test set

260   OUTPUT Testset;"*RST"

270   ! Clear the error queue

280   OUTPUT Testset;"*CLS"

290   !***************************************************************

300   ! Set Up General Operating Conditions

310   !***************************************************************

320   ! Turn debugger on

330   OUTPUT Testset;"SYST:COMM:GPIB:DEB ON"

340   ! Set operating mode to FDD Test Mode

350   OUTPUT Testset;"CALL:OPER:MODE FDDT"

360   ! Set amplitude offsets

370   OUTPUT Testset;"SYST:CORR:FREQ 800MHZ,900MHZ,1900MHZ,2000MHZ"

380   OUTPUT Testset;"SYST:CORR:SGA -0.7,-0.8,-1.0,-1.1"

390   !

400   !***************************************************************

410   ! Step 2: Configure Test Set and Mobile Station Parameters

420   !***************************************************************

430   !

440   !***************************************************************

450   ! Set Up the Downlink

460   !***************************************************************

470   ! Set downlink power

480   OUTPUT Testset;"CALL:POW ";Rf_level

490   ! Set downlink frequency

500   OUTPUT Testset;"CALL:CONT:DOWN:FREQ:AUTO OFF"

510   OUTPUT Testset;"CALL:RFG:FREQ 2.0 GHZ"

520   ! Set downlink primary scrambling code

530   OUTPUT Testset;"CALL:SCOD:PRIM 1"

540   ! Set up DPCH

550   OUTPUT Testset;"CALL:DPCH:TYP RMC12"

560   OUTPUT Testset;"CALL:DPCH:RMC12:CCOD CODE9"

570   OUTPUT Testset;"CALL:FDDT:DPCH -10.3"

580   OUTPUT Testset;"CALL:DTCH:DATA PRBS15"

590   ! Set up CPICH

600   OUTPUT Testset;"CALL:FDDT:CPIC -3.3"

610   ! Set up P-CCPCH

620   OUTPUT Testset;"CALL:FDDT:CCPC:PRIM -5.35"

630   ! Set up PICH

640   OUTPUT Testset;"CALL:PICH:CCOD CODE16"

650   OUTPUT Testset;"CALL:FDDT:PICH -8.35"

660   ! Set up AWGN

670   OUTPUT Testset;"CALL:AWGN:POW:STAT OFF"

680   !***************************************************************

690   ! Set Up the Uplink

700   !***************************************************************

710   ! Set power control bits to all up to force UE to max power

720   OUTPUT Testset;"CALL:FDDT:CLPC:UPL:MODE UP"

730   ! Set expected uplink power

740   OUTPUT Testset;"RFAN:CONT:POW:AUTO OFF"

750   OUTPUT Testset;"RFAN:MAN:POW:FDD 0"

760   ! Set expected uplink frequency and measurement frequency

770   OUTPUT Testset;"RFAN:CONT:UPL:FREQ:AUTO OFF"

780   OUTPUT Testset;"RFAN:MAN:UPL:FREQ 1.9 GHZ"

790   OUTPUT Testset;"RFAN:CONT:MEAS:FREQ:AUTO OFF"

800   OUTPUT Testset;"RFAN:MAN:MEAS:FREQ 1.9 GHZ"

810   ! Set expected uplink primary scrambling code

820   OUTPUT Testset;"CALL:UPL:DPCH:SCOD 0"

830   !

840   !***************************************************************

850   ! Step 3: Set Measurement Parameters

860   !***************************************************************

870   !

880   ! Set all measurement triggers to single

890   OUTPUT Testset;"SET:CONT:OFF"

900   ! Set up thermal power

910   OUTPUT Testset;"SET:WTP:TIM 3;COUN 1"

920   ! Set up channel power

930   OUTPUT Testset;"SET:WCP:TIM 3;COUN 1;TRIG:SOUR IMM"

940   OUTPUT Testset;"SET:WCP:INT:TIME 10 MS"

950   ! Set up waveform quality

960   OUTPUT Testset;"SET:WWQ:TIM 3;COUN 1;TSL 1"

970   ! Set up ACLR

980   OUTPUT Testset;"SET:WACL:TIM 3;COUN 1;TRIG:SOUR IMM"

990   ! Set up Loopback BER

1000  OUTPUT Testset;"SET:WBER:TIM 10;COUN 15000"

1010  !

1020  !***************************************************************

1030  ! Step 4: Make Connection

1040  !***************************************************************

1050  !

1060  PRINT "Configure UE for 12.2k RMC Now."

1070  PRINT

1080  PRINT "UE Synchronization required for Waveform Quality."

1090  PRINT "UE loopback Mode 1 required for loopback BER."

1100  PRINT

1110  PRINT "8960 DL is 2.0 GHz"

1120  PRINT "8960 UL Expected Frequency: 1.9 GHz"

1130  PRINT "8960 UL Expected Power: 0 dBm"

1140  PRINT "8960 UL Expected Primary Scrambling Code: 0"

1150  PRINT

1160  PRINT "When UE is configured and transmitting, press 'F2'."

1170  PAUSE

1180  !

1190  !***************************************************************

1200  ! Step 5: INITiate and FETCh Measurements

1210  !***************************************************************

1220  !

1230  CLEAR SCREEN

1240  PRINT "Test Results for UL Frequency 1.9 GHz:"

1250  PRINT

1260  !

1270  FOR I=1 TO 2

1280  ! INITiate a set of concurrent measurements

1290    OUTPUT Testset;"INIT:WTP;WWQ;WACL;WBER"

1300  ! FETCh the measurement results (using a subroutine)

1310    Fetch_results

1320    IF I=1 THEN

1330      PRINT

1340      PRINT "1.9 GHz Testing Complete."

1350  !

1360  !***************************************************************

1370  ! Step 6: Reconfigure Test Set and Mobile Station Connection

1380  !***************************************************************

1390  !

1400      PRINT

1410      PRINT "Change UE UL Frequency to 1.850 GHz."

1420      PRINT

1430      PRINT "UE Synchronization required for Waveform Quality."

1440      PRINT "UE loopback Mode 1 required for loopback BER."

1450      PRINT

1460      PRINT "When UE is configured and transmitting, press 'F2'."

1470      PAUSE

1480  ! Change expected uplink frequency

1490      OUTPUT Testset;"RFAN:MAN:MEAS:FREQ 1.85 GHZ"

1500      OUTPUT Testset;"RFAN:MAN:UPL:FREQ 1.85 GHZ"

1510      PRINT

1520      PRINT "Test Results for UL Frequency 1.85 GHz:"

1530    ELSE

1540      PRINT

1550      PRINT "1.85 GHz Testing Complete."

1560    END IF

1570  NEXT I

1580  !

1590  !****************************************************************

1600  ! Step 7: End the Connection

1610  !****************************************************************

1620  !

1630  PRINT "Testing complete, end UE transmission."

1640  ! Partially preset the test set

1650  OUTPUT Testset;"SYST:PRES3"

1660  !

1670  !****************************************************************

1680  !

1690  STOP

1700 Timeout:  !Program only comes here on 20 second timeout

1710  PRINT "Program timeout."

1720  END

1730  !

1740  !*****************************************************************

1750  ! Subroutine Section

1760  !*****************************************************************

1770  !

1780  SUB Fetch_results

1790    REPEAT

1800  ! Determine if any measurements are done

1810      OUTPUT 714;"INIT:DONE?"

1820      ENTER 714;Measdone$

1830      SELECT Measdone$

1840      CASE "WTP"

1850  ! FETCh measurement result

1860        OUTPUT 714;"FETC:WTP:INT?;POW?"

1870        ENTER 714;Integrity,Power

1880  ! Verify measurement result is valid  

1890        IF Integrity=0 THEN

1900  ! For valid result, print result to screen (using a subroutine)

1910          Print_results(Measdone$,Power)

1920        ELSE

1930  ! For invalid result, invoke error handler (using a subroutine)

1940          Meas_error(Measdone$,Integrity)

1950        END IF

1960      CASE "WCP"

1970        OUTPUT 714;"FETC:WCP:INT?;POW?"

1980        ENTER 714;Integrity,Power

1990        IF Integrity=0 THEN

2000          Print_results(Measdone$,Power)

2010        ELSE

2020          Meas_error(Measdone$,Integrity)

2030        END IF

2040      CASE "WWQ"

2050        OUTPUT 714;"FETC:WWQ?"

2060        ENTER 714;Integrity,Evm,Ferr,Ooff,Perr,Merr

2070        IF Integrity=0 THEN

2080          Print_results(Measdone$,Evm,Ferr,Ooff,Perr,Merr)

2090        ELSE

2100          Meas_error(Measdone$,Integrity)

2110        END IF

2120      CASE "WACL"

2130        OUTPUT 714;"FETC:WACL:INT?;AVER?"

2140        ENTER 714;Integrity,Negfive,Posfive,Negten,Posten

2150        IF Integrity=0 THEN

2160          Print_results(Measdone$,Negfive,Posfive,Negten,Posten)

2170        ELSE

2180          Meas_error(Measdone$,Integrity)

2190        END IF

2200      CASE "WBER"

2210        OUTPUT 714;"FETC:WBER?;WBER:INT?"

2220        ENTER 714;Ber,Integrity

2230        IF Integrity=0 THEN

2240          Print_results(Measdone$,Ber)

2250        ELSE

2260          Meas_error(Measdone$,Integrity)

2270        END IF

2280      END SELECT

2290  ! Exit loop when all measurements are complete

2300    UNTIL Measdone$="NONE"

2310  SUBEND

2320  !

2330  SUB Print_results(Meas_name$,Res1,OPTIONAL Res2,Res3,Res4,Res5,Res6)

2340    SELECT Meas_name$

2350    CASE "WTP"

2360      PRINT USING "5X,""Thermal Power:"",9X,M2D.2D,"" dBm""";Res1

2370    CASE "WWQ"

2380      PRINT USING "5X,""Max EVM:"",15X,M2D.2D,"" %""";Res1

2390      PRINT USING "5X,""Worst Freq Error:"",5X,M3D.2D,"" Hz""";Res2

2400      PRINT USING "5X,""Max Origin Offset:"",5X,M2D.2D,"" dB""";Res3

2410      PRINT USING "5X,""Max Phase Error:"",7X,M2D.2D,"" Deg""";Res4

2420      PRINT USING "5X,""Max Mag. Error:"",8X,M2D.2D,"" %""";Res5

2430    CASE "WACL"

2440      PRINT USING "5X,""ACLR -5 MHz Offset:"",4X,M2D.2D,"" dBc""";Res1

2450      PRINT USING "5X,""ACLR +5 MHz Offset:"",4X,M2D.2D,"" dBc""";Res2

2460      PRINT USING "5X,""ACLR -10 MHz Offset:"",3X,M2D.2D,"" dBc""";Res3

2470      PRINT USING "5X,""ACLR +10 MHz Offset:"",3X,M2D.2D,"" dBc""";Res4

2480    CASE "WCP"

2490      PRINT USING "5X,""Channel Power:"",9X,M2D.2D,"" dBm""";Res1

2500    CASE "WBER"

2510      PRINT USING "5X,""Loopback BER:"",5X,M3D.2D,"" %""";Res1

2520    END SELECT

2530  SUBEND

2540  !

2550  SUB Meas_error(Measdone$,Integrity)

2560    SELECT Integrity

2570    CASE 2

2580      Err$=" Meas Timeout"

2590    CASE 5

2600      Err$=" Over Range"

2610    CASE 6

2620      Err$=" Under Range"

2630    CASE 17

2640      Err$=" Cannot Correlate"

2650    CASE 19

2660      Err$=" Temp Drift"

2670    CASE ELSE

2680      Err$=""

2690    END SELECT

2700    PRINT Measdone$;" Integrity is";Integrity;Err$

2710  SUBEND