Home

File

image

Contents

1. 2 4 af Connector for Digital IO card Figure 10 Pin Assignments for Twisted Pair Cable 3 2 Collect raw IQ data from RSA3408A and Data correction The steps for retrieving raw IQ data from Option 5 of RSA3408A are the following 1 Setup environment described in 3 1 2 Enable Option 5 on RSA3408A see user manual 3 On external PC invoke sample program explained in 4 1 to capture data from RSA3408A 4 On external PC used in step 3 or other prepare of flatness correction file and calibration parameter file described in 4 2 1 5 On either external PC used in above step 3 or other invoke sample flatness correction program explained in 4 2 together with input file RAW IQ dat just created in previous step 3 See 4 2 6 corrected iq txt described in 4 2 2 will be created See 4 2 and Appendix D 4 0 Sample programs This application note has sample source programs to install the following four commands captureiq This command is used for data gathering from HPDI32A interface board and creates a raw IQ data file raw iq dat for data recording makecaldata This command creates three calibration files from an IQT file The calibration files are as follows 1 Amplitude flatness correction data file a raw flat dat 2 Phase flatness correction data file p raw flat dat 3 Calibration parameter file cal para txt The contents of these files can be received by using GPIB commands also See 3 1 make
2. pp while argc gt 2 amp amp argv 1 0 ON switch argv 1 1 case a ampFlatnessFile argv 2 break case p phaseFlatnessFile argv 2 break case cd calParameterFile argv 2 break default USAGE exit 1 argc 2 argv 2 if arge lt 2 USAGE exit 1 if fp fopen argv 1 rb NULL perror argv 1 exit 1 if n getFileHeader fp header lt 0 exit 1 if vfn getValidFrames header ValidFrames lt 0 exit 1 offs sizeof struct frameHeader st FRAME SIZE vfn if getCorrectionTable fp offs flatnessA flatnessP lt 0 exit 1 fclose fp 21 if writeFile calParameterFile header n 0 lt 0 exit 1 if writeFile ampFlatnessFile flatnessA sizeof int FLATNESS POINTS 1 lt 0 exit 1 if writeFile phaseFlatnessFile flatnessP sizeof int FLATNESS POINTS 1 lt 0 exit 1 int getFileHeader FILE fp char hdr int n char buf 10 if fread buf 1 1 fp 1 n buf 0 0 lt 1 n gt 9 goto err_header if fread buf 1 n fp n goto err_header buf n 0 if sscanf buf d amp n 1 n gt MAX HEADER SIZE goto err header if fread hdr n 1 fp 1 hdr n O return n err header fprintf stderr Illegal file header n return 1 int getValidFrames char hdr char str int len val len strlen str while hdr if strncmp hdr str l
3. White Paper Digital I Q Data Capture and Correction Abstract The RSA3408A Opt 05 provides real time digital and Q outputs on the RSA3408A Data of bandwidths up to 36 MHz span may be collected continuously at these ports This white paper explains the theory of operation of the internal acquisition memory and data correction methods of the RSA3408A and offers a method by which these corrections may be applied to data captured using an external PC 1 0 RSA3408A Internal Acquisition Storage and Data Correction Overview A brief description of the internal signal acquisition and correction process is provided as an introduction to the operations required when performing these functions on an external PC Detailed descriptions of the internal operation of the RSA3408A can be found in the RSA3408A User Manual P N 071161701 1 1 Internal Signal Acquisition The RSA3408A digitizes the incoming signal at an intermediate frequency of 76 MHz This data path is 36 MHz wide digitized at 102 4 MSamples sec with 14 bits resolution This data is then digitally downconverted to I and Q samples at 51 2 MSamples sec for both the and Q signals This information is then decimated to produce the desired span of analysis ranging from 36 MHz span to as narrow as 100 Hz This uncorrected data is then stored in the acquisition memory of the RSA3408A 1 2 Internal Post Acquisition Data Correction The data stored in the RSA3408A acquisition memory must
4. case cd calParameterFile argv 2 break case o outputFile argv 2 break default USAGE exit 1 24 int argc 2 argv 2 if argc gt 1 inputFile argv 1 if pn getCalibrationParameters calParameterFile params lt 0 exit 1 if getCorrectionTable ampFlatnessFile flatnessA flatnessExt a lt 0 exit 1 if getCorrectionTable phaseFlatnessFile flatnessP flatnessExt p 0 exit 1 if stat inputFile amp stbuf lt ON perror inputFile exit 1 fn stbuf st_size sizeof short 2 FRAME POINTS if fp fopen outputFile wb NULL perror outputFile exit 1 printf s d frames n outputFile fn n fn sizeof short 2 FRAME POINTS if n stbuf st size printf Last d points are truncated stbuf st size n sizeof short 2 if bpos searchParameter params Bins pn gt 0 sscanf params bpos 5 d amp frameHeader bins if writeFileHeader fp params pn fn 0 exit 1 if writelQData fp inputFile fn O exit 1 if writeFlatnessData fp flatnessA flatnessP amp flatnessExt 0 exit 1 fclose fp getCalibrationParameters char fname char pp int i c char hp FILE fp if fp fopen fname rb NULL perror fname return 1 for i 0 i lt MAX HEADER SIZE amp amp c getc fp EOF i fileHeader i c if c b EOF fprintf stderr s
5. sprintf buf 04d bytes fprintf fp d s strlen buf buf for i 0 i lt pn i fprintf fp s r n pp i return 0 int writelQData FILE wfp char fname int frmn int i rtv struct frameHeader st frmhdr struct iqBin st iqbuf FRAME POINTS FILE rfp if rfp fopen fname rb NULL perror fname return 1 rtv 0 for i 0 i lt frmn i if i frmn 1 frameHeader lastFrame 1 if fread iqbuf sizeof struct iqBin st FRAME POINTS rfp FRAME POINTS fprintf stderr s Data read error n fname rtv 1 break if fwrite amp frameHeader sizeof struct frameHeader st 1 wfp 1 fwrite iqbuf sizeof struct iqBin st FRAME POINTS wfp FRAME POINTS fprintf stderr s Data write error n outputFile rtv 1 break frameHeader ticks fclose rfp return rtv int writeFlatnessData FILE fp short ap short pp struct extendedCorrectionData_st extp int i struct apBin st apbuf FLATNESS POINTS for i 0 i lt FLATNESS POINTS Hat apbuf i a ap apbufli p pp frameHeader validA frameHeader validP 1 frameHeader validl frameHeader validQ 0 if fwrite amp frameHeader sizeof struct frameHeader st 1 fp 1 fwrite apbuf sizeof struct apBin_st FLATNESS POINTS fp FLATNESS POINTS fwrite 40000 1 5 fp 5 fwrite extp sizeof struct exendedCorrectionData st 1 fp 1 fpr
6. 100 Hz Figure 3 Relation of span data rate and data size For compensation of the raw IQ daa stream using the SW algorithm in this documentation a data file that has the following data structure is required The user should prepare their HW to capture raw IQ data into PC memory in accordance to the following structured data file Figure 4 A method for transferring raw IQ data into a PC memory is described in Section 3 The raw IQ file should be stored on the controller PC as RAW IQ DAT File contents IQ data to be converted in Voltage and to be corrected byte order of one Raw q data bit7 SE bit bit15 bit8 E T j ES Low byte High byte Raw q data 2byte Point data 1 Raw i data 2byte oT SO byte order of one Raw i data ee bit7 don bit bit15 DE bit8 l Ei Low byte High byte note H following little endian memory archtecture Raw q data 2byte Raw i data 2byte Point data xxxx Figure 4 data structure of whole Raw iq data 2 1 2 Flatness Correction Data Gain and Phase This data is used for compensating flatness errors in the uncorrected IQ data file and consists of gain and phase components The GPIB command used to retrieve the gain components of the flatness correction data is CALibration IQ CORRection MAGNitude The Data format of the response from the RSA3408A is shown in Figure 5 0 4102byte KAREA Fi
7. Too large file n fname return 1 hp fileHeader for i 0 i lt MAX PARAM CNT amp amp hp i ppli hp while hp gt hp if hp hp Mi 25 while hp amp amp hp lt hp fclose fp if i gt MAX_PARAM_CNT fprintf stderr s Too many header parameters n fname return 1 return i int getCorrectionTable char fname short fltp unsigned char exfp int i rtv fbuffFLATNESS POINTS FILE fp if fp fopen fname rb NULL perror fname return 1 rtv fread fbuf sizeof int FLATNESS POINTS fp fclose fp if rtv FLATNESS_POINTS fprintf stderr s Illegal flatness correction data fileln fname return 1 for i 0 i lt FLATNESS POINTS i fitp i fbuf i gt gt 8 amp 0xffff exfpli fbufli amp Oxff return 0 int searchParameter char pp char str int n int i len len strlen str for i 0 i lt n i if strncmp ppli str len 0 return i return 1 int writeFileHeader FILE fp char pp int pn int frmn int i vfpos bytes char vfbuf 128 buf 16 vfstr vfstr ValidFrames if vfpos searchParameter pp vfstr pn lt OX fprintf stderr Parameter s not found n vfstr return 1 sprintf vfbuf s d vfstr frmn pp vfpos vfbuf for i bytes 0 i lt pn i 26 bytes strlen pp i 2
8. FILE double double int fft int double double makeSineTable int double makeBitReverse int int main int argc char argv int n while argc gt 2 amp amp argv 1 0 switch argv 1 1 case a ampFlatnessFile argv 2 break case p phaseFlatnessFile argv 2 break 28 case cd calParameterFile argv 2 break case o outputFile argv 2 break case s iqSeparator argv 2 break default USAGE exit 1 argc 2 argv 2 if argc gt 1 inputFile argv 1 ifrreadCalParameters calParameterFile lt 0 exit 1 if readFlatnessData ampFlatnessFile phaseFlatnessFile flatnessl flatnessQ lt 0 exit 1 printf s gt s n inputFile outputFile if n flatnessOverlapProcess inputFile outputFile flatnessl flatnessQ lt 0 exit 1 printf d points n n int readCalParameters char fname if getCalParameterValue fname MaxInputLevel amp maxInputLevel lt 0 return 1 if getCalParameterValue fname LevelOffset amp levelOffset lt 0 return 1 if getCalParameterValue fname GainOffset amp gainOffset lt 0 return 1 if getCalParameterValue fname IOffset amp iOffset lt 0 return 1 if getCalParameterValue fname QOffset amp qOffset lt 0 return 1 return 0 int getCalParameterValue char fname char str double val int len char buf 128 FILE fp
9. Input output Input Raw IQ data from HPDI32A interface board Output file raw iq dat see 3 1 1 4 1 4 Description Captureiq command captures IQ data from HPDI32A interface board and saves the data into a raw IQ data file The raw IQ data file name is raw iq dat The command argument sampling points is an integer value and captureiq captures and saves specified points of IQ data If no argument is given captureiq captures 10G points data This command requires 1GB memory on PC as software FIFO buffer 4 2 Functional Description Makecaldata 4 2 1 Installation The following files are needed to install makecaldata command Put these files into your working folder Source file makecaldata c Appendix B Header file rtsa iqt h Appendix E The execution module makecaldata exe is created by the following command gt cl makecaldata c 4 2 2 Synopsys makecaldata IQT file 4 2 3 Input output Input file IQT format file Output files a raw flt dat p raw flt dat cal para txt see 3 1 2 and 3 1 3 4 2 4 Description Makecaldata command reads data for calibration from an IQT file and creates three calibration files The IQT file name should be specified by the command argument IQT file 4 3 Functional Description Makeiqt 4 3 1 Installation The following files are needed to install makeiqt command Put these files into your working folder Source file makeigt c Appendix C Header file rtsa iqt h Appendix E
10. 3 GND 48 NG ZA NC 49 NC 25 le NC 50 e IQ ENABLE 1 GND 26 GND 2 GND 27 EXT 10 3 00000000000000T8 CABLE D16 EXT 10 28 VW VV 49 CABLE D16 EXT 11 4 52 CABLE D17 EXT T en NXXX 51 CABLE D17 EXT_I2 kaia CABLE D18 EXT 12 53 CABLE D18 EXT e F 36 CABLE D19 EXT 13 31 4 III NA 55 GABLE D19 GND 7 GND 32 EXT M 8 EXT Ma gt e vw 3 GABLE D20 EXT 15 9 P0000000600000 1 2 CABLE D21 EXT 15 34 59 CABLE D21 EXT 16 1 8 bidi E CABLE D22 EXT 16 3 61 CABLE D22 EXT UT 1 CAVI 84 CABLE D23 EXT 17 36 SISI 63 CABLE D23 GND 12 GND 37 EXT 18 13 66 CABLE D24 EXT 18 bo 65 Gerd dea EIZ Ui E EXT 19 39 67 GABLE Das EXT_110 15 70 CABLE D26 EXT 110 40 69 CABLE D26 EXT 111 16 A 72 CABLE D27 EXT Dis 41 71 CABLE D27 GND 17 lt GND 42 EXT 112 18 74 CABLE D28 EXT 112 43 VK 73 CABLE D28 EXT 113 1 BNE CABLE_D29 EXT 113 44 75 CABLE D29 EXT 114 20 ex 78 CABLE D30 EXT 114 45 77 CABLE D30 EXT 115 21 lt d 80 CABLE D31 EXT 115 46 79 CABLE D31 GND 22 GND 47 GND 23 GND 48 EXT IQ DAV 24 EXT TQ DAV 49 EXT IQ CLK DD GABLE CELA 50 1 CABLE CLK Input connector of Digital IO card PCI64 HPDI32 60 40 les 79 33 39 BH HH 88 H H H H E HH s 42
11. HICH STATUS VALID HPDI32 CABLE COMMAND MODE FLOW CONTROL GSC SUCCESS return status StatusValidCount 0x0 if status setParameter HPDI32 TX STATUS VALID COUNT 0 0 l GSC SUCCESS return status StatusValidMirror Yes if status setParameter HPDI32 TX STATUS VALID MIRROR HPDI32 WHICH TX RX HPDI32 TX STATUS VALID MIRROR ENABLE GSC SUCCESS return status I Timeout 20sec status setParameter HPDI32 IO TIMEOUT HPDI32 WHICH TX RX 20 return status static U32 setParameter U32 arg1 U32 arg2 U32 arg3 U32 dummy return hpdi32_parm_config hpdiDevice arg1 arg2 arg3 amp dummy NULL 20 Appendix B makecaldata c Copyright C Tektronix include lt stdio h gt include rtsa_iqt h define USAGE fprintf stderr makecaldata a amp flatness file p phase flatness file c cal param file IQT file n char ampFlatnessFile a raw flat dat Il Flatness Correction data Amplitude char phaseFlatnessFile p raw flat dat Flatness Correction data Phase char calParameterFile cal para txt Calibration parameter int flatnessA FLATNESS POINTS int flatnessP FLATNESS POINTS int getFileHeader FILE char int getValidFrames char char int getCorrectionTable FILE int int int int writeFile char void int int main int argc char argv int n vfn offs char header MAX HEADER SIZE FILE
12. The execution module makeiqt exe is created by the following command gt cl makeigt c 4 3 2 Synopsys makeiqt 4 3 3 Input output Input files raw iq dat a_raw_flt dat p_raw_flt dat cal para txt Output file captured iqt 4 3 4 Description Makeiqt command reads IQ data file header information and flatness correction data from the raw IQ data file and the calibration files then creates IQT format file according to the data The IQT format file name is captured iqt 4 4 Functional Description Correctiq 4 4 1 Installation The following file is needed to install correctiq command Put this file into your working folder Source file correctiq c Appendix D The execution module correctiq exe is created by the following command gt cl correctiq c 4 4 2 Synopsys correctiq 4 4 3 Input output Input files raw iq dat a raw flt dat p raw flt dat cal para txt Output file corrected iq txt 4 4 4 Description Correctediq command reads IQ data and calibration data from the raw IQ data file and the calibration files corrects IQ data according to the calibration data converts the data format from binary to ASCII then writes the data into an ASCII IQ data file The method of data correction is described in 4 6 The ASCII IQ data file name is corrected iq txt 4 5 Data files 4 5 1 Raw IQ data file raw iq dat Raw IQ data file has a sequence of IQ data captured from HSDP32A interface which is described in 3 1 1 One poi
13. apture from the RSA3408A Option 05 Digital I O card PCI64 HPDI32A Cable twisted pair cable see 3 1 3 SW HPDI32 driver API Release 4 0 0 7 2004 12 29 vendor General Standards Corporation http www generalstandards com Note When RSA3408A option 5 operates at 36MHz span the rate of IQ data out become 204 8 Mbytes sec 16 bits X 2 X 51 2 Mbits sec Tektronix recommends to use 64 bits PCI interface 3 1 2 Installation 32 bit Parallel Digital I O Card The process to setup is the following 1 prepare an external PC running Windows 2 Install PCI64 HPDI32A DIO card into external PC 3 install HPDI32 driver in external PC 4 connect Option 5 on rear panel of RSA3408A to external PC via 32bit HPDI32A I F using the twisted pair cable see 3 1 3 3 1 3 Connecter on the rear of RSA3408A RSA3408A has two connecters for Digital IQ output on the rear panel one is for I out and the other one is for Q out The connecter specification is as following Pin assignment Rear view 25 24 2 d O000000000000000000000000 O000000000000000000000000 Al IN Connector P N 10250 1210VE Vender of connecter 3M corp The connection details between RSA3408A rear connecters and I F card are shown in Figure 2 Note Regarding the Both connecters for raw and Q data Pin1 and Pin26 should be connected to ground at the RSA3408A side Pin25 and Pin50 are clock output from RSA3408A 3 1 4 Twisted Pair Interface The ca
14. be corrected for errors caused by the frequency response group delay of the RF Correction is performed by application of the Flatness Correction Data followed by the Calibration Data These files are unique to each RSA3408A and are created during factory calibration These corrections are performed automatically each time the data is used to produce measurement results in the RSA and the process is not seen by the user of the instrument This is true even if the data has been stored to the hard drive 2 0 RSA3408A Option 05 External Storage and Data Correction Overview When external storage is used in conjunction with the Option 05 Digital IQ outputs the correction process normally performed by the RSA software must be performed externally A diagram of the hardware required and the data flow for external capture and correction is shown in Figure 1 below Antena IF Filer A Raw data i e LA dii ADC DDC Uncorrected iq Y de Converter ee data z d x lt SEH Raw data q Memory Windows PC Flatness Correction Data in binary format Calibration Parameter in Ascii stream Flatness Correction Data Calibration Parameter Environment prepared by user Figure 1 Hardware Wiring and Data Flow RSA3408A Option 05 Figure 1 shows that the Flatness Correction Data and Calibration Parameter files are collected from the RSA3408A via GPIB commands sent from the data collection PC Uncorrected Raw and Q sample
15. ble connecting the RSA3408A to the digital I O card can be either made by the user or purchased If you wish to produce the cable in house connection details are shown in Figure 10 Pin assignment for connecting to Digital IO card Digital IQ output connector on rear panel of RSA3408A 25 24 23 32 1 Connector for Q OUTPUT Connector for I OUTPUT EXT JQ CLK IQ ENABLE GND GND GND EXT_Q0 EXT Dio EXT Q1 EXT Q1 EXT Q2 5 22 CABLE D2 EXT 02 V 21 CABLE D2 EXT Q3 IAA CABLE D3 EXT_03 31 23 CABLE D3 GND 7 GND 32 EXT Q4 8 26 CABLE D4 EXT Din 33 25 CABLE D4 EXT Q5 9 28 CABLE D5 EXT Q5 el 27 CABLE D5 EXT Q6 1 Hagen 30 CABLE D6 EXT Q6 35 29 CABLE D s pro JI Ebi 3 ERIS E EXT_O7 36 31 CABLE D7 GND 12 GND 37 EXT Q8 13 op opp ADO 34 CABLE DE EXT Q8 38 _ WMO VY NX 33 GABLE D8 EXT Q9 14 M dudik B CABLE D9 EXT Q9 39 35 CABLE D9 EXT Q10 18 Etude 38 GABLE DIO EXT Q10 40 37 CABLE D10 EXT Q11 1 SAADAANAY dd CABLE D11 EXT Dis 41 SSS N 39 CABLE D11 GND 17 GND 42 EXT Q12 18 42 CABLE D12 EXT Q12 43 Vs 41 CABLE D12 EXT Q13 1 18 00000000000000 4 CABLE D13 EXT Q13 44 43 MET D13 EN GIE d DNINNNANN BB LE DIt EXT Q14 45 45 GABLE D14 EXT Q15 21 48 CABLE D15 EXT Q15 46 47 GABLE D15 GND 22 GND 47 GND 2
16. ection data is applied following an FFT of the amplitude scaled I and Q samples After the Flatness Correction data is applied an IFFT is performed resulting in scaled corrected I and Q data Details on the frequency domain processing of the flatness correction data are found in Appendix C and D Eet SS cal para txt ae a_raw_flt dat Ba al p_raw_flt dat Convert scale to voltage Convert data from AP to IQ Extend data length to 2048 F domain correction data Convert data format to ASCII nn corrected ig txt Time domain data Frequency domain data Figure 8 Corrections Applied in Time and Frequency Domains 3 0 An Application Example This section will demonstrate the collection of raw IQ files into an external PC and provides software See Appendix A implementing the described IQ correction process Using these techniques corrected data from the RSA3408A can be used by external data analysis software with confidence in the accuracy of the result 3 1 Setup Description The setup required for capture of raw IQ from the RSA3408A is shown in Figure 9 below Twisted Pair Cable HPDI32 I F HPDI32 driver Option 5 RTSA3408A HPDI32 API external PC Figure 9 Hardware and SW Diagram for Raw IQ Capture Windows OS 3 1 1 Preparation 32bit Parallel Digital I O Card Tektronix recommends the hardware and software described below for data c
17. en if sscanf hdr len d amp val 1 return val while hdr gt hdr while hdr amp amp hdr lt hdr fprintf stderr Parameter s was not found n str return 1 int getCorrectionTable FILE fp int offs int afp int pfp int i char buf 10 struct frameHeader st fhdr struct apBin st apbuf FRAME POINTS struct extendedCorrectionData st exbuf if fseek fp offs SEEK CUR 0 fread amp fhar sizeof struct frameHeader st 1 fp 1 22 int fread apbuf FRAME SIZE 1 fp 1 for i 0 i lt FRAME POINTS i afp i 1 lt lt 8 i pfp i 0 return 0 for i 0 i lt FRAME POINTS i afp i apbuf i a lt lt 8 amp Oxffffff00 pfp i apbuf i p lt lt 8 amp Oxffffff00 if fread buf 5 1 fp 1 strncmp buf 40000 5 0 fread amp exbuf sizeof struct extendedCorrectionData st 1 fp 1 return 0 for i 0 i lt FRAME POINTS i afp i exbuf a i amp Oxff pfp i exbuf p i amp Oxff return 1 writeFile char fname void buf int size int bin FILE fp if fp fopen fname bin wb w NULL perror fname return 1 if fwrite char buf size 1 fp 1 fprintf stderr s Data write error n fname fclose fp return 1 fclose fp return 0 23 Appendix C makeiqt c Copyright C Tektronix i
18. fs 2 i lt pos i fip i fqp i 0 0 fft TABLE SIZE fip fqp 31 void flatnessCompensation double ip double qp double fip double fqp int n int i double ix qx for i 0 i lt n i ix ip i qx qpli ip i fip ix fqp qx apli fip qx fqp ix fip fqp int readlQData FILE fp double ip double op int n int i short iqbuf 2 double scale scale sqrt pow 10 0 gainOffset maxInputLevel levelOffset 10 20 2 for i 0 i lt n i if fread iqbuf sizeof short 2 fp 2 break ip i iqbuf 1 iOffset scale apli igbuf 0 qOffset scale return i int writeAsciiData FILE fp double ip double qp int n int i for i 0 i lt n i fprintf fp e s eln ipli iqSeparator qp i return n I FFT define MAX_FFT_SIZE TABLE_SIZE void fft int n double x double y static double sintbl MAX EEI SIZE MAX_FFT_SIZE 4 static int bitrev MAX_FFT_SIZE last_n 0 double t s c dx dy int i j K ik h d k2 n 4 inverse if n lt OX I IFFT n n inverse 1 else 32 inverse 0 n4 n 4 if n last ni last n n makeSineTable n sintbl makeBitReverse n bitrev for i 0 i lt n i j bitrev i if i lt j 1 t xfi x i xf xb t t yfi yli yi yb t for k 1 k lt n k k2 h 0 k2 k k d
19. if fp fopen fname r NULL perror fname return 1 len strlen str while fgets buf 127 fp NULL if strncmp buf str len OX if sscanf buf len lg val 1 fclose fp return 0 29 int fprintf stderr s Parameter s was not found n fname str fclose fp return 1 readFlatnessData char afname char pfname double ip double qp int i val double amp phase FILE afp pfp if afp fopen afname rb NULL perror afname return 1 if pfp fopen pfname rb NULL perror pfname return 1 for i 0 i lt FLATNESS SIZE i if fread amp val sizeof int 1 afp 1 fclose afp fprintf stderr s Illegal flatness datan afname return 1 Il Calculation for converting dBm to Volatge amp 1 0 sqrt pow 10 0 val 128 0 256 0 10 0 if fread amp val sizeof int 1 pfp 1 fclose pfp fprintf stderr s Illegal flatness datan pfname return 1 Il Convert degree to radian about phase component phase val 32768 0 PI 180 0 Il calculate IQ value of Flatness Correction data ip i amp cos phase apli amp sin phase fclose afp fclose pfp return FLATNESS SIZE Flatness define TABLE_SIZE FLATNESS_SIZE 2 int flatnessOverlapProcess char rfname char wfname double fip double fqp int i s 2 s 4 83 4 n wn points doub
20. intf stderr s Data write error n outputFile return 1 return 0 27 Appendix D correctiq c Copyright C Tektronix include lt stdio h gt include lt math h gt include lt string h gt define FLATNESS_SIZE 1024 define PI 3 141592653589793 define USAGE fprintf stderr correctiq a amp flatness file p phase flatness file c cal param file o output file s IQ separator input file n char char char char char char double double double double double double double int int int int void void int int void void void ampFlatnessFile a raw flat dat Il Flatness Correction data Amplitude phaseFlatnessFile p raw flat dat Flatness Correction data Phase calParameterFile cal para txt Calibration parameter inputFile raw_iq dat Il Raw IQ data to be corrected outputFile corrected iq txt Corrected ASCII data igSeparator iOffset qOffset gainOffset maxInputLevel levelOffset flatnessI FLATNESS_ SIZE flatnessQ FLATNESS SIZE readFlatnessData char char double double readCalParameters char getCalParameterValue char char double flatnessOverlapProcess char char double double flatnessSetTable double double double double flatnessCompensation double double double double int readIQData FILE double double int writeAsciiData
21. iqt This command creates an IQT format file captured iqt from the raw IQ data file and the calibration files correctiq This command corrects IQ data in the raw IQ data file by using the calibration files and writes the corrected IQ data into an ASCII IQ data file corrected iq txt The relation between these commands and files is shown in Figure11 captureiq RSA3408A fre Ea T_T rr rr nra r a_raw_flt dat dedi XXX iqt P correctiq makecaldata cal_para txt IQ data Calibration files K phf 3 MO EN Calibration data Figure 11 Relation between commands and files Microsoft Visual C v6 0 is used to build execution modules of these commands from sample programs All execution modules are executed as DOS commands 4 1 Functional Description Captureiq 4 1 1 Installation The following files are needed to install captureiq command Put these files into your working folder Header files and library file are provided by General Standard Corporation Source file captureiq c Appendix A Header files gsc_common h gsc_pci9080 h gsc_pci9656 h hpdi32 api h Library file hpdi32 api lib The execution module captureiq exe is created by the following command gt cl captureiq c hpdi32 api lib 4 1 2 Synopsys captureiq sampling points One sampling data point is 4 bytes and one data sample data interval is depends on the RSA3408A SPAN setting 4 1 3
22. it 0 break default USAGE exit 1 argc 2 argv 2 if argc gt 1X if sscanf argv 1 lg amp samplePoints 1 USAGE exit 0 readBufSize readBufSize 16 16 if fifoBufSize lt MIN FIFO BYTES fifoBufSize MIN FIFO BYTES fifoBufSize fifoBytes 4 readBufSize 10 readBufSize 10 if writeBufSize lt 0 writeBufSize fifoBufSize 10 maxDistance fifoBufSize readBufSize samplePoints floor samplePoints wpoints samplePoints size fifoBufSize 4 printf FIFO buffer size d bytes n size if fifoBuffer int malloc size NULL fprintf stderr Error malloc d bytes n size exit 1 if sampleSeconds gt 0 0 samplePoints 1e12 printf g sec sampleSeconds else printf g samples samplePoints printf gt s n outputFile tsum 0 0 errorCount 0 readCycle writeCycle readPosition writePosition 0 readStatus READ WAIT if fd open outputFile OPEN MODE Oxff lt OX perror outputFile exit 1 if readThread CreateThread NULL 0 LPTHREAD_START_ROUTINE readData NULL 0 amp id NULL fprintf stderr Error CreateThread n exit 1 if SetThreadPriority readThread THREAD_PRIORITY_HIGHEST 0 fprintf stderr Error SetThreadPriority n while wpoints gt 1 0 wn wpoints gt double REPORT_POINTS REPORT POINTS int wpoints rtv writeData fd wn tsum spentTime if
23. izeDevice void int index U32 status U32 arg stat ret index 0 status hpdi32 api status amp stat amp arg HPDI32 API VERSION if status GSC SUCCESS stat GSC SUCCESS fprintf stderr API failed n return 1 if hpdi32_open U8 index amp hpdiDevice GSC_SUCCESS fprintf stderr Unable to access device d n index return 1 if setConfig GSC SUCCESS fprintf stderr Configuration error n return 1 return 0 int hpdi32ReadReset void HPDI32 RX ENABLE q YES hpdiDevice HPDI32 FIFO RESET RX YES hpdiDevice HPDI32 RX OVERRUN CLEAR hpdiDevice return 0 int hpdi32ReadData int bufp int points U32 bytes status xfer overrun ret bytes points 4 status hpdi32_read hpdiDevice bufp bytes amp xfer if status GSC SUCCESS amp amp bytes vier ret HPDI32 RX OVERRUN GET hpdiDevice amp overrun if ret GSC SUCCESS if overrun HPDI32 RX OVERRUN YES return points fprintf stderr Buffer overrun n else fprintf stderr Can not get overrun status n else if status GSC_WAIT_TIMEOUT fprintf stderr Read time out n else fprintf stderr Read error status d n status return 1 static U32 setConfig void U32 status AlmostEmpty 16 if status setParameter HPDI32 FIFO ALMOST LEVEL HPDI32 WHICH TX RX HPDI32 WHICH AE 16 GSC SUCCESS return status AlmostFull 16 if stat
24. le bufi TABLE SIZE bufq TABLE SIZE double flati TABLE SIZE flatq TABLE_SIZE FILE rfp wfp 30 void if rfp fopen rfname rb NULL perror rfname return 1 if wfp fopen wfname w NULL perror wfname fclose rfp return 1 flatnessSetTable fip fqp flati flatq s 2 TABLE_SIZE 2 S 4 TABLE SIZE 4 S3 4 s 4 3 for i 0 i lt s_4 i bufi i bufq i 0 0 points 0 while n readlQData rfp bufi s 4 bufq s 4 s3 4 gt ON for i s_4 n i lt TABLE SIZE i bufi i bufq i 0 0 fft TABLE SIZE bufi bufo flatnessCompensation bufi bufq flati flatq TABLE SIZE fft TABLE SIZE bufi bufq if n lt s 2 wn n else wn s_2 writeAsciiData wfp bufi s_4 bufq s_4 wn points wn if n lt s 2 break else fseek rfp s_2 sizeof short 2 SEEK CUR readlQData rfp bufi bufq s 4 fclose rfp fclose wfp if n lt 0 return 1 return points flatnessSetTable double ip double qp double fip double fqp int i pos fs_2 double mul fs_2 FLATNESS SIZE 2 mul double TABLE_SIZE FLATNESS SIZE for i 0 i lt FLATNESS SIZE i fip i ip mul fqp i qp mul fft FLATNESS_ SIZE fip fqp pos TABLE SIZE fs 2 memcpy fip pos fip fs_2 sizeof double fs 2 memopy fqp pos fqp fs 2 sizeof double fs 2 for i
25. ment parameters as text data which are described in 3 1 3 This file is created by makecaldata command otherwise the contents of this file can be gotten from the response of GPIB command Correctiq command converts raw IQ data to IQ values in voltage using some calibration parameters GainOffset MaxInputLevel LevelOffset IOffset QOffset The following formulas are applied for the conversion raw and Qraw are IQ values in raw IQ data file IQScale sqrt Power 10 GainOffset MaxInputLevel LevelOffset 10 20 2 I V Iraw IOffset IQScale Q V Qraw QOffset IQScale 4 5 4 Corrected ASCII IQ data file corrected iq txt Corrected ASCII IQ data file has a sequence of IQ data in ASCII format In this file one line has two real values which correspond to I and Q The two values are separated by comma as shown below 1 520849e 002 2 921454e 003 1 520110e 002 7 701263e 004 1 432840e 002 1 596774e 003 4 6 Details of frequency domain flatness correction process 1 lt needs to extend flatness correction data with 1024bins to 2048bins Following is the process of extension Flatness Correction IQ data F domain 1024 points d 1024 points IFFT wi T domain 512 512 DA LINZ 1024 d 2048points FFT Extended Flatness Correction IQ data F dornain 2048 Figure 13 Extension of flatness correction data 2 Compensating IQ data with N
26. n k2 for j 0 j lt k j c sintbl h n 4 S inverse sintbl h sintbl h for i j i lt n i k2 ik i k dx s y ik c x ik dy c y ik s x ik x ik x i dx x i dx y ik y i dy i y i dy h d if linverse X for i 0 i n i x i n vii n void makeSineTable int n double sintbl double c s dc ds t int in 2 n 4 n 8 n 2 n 2 n4 n 4 n 8 n 8 t sin Pl n dc 2 t t ds sqrt dc 2 dc t 2 dc c sintbl n 4 1 S sintbI 0 0 for i 1 i lt n 8 i X c dc dc t c s ds ds t s sintbl i s sintbl n 4 i c mo 8 0 sintbl n 8 sqrt 0 5 for i 0 i lt n_4 i sintbl n 2 i sintbl i for i 0 i lt n_2 n_4 i sintbl i n_2 sintbl i void makeBitReverse int n int bitrev int i j k n_2 n2 n 2 for i j 20 4 bitrev i j if i gt n break k n 2 while k lt j j k k 2 j k Appendix E rtsa iq h Copyright C Tektronix define FRAME_POINTS 1024 define FLATNESS_POINTS 1024 define FRAME_SIZE sizeof struct iqBin_st FRAME_POINTS define MAX_HEADER_SIZE 4096 struct frameHeader_st short dataShift short validA short validP short validl short validQ short bins short frameError short triggered short overLoad short lastFrame long ticks b struct apBin st shor
27. nclude lt stdio h gt include lt sys stat h gt include rtsa_iqt h define MAX_PARAM_CNT 128 define USAGE fprintf stderr makeigt a amp flatness file p phase flatness file c cal param file o otuput file raw IQT file n char inputFile raw iq dat Il Input raw IQ data file char ampFlatnessFile a raw flat dat Il Flatness Correction data Amplitude char phaseFlatnessFile p raw flat dat Flatness Correction data Phase char X calParameterFile cal para txt Calibration parameter char outputFile captured igt Output IQT file short flatnessA FLATNESS POINTS short flatnessP FLATNESS POINTS struct extendedCorrectionData st flatnessExt char fileHeader MAX HEADER SIZE struct frameHeader st frameHeader 0 0 0 1 1 1024 0 0 0 0 0 y int getCalibrationParameters char char int getCorrectionTable char short unsigned char int searchParameter char char int int writeFileHeader FILE char int int int writelQData FILE char int int writeFlatnessData FILE short short struct extendedCorrectionData st main int argc char argv int n pn fn bpos char header MAX HEADER SIZE params MAX_PARAM_CNT struct stat stbuf FILE fp while argc gt 2 amp amp argv 1 0 switch argv 1 1 X case a ampFlatnessFile argv 2 break case p phaseFlatnessFile argv 2 break
28. nt data in this file is composed by two short integers which correspond to and Q value so the size of a point data is 4 bytes If the number of points captured by cuptureiq command is N the size of raw IQ data file is 4N bytes A point data is read from HSDP32A interface as an integer 4 bytes which has both I and Q data and the byte order of the Windows PC is little endian So the byte order of IQ values in this file is shown in Figure12 Head of the file End of the file T_T gt Q low byte Q high byte I low byte I high byte One point data Figure 12 Byte order of IQ in raw IQ data file 4 5 2 Amplitude flatness correction data file a raw flt dat Amplitude flatness correction data file has 1024 integers 4096 bytes which are described in 3 1 2 A1 A2 A1024 This file is created by makecaldata command otherwise the contents of this file can be gotten from the response of GPIB command The byte order of an integer is little endian in this file Low byte first 4 5 2 Phase flatness correction data file p raw flt dat Phase flatness correction data file has 1024 integers 4096 bytes which are described in 3 1 2 P1 P2 P1024 This file is created by makecaldata command otherwise the contents of this file can be gotten from the response of GPIB command The byte order of an integer is little endian in this file Low byte first 4 5 3 Calibration parameter file cal para txt Calibration parameter file has measure
29. oints int n rtv double t t getTime if readStatus READ WAIT readStatus 0 rtv 0 while points gt OX n fifoBufSize writePosition if n gt writeBufSize n 7 writeBufSize if n gt points n points if readStatus READ_SUSPEND amp amp GET FIFO DISTANCE lt readBufSize ResumeThread readThread else while GET_FIFO_DISTANCE lt n if readStatus READ_STOP if GET_FIFO_DISTANCE lt ny rtv 1 goto loop end break if readStatus READ SUSPEND ResumeThread readThread Sleep 20 if write fd fifoBuffer writePosition n 4 lt OX perror Data write return 1 writePosition n if writePosition gt fifoBufSize writeCycle writePosition 0 points n loop_end spentTime getTime t if spentTime lt 1e 3 spentTime 1e 3 return rtv void printTime char msg double points double sec points 1e 6 printf s gM samples g sec gM sample sec FIFO d n msg points sec points sec int GET_FIFO_DISTANCE 100 0 fifoBufSize include lt sys types h gt include lt sys timeb h gt double getTime void struct timeb tbuf ftime amp tbuf return tbuf time tbuf millitm 1e 3 Functions for HPDI32A interface include hpdi32 api h static void hpdiDevice static U32 setConfig void static U32 setParameter U32 arg1 U32 arg2 U32 arg3 int hpdi32 Initial
30. points length framing Making one data block named frame as one data block in this case Assume IQ data to be corrected has N points length of itself making each data frame whole IQ data into n frames under the below condition 12 N 1024 n 1 m n m integer 0 lt m lt 1024 0 1024 2048 3072 GE n 1 1024 xn Framed Frame Frame2 SE n 1 v mz N samples Figure 14 Before filling up to 1024 points with 0 at last frame as a dummy data 3 Compensating IQ data with N points length padding with 0 data as a dummy 0 1024 2048 3072 P ad n 1 1024 xn Framed Frame Frame2 B i cat I 00 0 v m J 1024 m N samples Figure 15 After filling up to 1024 points with 0 at last frame as a dummy data 4 Compensating IQ data with N points length apply flatness correction data compensating each frame called Frame i where i will be 0 through n 1 Frame i 1 Frame i Frame i 1 Kand 812 Pers eari lt 2048 gt T domain note when i D all 512 samples are set 0 zero note when i n 1 all 512 samples are set 0 zero 2048points FFT F domain v Apply Extended Flatness Correction IQ data v 2048points FFT 512 51277 T domain Corrected Frame i 1024 Figure 16 Application of flatness correction data Appendix A captureiq c Copyright C Tektronix include lt windows h gt include l
31. rtv lt 0 break wpoints double wn if wpoints gt 1 0 printTime Write wn spentTime close fd wsum double fifoBufSize writeCycle writePosition printTime Total wsum tsum if errorCount gt ON for i 0 i lt 100 amp amp readStatus READ STOP i Sleep 10 printf Error d g sec error gM sample error n errorCount readTime errorCount wsum 1e 6 errorCount else printf No error n void readData void int bn pn rtv bufp double tO t1 bn 0 if hpdi32InitializeDevice lt 0 exit 1 readTime 0 0 while readStatus READ WAIT t0 getTime hpdi32ReadReset while samplePoints gt 0 if GET_FIFO_DISTANCE gt maxDistance printf FIFO full n while GET_FIFO_DISTANCE gt maxDistance Sleep 1 pn samplePoints gt double readBufSize readBufSize int samplePoints bufp fifoBuffer readPosition rtv hpdi32ReadData bufp pn if rtv lt ON if errorCount gt 10 break readTime getTime t0 readStatus READ_SUSPEND SuspendThread readThread readStatus 0 t0 getTime hpdi32ReadReset else readPosition pn if readPosition gt fifoBufSize readCycle readPosition 0 samplePoints pn if sampleSeconds gt 0 0 amp amp getTime t0 gt sampleSeconds break readTime getTime t0 readStatus READ_STOP ExitThread DWORD O int writeData int fd int p
32. s are collected into the PC memory via an interface cable and data collection card Applying the calibration and correction files to the raw IQ samples results in a corrected IQ file ready for further processing Each step of this process will now be considered in detail 2 1 IQ Data Structure and Correction Factors in Detail 2 1 1 Raw IQ Data Raw uncorrected IQ data points are sent from the connector on the rear panel of the RSA3408A 16 bit LVDS signals are used for both and Q Although the A D converters are 14 bits in resolution up to 16 bits of data may be available on and Q as a result of span dependent decimation Since these signals are the same as data tapped at the output from the DDC of the RSA3408A this is time domain data The data rate of the and Q outputs is defined by the span setting of the RSA3408A Data is sent from the option 05 outputs as shown in Figure 2 Type signed integer 16bit ee one Q data sample Figure 2 Option 05 Output Data Format one data sample Figure 3 shows the relationship of span setting data rate and data size of the captured signals There is no limit to the data size that may be sent by these outputs but memory sizes will limit the practical length of the collection time Data size Data size Span Data rate for 10sec for 1 min 36 MHz 20 MHz 10 MHz 5 MHz 2 MHz 1 MHz 500 kHz 200 kHz 100 kHz 50 kHz 20kHz 255ksps e 098MB 586MB 10 kHz 5 kHz 2 kHz 1 kHz 500 Hz 200 Hz
33. se n 2 1 3 Calibration Parameter file A calibration parameter file is generated in the RSA3408A during setup of the instrument for data acquisition The calibration parameter file corrections must be performed on externally stored raw IQ files These parameters are i GainOffset dB gain offset for amplitude value ii MaxInputLevel dBm reference level set by RSA3408A when acquiring data iii LevelOffset dB level offset set by RSA3408A when acquiring data iv IOffset Offset value of I data v QOffset Offset value of Q data All of the parameters listed above can be retrieved via GPIB command as shown below Figure 7 GPIB Command CALibration IQ HEADer Data format of response from RSA3408A note data is in ASCII code Type RSA3408AIQT FrameReverse Otf FramePadding Before Band RF1 MemoryMode Zoom FFTPoints 1024 Bins 721 MaxInputLevel 0 LevelOffset 0 CenterFrequency 1 5G FrequencyOffset 0 Span 36M BlockSize 2 ValidFrames 3730 FramePeriod 20u UnitPeriod 20u FrameLength 20u DateTime 2005 01 24 9 14 56 42 GainOffset 82 2601 145991602 MultiFrames 1 MultiAddr 0 IOffset 0 0361328125 QOffset 0 01800537109375 GO Figure 7 Response of GPIB command CALibration IQ HEADer 2 2 Calibration and Corrections Time and Frequency Domains As is seen in Figure 8 Below the calibration factors amplitude scaling are applied to the raw time domain I and Q samples The frequency domain flatness corr
34. t a short p E struct iqBin st short q short i b struct extendedCorrectionData st unsigned char a 1024 unsigned char p 1024 E 35 TEKTRONIX ITS RESELLERS OR OTHERS FROM WHOM TEKTRONIX MAY HAVE OBTAINED A LICENSING RIGHT DO NOT WARRANT THE PROGRAM OR OPERATION THEREOF DO NOT ASSUME ANY LIABILITY WITH RESPECT TO ITS USE AND DO NOT UNDERTAKE TO FURNISH ANY SUPPORT OR INFORMATION RELATING THERETO Note This white paper represents the sample IQ data capturing system using sample software The sample software is made for the capturing system represented in this white paper and customers and user may use these samples software with no charge and with no support Copyright 2006 Tektronix All rights reserved Tektronix products are covered by U S and foreign patents issued and pending TEKTRONIX and TEK are registered trademarks of Tektronix Inc All other trade names referenced are the service marks trademarks or registered I kt trademarks of their respective companies 08 06 DV WOW 37W 19297 1 e ronix 36
35. t stdio h gt include lt fcntl h gt define MIN_FIFO_BYTES 64000000 define REPORT_POINTS 256000000 define OPEN MODE O WRONLY O_TRUNC O_CREAT O BINARY O_SEQUENTIAL define READ_WAIT 1 define READ_SUSPEND 2 define READ STOP 3 define USAGE fprintf stderr captureiq f FIFO size bytes s sample points t sample time sec output file n define GET_FIFO_DISTANCE fifoBufSize readCycle writeCycle readPosition writePosition char outputFile raw_iq dat int fifoBytes 1000000000 double samplePoints 10e9 double sampleSeconds 0 0 int fifoBuffer int readBufSize 48000 int writeBufSize 0 int fifoBufSize int readCycle int readPosition int writeCycle int writePosition int maxDistance int readStatus HANDLE readThread int errorCount double spentTime double readTime int hpdi32 InitializeDevice void int hpdi32ReadReset void int hpdi32ReadData int int void readData void int writeData int int void printTime char double double double getTime void main int argc char argv int i size wn id fd rtv char cp double wpoints tsum wsum floor while argc gt 2 amp amp argv 1 0 switch argv 1 1 case f if sscanf argv 2 d amp fifoBytes 1 USAGE exit 0 break case o outputFile argv 1 break case t if sscanf argv 2 lg amp sampleSeconds 1 USAGE ex
36. us setParameter HPDI32 FIFO ALMOST LEVEL HPDI32 WHICH TX RX HPDI32 WHICH AF 16 GSC SUCCESS return status IIDataSize 32 if status setParameter HPDI32 IO DATA SIZE HPDI32 WHICH TX RX HPDI32 IO DATA SIZE 32 BITS GSC SUCCESS return status FrameValid FlowControl if status setParameter HPDI32 CABLE COMMAND MODE HPDI32 WHICH FRAME VALID HPDI32 CABLE COMMAND MODE FLOW CONTROL GSC SUCCESS return status IILineValid FlowControl if status setParameter HPDI32 CABLE COMMAND MODE HPDI32 WHICH LINE VALID HPDI32 CABLE COMMAND MODE FLOW CONTROL GSC SUCCESS return status LineValidOffCount 0x0 if status setParameter HPDI32 TX LINE VALID OFF COUNT 0 0 l GSC SUCCESS return status LineValidOnCount 0x0 if status setParameter HPDI32_TX_LINE_VALID_ON_COUNT 0 0 l GSC SUCCESS return status Mode DMDMA if status setParameter HPDI32 IO MODE HPDI32 WHICH TX RX HPDI32 IO MODE DMDMA GSC SUCCESS return status RxEnabled In if status setParameter HPDI32 CABLE COMMAND MODE HPDI32 WHICH RX ENABLED HPDI32 CABLE COMMAND MODE GPIO IN GSC SUCCESS return status RxReady In if status setParameter HPDI32_CABLE_COMMAND_MODE HPDI32_WHICH_RX_READY_ HPDI32_CABLE_COMMAND_MODE_GPIO_IN GSC_SUCCESS return status StatusValid FlowControl if status setParameter HPDI32 CABLE COMMAND MODE HPDI32 W
37. xed Ascii string 6bytes A1 A2 A3 A1024 GAin components type integer size dbyte for each 4096bytes for whole 1024 data unit dBm Figure 5 data format of Gain components Similarly the command for retrieving phase correction data is CALibration IQ CORRection PHASe The Data format of the response from the RSA3408A is shown in Figure 6 4102byte 0 TT Reese S Fixed Ascii string 6bytes Pi ESE P1024 Phase components type integer size dbyte for each 4096bytes for whole 1024 data unit degree Figure 6 data format of Phase components The Gain and Phase components correspond to a frequency bin and both are expressed in the frequency domain The formulas for producing Flatness Correction data from the files retrieved from the RSA3408A as I and Q in floating point is shown below 1 a pair of Gain and Phase corresponds to a frequency bin 2 data under frequency domain 3 formula to see Flatness Correction Data just retrieved from RSA3408A as IQ factor counted by floating point d 10 An 32768 x 10 An A1 A2 A1024 As in Fig 5 Phase n radian Pn 32768 0 PI 180 Pn P1 P2 P1024 As in Fig 6 Amplitude n Therefore the formula to provide IQ values of the Flatness Correction table from Amplitude and Phase is as below Flatness Correction data In 1 0 Amplitude n cos Phase n Flatness Correction data Qn 1 0 Amplitude n sin Pha

Download Pdf Manuals

image

Related Search

File filezilla files file explorer filevine login file manager filecr filevine filehippo file converter files folder file transfer filezilla download filemaker filet mignon file compressor file sharing file explorer options file associations settings files app filezilla server filehorse file server filezilla client file explorer windows 10 file explorer this pc

Related Contents

Apstel Visual Dialplan User Manual  Sun ZFS Storage 7120 7320 and 7420 Appliance Customer Service  TAFCO WINDOWS NU2-210S-I Installation Guide  InLine 76133Y networking cable  Braided Sheath Cutter    MooreCo 27679  

Copyright © All rights reserved.
Failed to retrieve file