1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-11-16 07:07:18 +00:00

First version of Galileo E1 DLL PLL Very Early Minus Late Tracking. Added some functions in Matlab to analyze the results.

git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@234 64b25241-fba3-4117-9849-534c7e92360d
This commit is contained in:
Luis Esteve
2012-08-28 13:38:33 +00:00
parent 2bb7afc0ee
commit 45d7220dae
23 changed files with 2021 additions and 27 deletions

View File

@@ -3,11 +3,12 @@
* \brief Implementation of a library with a set of code tracking
* and carrier tracking discriminators that is used by the tracking algorithms.
* \author Javier Arribas, 2011. jarribas(at)cttc.es
* Luis Esteve, 2012. luis(at)epsilon-formacion.com
*
*
* -------------------------------------------------------------------------
*
* Copyright (C) 2010-2011 (see AUTHORS file for a list of contributors)
* Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors)
*
* GNSS-SDR is a software defined Global Navigation
* Satellite Systems receiver
@@ -91,8 +92,8 @@ float pll_cloop_two_quadrant_atan(gr_complex prompt_s1)
* \f{equation}
* error=\frac{E-L}{E+L},
* \f}
* where \f$E=\sqrt{I_{ES}^2,Q_{ES}^2}\f$ is the Early correlator output absolute value and
* \f$L=\sqrt{I_{LS}^2,Q_{LS}^2}\f$ is the Late correlator output absolute value. The output is in [chips].
* where \f$E=\sqrt{I_{ES}^2+Q_{ES}^2}\f$ is the Early correlator output absolute value and
* \f$L=\sqrt{I_{LS}^2+Q_{LS}^2}\f$ is the Late correlator output absolute value. The output is in [chips].
*/
float dll_nc_e_minus_l_normalized(gr_complex early_s1, gr_complex late_s1)
{
@@ -101,3 +102,19 @@ float dll_nc_e_minus_l_normalized(gr_complex early_s1, gr_complex late_s1)
P_late = std::abs(late_s1);
return (P_early - P_late) / ((P_early + P_late));
}
/*
* DLL Noncoherent Very Early Minus Late Power (VEMLP) normalized discriminator:
* \f{equation}
* error=\frac{E-L}{E+L},
* \f}
* where \f$E=\sqrt{I_{VE}^2+Q_{VE}^2+I_{E}^2+Q_{E}^2}\f$ and
* \f$L=\sqrt{I_{VL}^2+Q_{VL}^2+I_{L}^2+Q_{L}^2}\f$ . The output is in [chips].
*/
float dll_nc_vemlp_normalized(gr_complex very_early_s1, gr_complex early_s1, gr_complex late_s1, gr_complex very_late_s1)
{
float P_early, P_late;
P_early = std::sqrt(std::norm(very_early_s1)+std::norm(early_s1));
P_late = std::sqrt(std::norm(very_late_s1)+std::norm(late_s1));
return (P_early - P_late) / ((P_early + P_late));
}