If you wish to contribute or participate in the discussions about articles you are invited to contact the Editor

Baseband Processing: Difference between revisions

From Navipedia
Jump to navigation Jump to search
Line 52: Line 52:
where:
where:
*<math>A</math> is the signal amplitude
*<math>A</math> is the signal amplitude
*m(t_k) = ±1 and it includes the PRN code, navigation data (if applicable) and modulation information (e.g. subcarrier code for BOC modulations). For the case of GPS L1, <math>m_I(t_k)</math> and <math>m_Q(t_k)</math> are the C/A code and the P code respectively
*<math>m(t_k)</math> = ±1 and it includes the PRN code, navigation data (if applicable) and modulation information (e.g. subcarrier code for BOC modulations). For the case of GPS L1, <math>m_I(t_k)</math> and <math>m_Q(t_k)</math> are the C/A code and the P code respectively
*<math>d(t_k)</math> is the navigation data. Please note that in case no data is transmitted (e.g. pilot channels) this term is replaced by 1
*<math>d(t_k)</math> is the navigation data. Please note that in case no data is transmitted (e.g. pilot channels) this term is replaced by 1
* I and Q refer to the In-phase and the Quadrature components respectively
* I and Q refer to the In-phase and the Quadrature components respectively
*\phi (t_k) accounts for the phase including Doppler frequency, receiver clock instabilities and initial signal phase.
*<math>\phi (t_k)</math> accounts for the phase including Doppler frequency, receiver clock instabilities and initial signal phase.


The Doppler removal block rotates the complex baseband signal by the current estimation of the carrier phase:
The Doppler removal block rotates the complex baseband signal by the current estimation of the carrier phase:
<math>s_{out} (t_k) = s_{BB}(t_k) exp[j\phi_e (t_k)]\}\,</math>
where
*the phase error is given by <math>\phi_e (t_k)=\hat{\phi}(t_k)-\phi(t_k)</math>
*<math>\hat{\phi}(t_k)</math> is the phase estimated at the receiver
*<math>\phi(t_k)</math> is the phase of the incoming signal
The correlation between the incoming signal and the local (PRN) code replica corresponds to the “correlators” and “accumulators” blocks, and can be written as:
<math>Corr_{out}(\hat{\tau}) = \sum_T s_{out}^{*} (t_k) m(t_k-\hat{\tau})</math>
where
* T is the integration time, i.e. the accumulation interval
*<math>\hat{\tau} </math> is the code delay estimated at the receiver
As an example, the correlation output for a receiver tracking GPS L1 C/A code would be:
<math>Corr_{out}(\hat{\tau}) = \sum_T (A_Id(t_k)c_I(t_k) + jA_Qd(t_k)c_Q(t_k))  exp[-j\phi_e(t_k)]  c_I(t_k - \hat{\tau})</math>
where
*<math>c_I</math> would stand for C/A code
*<math>c_Q</math> would stand for the P code
*<math>c_I(t_k - \hat{\tau})</math> is the local replica generated at the receiver
Considering that the cross-correlation between C/A code and P code can be neglected, the expression can be simplified to:
<math>Corr_{out}(\hat{\tau}) = \sum_T A_Id(t_k)c_I(t_k)  exp[-j\phi_e(t_k)]  c_I(t_k - \hat{\tau})</math>
Hence the output of the correlation and accumulation blocks can be written in its in-phase (I) and quadrature (Q) components as:
<math>I_P = A_I d_I R_{c_I} (\tau_e) cos(\phi_e) </math>
<math>Q_P = -A_Id_IR_{c_I}(\tau_e)sin(\phi_e) </math>
where
*<math>R_{c_I}</math> is the auto-correlation of the <math>c_I</math> code
*<math>P</math> stands for the Prompt replica, i.e. the replica generated at the receiver which is aligned with the incoming signal.
*<math>\tau_e</math> is the error of teh code delay estimated at the receiver
*<math>\phi_e</math> is the error of the carrier phase estimated at the receiver
These are the input to the [[Tracking Loops|tracking loops]].
Further information about the receiver correlators can be found [[Correlators|here]].


==Related articles==
==Related articles==

Revision as of 13:36, 29 April 2011


ReceiversReceivers
Title Baseband Processing
Author(s) GMV
Level Advanced
Year of Publication 2011
Logo GMV.png


The baseband processing block is responsible for processing the down-converted and digitized signal in order to provide GNSS observables: code pseudo-ranges and carrier phase measurements, as well as navigation data. Additional information such as Doppler frequency, Carrier to Noise ratio, lock indicators can also be provided. In most GNSS receivers’ architectures, the baseband processing relies on independent channels that track each satellite signal autonomously. Then the information from each channel is integrated to derive a navigation solution.

Block Diagram

The baseband processing block is usually replicated over several channels. Each channel processes a given signal from a given satellite in order to provide GNSS observables and navigation data. A generic diagram of a single channel within the Baseband Processing block is depicted in the following figure.


Figure 1: Generic Diagram of a single channel in the Baseband Procesing block.

The incoming signal is firstly stripped of its Doppler frequency (according to its current estimation) and then it is correlated with one (or more) PRN codes generated locally (according to the current estimation of code delay). Then new estimations of the Doppler frequency and code delay are computed based on the assessment of the correlation outputs. Please note that for GNSS using FDMA such as GLONASS, the Doppler removal block represents a shift in the frequency not only corresponding to the estimated Doppler shift caused by the relative motion between the satellite and the user, but also to the center frequency of the satellite at hand. This process is implemented in an iterative way, usually using PLL and DLL tracking loops to track the incoming signal phase and code delay respectively. In parallel, the receiver extracts the navigation data of the incoming signal and ensures monitoring and control features further described here.

Principle

