# Telemetry Decoder

The role of a Telemetry Decoder block is to obtain the data bits from the navigation message broadcast by GNSS satellites.

In the description of baseband signals, this page uses the following notation:

• $[l]_{L}$ means the integer part of $\frac{l}{L}$,
• $\oplus$ is the exclusive–or operation (modulo–2 addition), and
• $\mid l \mid_{L}$ means $l$ modulo $L$.

### Implementation: GPS_L1_CA_Telemetry_Decoder

The GPS L1 C/A baseband signal can be written as:

with

The GPS NAV message $D_{\text{NAV}} \in \{ 1, -1 \}$ is modulated at 50 bits per second. The whole message contains 25 pages (or “frames”) of 30 seconds each, forming the master frame that takes 12,5 minutes to be transmitted. Every frame is subdivided into 5 sub-frames of 6 seconds each; in turn, every sub-frame consists of 10 words, with 30 bits per word: GPS NAV message. Source: Navipedia.

The content of every sub-frame is as follows:

• Sub-frame 1: contains information about the parameters to be applied to satellite clock status for its correction. These values are polynomial coefficients that allow converting time on board to GPS time. It also has information about satellite health condition.
• Sub-frames 2 and 3: these sub-frames contain satellite ephemeris.
• Sub-frame 4: provides ionospheric model parameters (in order to adjust for ionospheric refraction), UTC information (Universal Coordinate Time), part of the almanac, and indications whether the Anti-Spoofing, A/S, is activated or not (which transforms P code into the encrypted Y code).
• Sub-frame 5: contains data from the almanac and the constellation status. A total of 25 frames are needed to complete the almanac.

Sub-frames 1, 2 and 3 are transmitted with each frame (i.e., they are repeated every 30 seconds). Sub-frames 4 and 5 contain different pages (25 pages each) of the navigation message. Thence, the transmission of the full navigation message takes $25 \times 30$ seconds = 12.5 minutes.

The content of sub-frames 4 and 5 is common for all satellites. Thence, the almanac data for all in orbit satellites can be obtained from a single tracked satellite.

This implementation accepts the following parameters:

Parameter Description Required
implementation GPS_L1_CA_Telemetry_Decoder Mandatory
dump [true, false]: If set to true, it enables the Telemetry Decoder internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./telemetryN.dat, where N is the channel number (automatically added). Optional

Telemetry Decoder implementation: GPS_L1_CA_Telemetry_Decoder.

Example:

;######### TELEMETRY DECODER CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false


### Implementation: Galileo_E1B_Telemetry_Decoder

The Galileo E1 baseband signal can be written as:

where $sc_A(t)$ and $sc_B(t)$ are the Composite Binary Offset Carrier (CBOC) square subcarriers, and:

As shown in this equation, the E1B signal component carries the $D_{\text{I/NAV}} \in \{ 1, -1 \}$ navigation message, which provides the space vehicle identification (SVID), an Issue of Data, the ephemeris data, a signal-in-space accuracy (SISA) indicator, clock correction parameters, an ionospheric correction, the Broadcast Group Delay (BGD), signal health and data validity status, Galileo System Time (GST), GST-UTC and GST-GPS time conversion parameters, the almanacs, and Search and Rescue (SAR) service data. Galileo E1B I/NAV message structure.

In the message structure depicted above, each frame contains 24 subframes, and each subframe contains 15 nominal pages, having a duration of 2 seconds transmitted sequentially in time in two parts of duration 1 second each. Each page part (denoted as even or odd) consists of a 10-bit synchronization pattern followed by 240 coded symbols, corresponding to 114 data bits and 6 tail bits (sequence of zeros) that allow Viterbi decoding. Three levels of error coding are applied to the Galileo message data stream:

• a Cyclic Redundancy Check (CRC) with error detection capabilities after recovery of the received data,

• a one-half rate Forward Error Correction (FEC) convolutional coding, and

• block interleaving on the resulting frames, with $30$ columns (where data is written) and $8$ rows (where data is read), providing robustness to the FEC decoding algorithm by avoiding error bursts.

This implementation accepts the following parameters:

Parameter Description Required
implementation Galileo_E1B_Telemetry_Decoder Mandatory
dump [true, false]: If set to true, it enables the Telemetry Decoder internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./telemetryN.dat, where N is the channel number (automatically added). Optional

Telemetry Decoder implementation: Galileo_E1B_Telemetry_Decoder.

The complex baseband transmitted signal by GLONASS satellites in the L1 and L2 bands can be written as

where

The navigation message of the standard accuracy signal (C/A) is broadcast as continuously repeating superframes with a duration of 2.5 minutes. Each superframe consists of 5 frames of 30 seconds, and each frame consists of 15 strings of 2 seconds duration (100 bits length). GLONASS NAV message. Source: Navipedia.

Each string is formed by a 0 (idle) bit, 76 data bits, the eight check bits of a Hamming code (labelled as Kx in the figure above) and a 30-bit time mark (labelled as MB).

The message content divides the data in immediate data of the transmitting satellite and non-immediate data for the other satellites:

