From: drowe67 Date: Tue, 1 Jul 2014 04:35:29 +0000 (+0000) Subject: normalised fine freq error so it wont be dependant on rx levels X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=a46a2c7c51a022cb4c4d1f4b37e8e884f848117e;p=freetel-svn-tracking.git normalised fine freq error so it wont be dependant on rx levels git-svn-id: https://svn.code.sf.net/p/freetel/code@1721 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/octave/fdmdv.m b/codec2-dev/octave/fdmdv.m index a742dec8..9c67df4f 100644 --- a/codec2-dev/octave/fdmdv.m +++ b/codec2-dev/octave/fdmdv.m @@ -628,10 +628,10 @@ function [rx_bits sync_bit f_err phase_difference] = psk_to_bits(prev_rx_symbols phase_difference(Nc+1) = rx_symbols(Nc+1) * conj(prev_rx_symbols(Nc+1)) * norm; if (real(phase_difference(Nc+1)) < 0) sync_bit = 1; - f_err = imag(phase_difference(Nc+1)); + f_err = imag(phase_difference(Nc+1))*norm; % make f_err magnitude insensitive else sync_bit = 0; - f_err = -imag(phase_difference(Nc+1)); + f_err = -imag(phase_difference(Nc+1))*norm; end % extra pi/4 rotation as we need for snr_update and scatter diagram diff --git a/codec2-dev/src/fdmdv.c b/codec2-dev/src/fdmdv.c index cd488e9f..6e3e1b05 100644 --- a/codec2-dev/src/fdmdv.c +++ b/codec2-dev/src/fdmdv.c @@ -898,8 +898,7 @@ void rx_filter(COMP rx_filt[NC+1][P+1], int Nc, COMP rx_baseband[NC+1][M+M/P], C \*---------------------------------------------------------------------------*/ /* -TODO: - [ ] windback phase at init time, incl cconj + TODO: [ ] windback phase calculated once at init time */ void down_convert_and_rx_filter(COMP rx_filt[NC+1][P+1], int Nc, COMP rx_fdm[], @@ -1134,11 +1133,11 @@ float qpsk_to_bits(int rx_bits[], int *sync_bit, int Nc, COMP phase_difference[] phase_difference[Nc] = cmult(rx_symbols[Nc], fcmult(norm, cconj(prev_rx_symbols[Nc]))); if (phase_difference[Nc].real < 0) { *sync_bit = 1; - ferr = phase_difference[Nc].imag; + ferr = phase_difference[Nc].imag*norm; /* make f_err magnitude insensitive */ } else { *sync_bit = 0; - ferr = -phase_difference[Nc].imag; + ferr = -phase_difference[Nc].imag*norm; } /* pilot carrier gets an extra pi/4 rotation to make it consistent