From: drowe67 Date: Thu, 1 Nov 2012 06:13:58 +0000 (+0000) Subject: normalised digital osc phase as they were drifting over time leading to a X shaped... X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=11ef16bc0738d5daa613e774bf9118ff838a30cd;p=freetel-svn-tracking.git normalised digital osc phase as they were drifting over time leading to a X shaped scatter plot git-svn-id: https://svn.code.sf.net/p/freetel/code@914 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/src/fdmdv.c b/codec2-dev/src/fdmdv.c index 26c2a7f7..9f1b20cd 100644 --- a/codec2-dev/src/fdmdv.c +++ b/codec2-dev/src/fdmdv.c @@ -448,6 +448,12 @@ void fdm_upconvert(COMP tx_fdm[], COMP tx_baseband[NC+1][M], COMP phase_tx[], CO for (i=0; ireal = cos(2.0*PI*foff/FS); foff_rect->imag = sin(2.0*PI*foff/FS); @@ -714,7 +720,11 @@ void freq_shift(COMP rx_fdm_fcorr[], float rx_fdm[], float foff, COMP *foff_rect *foff_phase_rect = cmult(*foff_phase_rect, cconj(*foff_rect)); rx_fdm_fcorr[i] = fcmult(rx_fdm[i], *foff_phase_rect); } - + + /* normalise digital oscilator as the magnitude can drfift over time */ + + foff_phase_rect->real /= cabsolute(*foff_phase_rect); + foff_phase_rect->imag /= cabsolute(*foff_phase_rect); } /*---------------------------------------------------------------------------*\ @@ -759,6 +769,12 @@ void fdm_downconvert(COMP rx_baseband[NC+1][M+M/P], COMP rx_fdm[], COMP phase_rx rx_baseband[c][i] = cmult(rx_fdm[i], cconj(phase_rx[c])); } + /* normalise digital oscilators as the magnitude can drfift over time */ + + for (c=0; cphase_tx[i])); + fprintf(stderr,"\nfreq[]:\n"); + for(i=0; i<=NC; i++) + fprintf(stderr," %1.3f", cabsolute(f->freq[i])); + fprintf(stderr,"\nfoff_rect %1.3f foff_phase_rect: %1.3f", cabsolute(f->foff_rect), cabsolute(f->foff_phase_rect)); + fprintf(stderr,"\nphase_rx[]:\n"); + for(i=0; i<=NC; i++) + fprintf(stderr," %1.3f", cabsolute(f->phase_rx[i])); + fprintf(stderr, "\n\n"); +} diff --git a/codec2-dev/src/fdmdv.h b/codec2-dev/src/fdmdv.h index b165247f..58fdecc8 100644 --- a/codec2-dev/src/fdmdv.h +++ b/codec2-dev/src/fdmdv.h @@ -98,6 +98,8 @@ void CODEC2_WIN32SUPPORT fdmdv_get_rx_spectrum(struct FDMDV *fdmdv_sta void CODEC2_WIN32SUPPORT fdmdv_8_to_48(float out48k[], float in8k[], int n); void CODEC2_WIN32SUPPORT fdmdv_48_to_8(float out8k[], float in48k[], int n); +void CODEC2_WIN32SUPPORT fdmdv_dump_osc_mags(struct FDMDV *f); + #ifdef __cplusplus } #endif diff --git a/codec2-dev/src/fdmdv_demod.c b/codec2-dev/src/fdmdv_demod.c index e69253aa..7929ca68 100644 --- a/codec2-dev/src/fdmdv_demod.c +++ b/codec2-dev/src/fdmdv_demod.c @@ -219,6 +219,8 @@ int main(int argc, char *argv[]) } } + //fdmdv_dump_osc_mags(fdmdv); + fclose(fin); fclose(fout); free(rx_fdm_log); diff --git a/codec2-dev/src/fdmdv_mod.c b/codec2-dev/src/fdmdv_mod.c index 604282bd..b85f8d1f 100644 --- a/codec2-dev/src/fdmdv_mod.c +++ b/codec2-dev/src/fdmdv_mod.c @@ -114,6 +114,8 @@ int main(int argc, char *argv[]) if (fin == stdin) fflush(stdin); } + //fdmdv_dump_osc_mags(fdmdv); + fclose(fin); fclose(fout); fdmdv_destroy(fdmdv);