• The immediate data is repeated in the first four strings of every frame. It comprises the ephemeris parameters, satellite clock offsets, satellite healthy flag and the relative difference between carrier frequency of the satellite and its nominal value.
• The non-immediate data is broadcast in the strings 5 to 15 of each frame (almanac for 24 satellites). The frames I to IV contain almanac for 20 satellites (5 per frame), and the 5th frame almanac for 4 satellites. The last 2 strings of frame 5 are reserved bits (the almanac of each satellite uses 2 strings).

The ephemerides values are predicted from the Ground Control Centre for a 24 hours period, and the satellite transmits a new set of ephemerides every 30 minutes. These data differ from GPS data: instead of Keplerian orbital elements, they are provided as Earth Centered Earth Fixed (ECEF) Cartesian coordinates in position and velocity, with lunar and solar acceleration perturbation parameters.

### Implementation: GLONASS_L1_CA_Telemetry_Decoder

This implementation accepts the following parameters:

Parameter Description Required
implementation GLONASS_L1_CA_Telemetry_Decoder Mandatory
dump [true, false]: If set to true, it enables the Telemetry Decoder internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./telemetryN.dat, where N is the channel number (automatically added). Optional

Telemetry Decoder implementation: GLONASS_L1_CA_Telemetry_Decoder.

Example:

;######### TELEMETRY DECODER GLONASS L1 C/A CONFIG ############
TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1G.dump=false


### Implementation: GLONASS_L2_CA_Telemetry_Decoder

This implementation accepts the following parameters:

Parameter Description Required
implementation GLONASS_L2_CA_Telemetry_Decoder Mandatory
dump [true, false]: If set to true, it enables the Telemetry Decoder internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./telemetryN.dat, where N is the channel number (automatically added). Optional

Telemetry Decoder implementation: GLONASS_L2_CA_Telemetry_Decoder.

Example:

;######### TELEMETRY DECODER GPS L2C CONFIG ############
TelemetryDecoder_2G.implementation=GLONASS_L2_CA_Telemetry_Decoder
TelemetryDecoder_2G.dump=true


### Implementation: GPS_L2C_Telemetry_Decoder

The GPS L2C baseband signal can be written as:

with the Quadrature–phase component defined as:

The civilian long code $C_{\text{CL}}$ is $L_{\text{CL}}=767250$ chips long, repeating every $1.5$ s, while the civilian moderate code $C_{\text{CM}}$ is $L_{\text{CL}}=10230$ chips long and its repeats every $20$ ms. The CNAV data message $D_{\text{CNAV}} \in \{ 1, -1 \}$ is an upgraded version of the original NAV navigation message, containing higher precision representation and nominally more accurate data than the NAV data. It is transmitted at $25$ bps with forward error correction (FEC) encoding, resulting in $50$ sps. GPS L2 CNAV message structure. Source: Navipedia.

This implementation accepts the following parameters:

Parameter Description Required
implementation GPS_L2C_Telemetry_Decoder Mandatory
dump [true, false]: If set to true, it enables the Telemetry Decoder internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./telemetry_L2CM_N.dat, where N is the channel number (automatically added). Optional

Telemetry Decoder implementation: GPS_L2C_Telemetry_Decoder.

Example:

;######### TELEMETRY DECODER GPS L2C CONFIG ############
TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder
TelemetryDecoder_2S.dump=true


### Implementation: GPS_L5_Telemetry_Decoder

The GPS L5 baseband signal can be written as:

where:

with $T_{c,nh}=1$ ms and $T_{c,L5}=\frac{1}{10.23}$ $\mu$s. The L5I component contains a synchronization sequence $C_{nh_{10}}$ that modulates each $100$ symbols of the GPS L5 civil navigation data $D_{\text{CNAV}}$. The message structure is the same as for L2 CNAV: GPS L5 CNAV message structure. Source: Navipedia.

This implementation accepts the following parameters:

Parameter Description Required
implementation GPS_L5_Telemetry_Decoder Mandatory
dump [true, false]: If set to true, it enables the Telemetry Decoder internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./telemetry_L5_N.dat, where N is the channel number (automatically added). Optional

Telemetry Decoder implementation: GPS_L5_Telemetry_Decoder.

Example:

;######### TELEMETRY DECODER GPS L5 CONFIG ############
TelemetryDecoder_L5.implementation=GPS_L5_Telemetry_Decoder
TelemetryDecoder_L5.dump=true


### Implementation: Galileo_E5a_Telemetry_Decoder

The Galileo E5 baseband signal can be written as:

where $ssc_s(t)$ and $ssc_p(t)$ are the single and product side–band signal subcarriers. However, sub-band E5a can be approximated by a QPSK signal. Galileo’s F/NAV navigation message $D_{\text{F/NAV}} \in \{ 1, -1 \}$ modulates the I component of the E5a signal, which can be expressed as: Galileo E5a F/NAV message structure. Source: Navipedia.

This implementation accepts the following parameters:

Parameter Description Required
implementation Galileo_E5a_Telemetry_Decoder Mandatory
dump [true, false]: If set to true, it enables the Telemetry Decoder internal binary data file logging. It defaults to false. Optional
dump_filename If dump is set to true, name of the file in which internal data will be stored. It defaults to ./telemetryN.dat, where N is the channel number (automatically added). Optional

Telemetry Decoder implementation: Galileo_E5a_Telemetry_Decoder.

Example:

;######### TELEMETRY DECODER GALILEO E5a CONFIG ############
TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder
TelemetryDecoder_5X.dump=false


Updated: