Skip to content
Alan Page edited this page Sep 20, 2018 · 8 revisions

Symbol Encoding

GNSS-SDR requires the 2bit packed symbol to be in 'Sign-Magnitude Adjusted' format, however Peter Monta's original verilog code produces 'Offset-Binary Adjusted' format.

Symbol Offset-Binary Adjusted Sign-Mag Adjusted
Original Firehose GNSS-SDR
-3 00 10
-1 01 11
+1 10 00
+3 11 01

The steam format definitions are from ION GNSS Metadata Standard

The encoding can be changed by editing two files, quantize.v and histogram.v. The PC software also need to understand the new mapping so packet2wav_3ch.c will also need to be updated.

Workflow

For the first test we will use the ibyte input format on GNSS SDR. The updated packet2wav_3ch in this repository will turn each 2bit symbol onto a value of -90,-30,+30 and +90 in an 8bit two's complement format, 8bit I followed by 8bit Q. The command need to convert the data is:

This can then be fed into GNSSS-SDR.

VOLK - trick for young players

GNSS-SDR does some pretty heavy processing. It uses a library called VOLK which provides accelerated maths commands tailored for the particular processor you are using. However VOLK needs to figure out which commands to use. The following command need to be run:

volk_profile

volk_gnsssdr_profile

They only need to be run once per user as it will create the $HOME/.volk_gnsssdr/volk_gnsssdr_config file to allow VOLK to know maths commands are the best to use. This file is read each time GNSS-SDR is run.

Clone this wiki locally