On this page a few samples of GNSS signal records will be provided. These records are too short for the regular GNSS positioning algorithms. However they will be useful for someone who wants to verify the GNSS signal acquisition and tracking algorithms.
Signal Record gioveAandB_short.zip
The signal sampling frequency is 16367600 Hz. The intermediate frequency is 4130400 Hz. In this record one signal sample is stored as one signed byte (int8). The record length is approximately 1 minute and it was made in 2008.
These GPS L1 signals are present in this record (sorted from the strongest to the weakest):
|PRN||Approximate Carrier Frequency
|C/A Code Phase
| PRN 32 may not be acquired in the first millisecond of the record. This is most likely due to a bit transition in the navigation data.
 These PRNs require acquisition algorithms which are more sensitive than the default one (5 to 9 ms integration time is required).
This record also contains E1 (L1) signals from the two Galileo GIOVE satellites:
|Satellite||Approximate Carrier Frequency
|Data Channel Code Phase
Signal Record compactdata_20050407_142600.zip
The signal sampling frequency is 12 Ms/s (MHz). The intermediate frequency is 3.563 MHz. The IF signal is sampled using one bit. Therefore one bit in the file represents one sample (8 samples in one byte). Due to this fact to process this signal the SDR that comes with the book must be modified as described below.
The following GPS PRNs are present in this record: 01, 03, 07, 19, 20, 22, 24, 28, 31.
An example how to read the this record file in Matlab:
[fid, message] = fopen(fileName, 'rb', 'b'); data = fread( fid, numberOfSamplesToBeRead, 'ubit1' )'; data = data * 2 - 1; %To convert values to +/- 1
Please note that the fopen command for this data file differs from the one used in the original SoftGPS code. The difference is the ‘b’ parameter (
'rb' is not the same as
'r', 'b'). It is required because of the way this particular data file was written.
The tracking code must be modified in a few places. I will not provide the code, but instead I will tell where to look for the problems. The first place is the fseek command. This command works fine, when one the signal sample is stored as one byte in the record. However in this case one sample is stored as one bit. Therefore some code instead of the fseek command must be developed.
The second place for code change is the computation of the variable absoluteSample. The original code is also based on the byte size samples. This must be fixed.