gps-sdr-sim/README.md

87 lines
2.7 KiB
Markdown
Raw Normal View History

2015-06-15 09:04:58 +08:00
# GPS-SDR-SIM
GPS-SDR-SIM generates GPS baseband signal data streams, which can be converted
to RF using software-defined radio (SDR) platforms, such as
2015-06-27 09:17:50 +08:00
[bladeRF](http://nuand.com/), [HackRF](https://github.com/mossmann/hackrf/wiki), and USRP.
2015-06-15 09:04:58 +08:00
### Windows build instructions
1. Start Visual Studio.
2. Create an empty project for a console application.
2015-06-27 09:17:50 +08:00
3. On the Solution Explorer at right, add "gpssim.c" and "getopt.c" to the Souce Files folder.
2015-06-15 09:04:58 +08:00
4. Select "Release" in Solution Configurations drop-down list.
5. Open the Property Pages dialog box and expand the Configuration Properties.
6. Expand the C/C++ node and select the Language property page.
7. Enable the OpenMP Support (/openmp).
8. Build the solution.
2015-06-19 07:51:05 +08:00
### Building with GCC
```
$ gcc gpssim.c -lm -fopenmp -o gps-sdr-sim
```
2015-06-15 09:04:58 +08:00
### Generating the GPS signal file
A user-defined trajectory can be defined in a CSV file, which contains
the Earth-centered Earth-fixed (ECEF) user positions at 10Hz.
The user specifies the GPS satellite constellation through a GPS broadcast
ephemeris file. The daily GPS broadcast ephemers file (brdc) is a merge of the
indiviual site navigation files into one. The archive for the daily file is:
[ftp://cddis.gsfc.nasa.gov/gnss/data/daily/](ftp://cddis.gsfc.nasa.gov/gnss/data/daily/)
These files are then used to generate the simulated pseudorange and
2015-06-15 09:04:58 +08:00
Doppler for the GPS satellites in view. This simulated range data is
then used to generate the digitized I/Q samples for the GPS signal.
2015-06-27 09:17:50 +08:00
The bladeRF command line interface requires I/Q pairs stored as signed
16-bit integers, while the hackrf_transfere supports signed bytes.
```
Usage: gps-sdr-sim [options]
Options:
-e <gps_nav> RINEX navigation file for GPS ephemerides (required)
-u <user_motion> User motion file (required)
-o <output> I/Q sampling data file (default: gpssim.bin)
2015-06-27 09:25:41 +08:00
-f <frequency> Sampling frequency [Hz] (default: 2.6MHz)
2015-06-27 09:17:50 +08:00
-b <iq_bits> I/Q data format [8/16] (default: 8)
```
For example:
2015-06-15 09:04:58 +08:00
```
2015-06-27 09:17:50 +08:00
> gps-sdr-sim -e brdc3540.14n -u circle.csv -b 16
2015-06-15 09:04:58 +08:00
```
2015-06-27 09:17:50 +08:00
### Transmitting the samples
2015-06-15 09:04:58 +08:00
2015-06-27 09:17:50 +08:00
The TX port of a particular SDR platform is connected to the GPS receiver
under test through a DC block and a fixed 50-60dB attenuator.
2015-06-15 09:04:58 +08:00
The simulated GPS signal file, named "gpssim.bin", can be loaded
2015-06-27 09:17:50 +08:00
into the bladeRF for playback as shown below:
2015-06-15 09:04:58 +08:00
```
set frequency 1575.42M
2015-06-27 09:17:50 +08:00
set samplerate 2.6M
2015-06-15 09:04:58 +08:00
set bandwidth 2.5M
set txvga1 -25
cal lms
cal dc tx
tx config file=gpssim.bin format=bin
tx start
```
2015-06-27 09:17:50 +08:00
For the HackRF:
```
> hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0
```
2015-06-15 09:04:58 +08:00
### License
Copyright &copy; 2015 Takuji Ebinuma
Distributed under the [MIT License](http://www.opensource.org/licenses/mit-license.php).