
Softwaredefinierter GPS-Signalsimulator
GPS-SDR-SIM erzeugt GPS-Basisband-Signaldatenströme, die mit Software Defined Radio (SDR)-Plattformen wie ADALM-Pluto, bladeRF, HackRF und USRP in HF umgewandelt werden können.
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim
Um Benutzerbewegungsdateien mit mehr als 30000 Samples (bei 10 Hz) verwenden zu können, kann die Variable USER_MOTION_SIZE auf die maximale Zeit der Benutzerbewegungsdatei in Sekunden gesetzt werden. Es ist empfehlenswert, dies mit make zu tun, damit gps-sdr-bin die Größe bei Bedarf aktualisieren kann. z.B.:
$ make USER_MOTION_SIZE=4000
Diese Variable kann auch beim direkten Kompilieren mit GCC gesetzt werden:
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim -DUSER_MOTION_SIZE=4000
Eine benutzerdefinierte Trajektorie kann entweder in einer CSV-Datei, die die erdfesten (ECEF) Benutzerpositionen enthält, oder in einem NMEA-GGA-Stream angegeben werden. Die Abtastrate der Benutzerbewegung muss 10 Hz betragen. Der Benutzer kann auch direkt über die Befehlszeile einen statischen Ort zuweisen.
Der Benutzer gibt die GPS-Satellitenkonstellation über eine GPS-Broadcast-Ephemeris-Datei an. Die tägliche GPS-Broadcast-Ephemeris-Datei (brdc) ist eine Zusammenführung der einzelnen Stationsnavigationsdateien in eine. Das Archiv für die tägliche Datei kann von https://cddis.nasa.gov/archive/gnss/data/daily/ heruntergeladen werden. Für den Zugriff auf diese Seite ist eine kostenlose Registrierung erforderlich.
Diese Dateien werden dann verwendet, um die simulierten Pseudorange- und Doppler-Werte für die sichtbaren GPS-Satelliten zu generieren. Diese simulierten Entfernungsdaten werden dann verwendet, um die digitalisierten I/Q-Abtastwerte für das GPS-Signal zu erzeugen.
Die Befehlszeilenschnittstelle von bladeRF und ADALM-Pluto erfordert I/Q-Paare, die als vorzeichenbehaftete 16-Bit-Integer gespeichert sind, während hackrf_transfer und gps-sdr-sim-uhd.py vorzeichenbehaftete Bytes unterstützen.
HackRF, bladeRF und ADALM-Pluto können die Standardabtastrate von 2.6 MHz akzeptieren, während der USRP2 einen ganzzahligen Dezimator von 100 MHz benötigt, d.h. 2.5 MHz.
Die Simulationsstartzeit kann angegeben werden, wenn der entsprechende Ephemeridensatz verfügbar ist. Andernfalls wird die erste Ephemeridenzeit in der RINEX-Navigationsdatei ausgewählt.
Die maximale Simulationsdauer wird durch USER_MOTION_SIZE definiert, um zu verhindern, dass die Ausgabedatei zu groß wird.
Die Größe der Ausgabedatei kann durch Verwendung der Option "-b 1" reduziert werden, um vier 1-Bit-I/Q-Abtastwerte in einem einzigen Byte zu speichern. Sie können bladeplayer für bladeRF verwenden, um die komprimierte Datei wiederzugeben.
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
Die Benutzerbewegung kann entweder im dynamischen oder im statischen Modus angegeben werden:
> 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
Der TX-Anschluss einer bestimmten SDR-Plattform wird über einen DC-Block und ein festes 50-60-dB-Dämpfungsglied mit dem zu testenden GPS-Empfänger verbunden.
Die simulierte GPS-Signaldatei mit dem Namen "gpssim.bin" kann wie unten gezeigt in den bladeRF geladen werden:
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
Sie können diese Befehle auch über die Skriptoption von bladeRF-cli wie folgt ausführen:
> bladeRF-cli -s bladerf.script
Die Ausgabedaten müssen 8-Bit-vorzeichenbehaftete I/Q-Abtastwerte sein.
> gps-sdr-sim -e brdc0010.22n -b 8
Sie können das Tool hackrf_transfer in der HackRF-Hostsoftware verwenden.
> 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
Sie können auch das Tool tx_samples_from_file aus den UHD-Beispielen verwenden:
> 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
Es wird erwartet, dass das ADALM-Pluto-Gerät über eine aktive Netzwerkschnittstelle verfügt und standardmäßig über "pluto.local" erreichbar ist.
Standardeinstellungen:
> plutoplayer -t gpssim.bin
TX-Dämpfung einstellen:
> plutoplayer -t gpssim.bin -a -30.0
Standard -20.0 dB. Anwendbarer Bereich 0.0 dB bis -80.0 dB in 0.25-dB-Schritten.
HF-Bandbreite einstellen:
> plutoplayer -t gpssim.bin -b 3.0
Standard 3.0 MHz. Anwendbarer Bereich 1.0 MHz bis 5.0 MHz.
Copyright © 2015-2025 Takuji Ebinuma
Verteilt unter der MIT-Lizenz.