The basic principle of GNSS baseband processing relies on the correlation process. The underlying idea is that GNSS signals convey ranging codes that are built such as:

  • When the code is correlated with an aligned replica of itself, the correlation output is maximum: high auto-correlation properties
  • When the code is correlated with a non-aligned replica of itself, the correlation output is low
  • When the code is correlated with another code of the same family, the correlation output is low: low cross-correlation properties
Figure 2: The Correlation process: the receiver shifts the code replica (by changing [math]\displaystyle{ \Delta t }[/math]) until finding a peak in the correlation output[1].


The basic principle is illustrated in Figure 2: the receiver assigns each channel with a PRN code (for GNSS based on CDMA – such as GPS and Galileo - each satellite transmits a dedicated PRN code, whereas for GNSS based on FDMA – such as GLONASS – the PRN code is the same for all satellites).

At channel level, the incoming signal is correlated with the local replica of this PRN code over time. This local replica is generated such that its code delay and phase vary to represent a two-dimensional search over code and (Doppler) frequency. Whenever the local replica code parameters (code and frequency) match those of the incoming signal, the correlation output will reach a maximum and the receiver will consider this pair (code and frequency) as the current estimates for these parameters.


Real-life systems are very noisy and dynamic: as a consequence, the auto-correlation peak seems to fluctuate at each time instant, hence the need for tracking loops (accumulators and filters) to continuously “follow” the incoming signal, as an error of 1 ms in the code delay would lead to an error of around 300 km in the pseudorange measurement.

Mathematical Model

At the output of the RF section, the baseband signal was written as (neglecting noise):

[math]\displaystyle{ s_{BB} (t_k) = \Re\{s(t_k) exp[j\phi (t_k)]\}\, }[/math]

with [math]\displaystyle{ s(t_k) = A_Im_I(t_k)d(t_k)-jA_Qm_Q(t_k)d(t_k)\, }[/math]

where:

  • [math]\displaystyle{ A }[/math] is the signal amplitude
  • [math]\displaystyle{ m(t_k) }[/math] = ±1 and it includes the PRN code, navigation data (if applicable) and modulation information (e.g. subcarrier code for BOC modulations). For the case of GPS L1, [math]\displaystyle{ m_I(t_k) }[/math] and [math]\displaystyle{ m_Q(t_k) }[/math] are the C/A code and the P code respectively
  • [math]\displaystyle{ d(t_k) }[/math] is the navigation data. Please note that in case no data is transmitted (e.g. pilot channels) this term is replaced by 1
  • I and Q refer to the In-phase and the Quadrature components respectively
  • [math]\displaystyle{ \phi (t_k) }[/math] accounts for the phase including Doppler frequency, receiver clock instabilities and initial signal phase.

The Doppler removal block rotates the complex baseband signal by the current estimation of the carrier phase:

[math]\displaystyle{ s_{out} (t_k) = s_{BB}(t_k) exp[j\phi_e (t_k)]\}\, }[/math]

where

  • the phase error is given by [math]\displaystyle{ \phi_e (t_k)=\hat{\phi}(t_k)-\phi(t_k) }[/math]
  • [math]\displaystyle{ \hat{\phi}(t_k) }[/math] is the phase estimated at the receiver
  • [math]\displaystyle{ \phi(t_k) }[/math] is the phase of the incoming signal

The correlation between the incoming signal and the local (PRN) code replica corresponds to the “correlators” and “accumulators” blocks, and can be written as:

[math]\displaystyle{ Corr_{out}(\hat{\tau}) = \sum_T s_{out}^{*} (t_k) m(t_k-\hat{\tau}) }[/math]

where

  • T is the integration time, i.e. the accumulation interval
  • [math]\displaystyle{ \hat{\tau} }[/math] is the code delay estimated at the receiver

As an example, the correlation output for a receiver tracking GPS L1 C/A code would be:

[math]\displaystyle{ Corr_{out}(\hat{\tau}) = \sum_T (A_Id(t_k)c_I(t_k) + jA_Qd(t_k)c_Q(t_k)) exp[-j\phi_e(t_k)] c_I(t_k - \hat{\tau}) }[/math]

where

  • [math]\displaystyle{ c_I }[/math] would stand for C/A code
  • [math]\displaystyle{ c_Q }[/math] would stand for the P code
  • [math]\displaystyle{ c_I(t_k - \hat{\tau}) }[/math] is the local replica generated at the receiver

Considering that the cross-correlation between C/A code and P code can be neglected, the expression can be simplified to:

[math]\displaystyle{ Corr_{out}(\hat{\tau}) = \sum_T A_Id(t_k)c_I(t_k) exp[-j\phi_e(t_k)] c_I(t_k - \hat{\tau}) }[/math]

Hence the output of the correlation and accumulation blocks can be written in its in-phase (I) and quadrature (Q) components as:

[math]\displaystyle{ I_P = A_I d_I R_{c_I} (\tau_e) cos(\phi_e) }[/math]

[math]\displaystyle{ Q_P = -A_Id_IR_{c_I}(\tau_e)sin(\phi_e) }[/math]


where

  • [math]\displaystyle{ R_{c_I} }[/math] is the auto-correlation of the [math]\displaystyle{ c_I }[/math] code
  • [math]\displaystyle{ P }[/math] stands for the Prompt replica, i.e. the replica generated at the receiver which is aligned with the incoming signal.
  • [math]\displaystyle{ \tau_e }[/math] is the error of teh code delay estimated at the receiver
  • [math]\displaystyle{ \phi_e }[/math] is the error of the carrier phase estimated at the receiver

These are the input to the tracking loops. Further information about the receiver correlators can be found here.

Related articles

References

  1. ^ J. Sanz, J. Zornoza, M. Hernández, “Global Navigation Satellite Systems: Volume I: fundamentals and Algorithms”