
Simulatore di segnali GPS definito via software
GPS-SDR-SIM genera flussi di dati del segnale in banda base GPS, che possono essere convertiti in RF utilizzando piattaforme software-defined radio (SDR), come ADALM-Pluto, bladeRF, HackRF e USRP.
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim
Per utilizzare file di movimento utente con più di 30000 campioni (a 10Hz), la variabile USER_MOTION_SIZE
può essere impostata al tempo massimo del file di movimento utente in secondi. È consigliabile farlo
tramite make in modo che gps-sdr-bin possa aggiornare la dimensione quando necessario. es.:
$ make USER_MOTION_SIZE=4000
Questa variabile può anche essere impostata quando si compila direttamente con GCC:
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=4000
Una traiettoria definita dall'utente può essere specificata in un file CSV, che contiene le posizioni dell'utente nel sistema ECEF (Earth-Centered Earth-Fixed), oppure in uno stream NMEA GGA. La frequenza di campionamento del movimento utente deve essere 10Hz. L'utente può anche assegnare una posizione statica direttamente tramite la riga di comando.
L'utente specifica la costellazione satellitare GPS tramite un file di effemeridi di trasmissione GPS. Il file giornaliero di effemeridi di trasmissione GPS (brdc) è una fusione dei singoli file di navigazione del sito in uno solo. L'archivio per il file giornaliero può essere scaricato da: https://cddis.nasa.gov/archive/gnss/data/daily/. L'accesso a questo sito richiede la registrazione, che è gratuita.
Questi file vengono quindi utilizzati per generare lo pseudorange e il Doppler simulati per i satelliti GPS in vista. Questi dati di intervallo simulati vengono poi utilizzati per generare i campioni I/Q digitalizzati per il segnale GPS.
L'interfaccia a riga di comando di bladeRF e ADALM-Pluto richiede coppie I/Q memorizzate come interi a 16 bit con segno, mentre hackrf_transfer e gps-sdr-sim-uhd.py supportano byte con segno.
HackRF, bladeRF e ADALM-Pluto possono accettare la frequenza di campionamento predefinita di 2.6MHz, mentre USRP2 richiede un decimatore intero pari di 100 MHz, cioè 2.5MHz.
Il tempo di inizio della simulazione può essere specificato se il corrispondente set di effemeridi è disponibile. Altrimenti viene selezionato il primo tempo di effemeride nel file di navigazione RINEX.
La durata massima della simulazione è definita da USER_MOTION_SIZE per evitare che il file di output diventi troppo grande.
La dimensione del file di output può essere ridotta utilizzando l'opzione "-b 1" per memorizzare quattro campioni I/Q a 1 bit in un singolo byte. È possibile utilizzare bladeplayer per bladeRF per riprodurre il file compresso.
Usage: gps-sdr-sim [options]
Options:
-e <gps_nav> RINEX navigation file for GPS ephemerides (required)
-u <user_motion> User motion file in ECEF x, y, z format (dynamic mode)
-x <user_motion> User motion file in lat, lon, height format (dynamic mode)
-g <nmea_gga> NMEA GGA stream (dynamic mode)
-c <location> ECEF X,Y,Z in meters (static mode) e.g. 3967283.15,1022538.18,4872414.48
-l <location> Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100
-L <wnslf,dn,dtslf> User leap future event in GPS week number, day number, next leap second e.g. 2347,3,19
-t <date,time> Scenario start time YYYY/MM/DD,hh:mm:ss
-T <date,time> Overwrite TOC and TOE to scenario start time
-d <duration> Duration [sec] (dynamic mode max: 300 static mode max: 86400)
-o <output> I/Q sampling data file (default: gpssim.bin ; use - for stdout)
-s <frequency> Sampling frequency [Hz] (default: 2600000)
-b <iq_bits> I/Q data format [1/8/16] (default: 16)
-i Disable ionospheric delay for spacecraft scenario
-p [fixed_gain] Disable path loss and hold power level constant
-v Show details about simulated channels
Il movimento utente può essere specificato in modalità dinamica o statica:
> gps-sdr-sim -e brdc3540.14n -u circle.csv
> gps-sdr-sim -e brdc3540.14n -x circle_llh.csv
> gps-sdr-sim -e brdc3540.14n -g triumphv3.txt
> gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100
La porta TX di una particolare piattaforma SDR è collegata al ricevitore GPS in test tramite un blocco DC e un attenuatore fisso di 50-60dB.
Il file del segnale GPS simulato, denominato "gpssim.bin", può essere caricato nel bladeRF per la riproduzione come mostrato di seguito:
set frequency 1575.42M
set samplerate 2.6M
set bandwidth 2.5M
set txvga1 -25
cal lms
cal dc tx
tx config file=gpssim.bin format=bin
tx start
Puoi anche eseguire questi comandi tramite l'opzione script di bladeRF-cli come di seguito:
> bladeRF-cli -s bladerf.script
I dati di output devono essere campioni I/Q con segno a 8 bit.
> gps-sdr-sim -e brdc0010.22n -b 8
Puoi utilizzare lo strumento hackrf_transfer nel software host HackRF.
> hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0
> gps-sdr-sim-uhd.py -t gpssim.bin -s 2500000 -x 0
Puoi anche utilizzare lo strumento tx_samples_from_file incluso negli esempi UHD:
> tx_samples_from_file --file gpssim.bin --type short --rate 2500000 --freq 1575420000 --gain 0
> limeplayer -s 1000000 -b 1 -d 2047 -g 0.1 < ../circle.1b.1M.bin
Il dispositivo ADALM-Pluto deve avere l'interfaccia di rete attiva e funzionante ed essere accessibile tramite "pluto.local" per impostazione predefinita.
Impostazioni predefinite:
> plutoplayer -t gpssim.bin
Imposta l'attenuazione TX:
> plutoplayer -t gpssim.bin -a -30.0
Predefinito -20.0dB. Intervallo applicabile da 0.0dB a -80.0dB con passi di 0.25dB.
Imposta la larghezza di banda RF:
> plutoplayer -t gpssim.bin -b 3.0
Predefinito 3.0MHz. Intervallo applicabile da 1.0MHz a 5.0MHz.
Copyright © 2015-2025 Takuji Ebinuma
Distribuito sotto la Licenza MIT.