From 9000e292a9a5b51db9ee135c14a0c4b2179c885e Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 19 Mar 2015 21:59:38 +0000 Subject: [PATCH] coarse frame sync in C working, C and Octace matching git-svn-id: https://svn.code.sf.net/p/freetel/code@2085 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/octave/autotest.m | 2 +- codec2-dev/octave/tcohpsk.m | 6 +++--- codec2-dev/unittest/tcohpsk.c | 39 ++++++++++++++++++++++++++++++++--- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/codec2-dev/octave/autotest.m b/codec2-dev/octave/autotest.m index 38e99903..0a772e40 100644 --- a/codec2-dev/octave/autotest.m +++ b/codec2-dev/octave/autotest.m @@ -64,7 +64,7 @@ function check(a, b, test_name, tol) printf("OK\n"); passes++; else - printf("FAIL\n"); + printf("FAIL (%f)\n",e); fails++; end endfunction diff --git a/codec2-dev/octave/tcohpsk.m b/codec2-dev/octave/tcohpsk.m index bc76eee6..35af735e 100644 --- a/codec2-dev/octave/tcohpsk.m +++ b/codec2-dev/octave/tcohpsk.m @@ -245,15 +245,15 @@ check(rx_fdm_log, rx_fdm_log_c, 'rx_fdm'); check(rx_baseband_log, rx_baseband_log_c, 'rx_baseband',0.01); check(rx_filt_log, rx_filt_log_c, 'rx_filt'); check(ch_symb_log, ch_symb_log_c, 'ch_symb',0.01); -check(rx_amp_log, rx_amp_log_c, 'rx_amp_log'); +check(rx_amp_log, rx_amp_log_c, 'rx_amp_log',0.01); check(rx_phi_log, rx_phi_log_c, 'rx_phi_log'); -check(rx_symb_log, rx_symb_log_c, 'rx_symb'); +check(rx_symb_log, rx_symb_log_c, 'rx_symb',0.01); check(rx_bits_log, rx_bits_log_c, 'rx_bits'); % Determine bit error rate sz = length(tx_bits_log_c); -Nerrs_c = sum(xor(tx_bits_log_c(framesize+1:sz-framesize), rx_bits_log_c(2*framesize+1:sz))); +Nerrs_c = sum(xor(tx_bits_log_c(framesize+1:sz-2*framesize), rx_bits_log_c(3*framesize+1:sz))); Tbits_c = sz - 2*framesize; ber_c = Nerrs_c/Tbits_c; ber = Nerrs/Tbits; diff --git a/codec2-dev/unittest/tcohpsk.c b/codec2-dev/unittest/tcohpsk.c index 024f80f0..d32847f2 100644 --- a/codec2-dev/unittest/tcohpsk.c +++ b/codec2-dev/unittest/tcohpsk.c @@ -48,6 +48,8 @@ #define RS 50 #define FOFF 1 +extern float pilots_coh[][PILOTS_NC]; + int main(int argc, char *argv[]) { struct COHPSK *coh; @@ -56,6 +58,7 @@ int main(int argc, char *argv[]) COMP tx_fdm[M*NSYMROWPILOT]; COMP rx_fdm[M*NSYMROWPILOT]; COMP ch_symb[NSYMROWPILOT][PILOTS_NC]; + COMP ct_symb_buf[2*NSYMROWPILOT][COHPSK_NC]; int rx_bits[COHPSK_BITS_PER_FRAME]; int tx_bits_log[COHPSK_BITS_PER_FRAME*FRAMES]; @@ -88,6 +91,10 @@ int main(int argc, char *argv[]) COMP rx_onesym[PILOTS_NC]; int rx_baseband_log_col_index = 0; COMP rx_baseband_log[PILOTS_NC][(M+M/P)*NSYMROWPILOT*FRAMES]; + + int t,ct,p; + float max_corr; + COMP corr; coh = cohpsk_create(); assert(coh != NULL); @@ -177,8 +184,6 @@ int main(int argc, char *argv[]) } rx_baseband_log_col_index += nin; - //if (f == 3) - // exit(0); for(c=0; c max_corr) { + max_corr = cabsolute(corr); + ct = t; + } + } + //printf("max_corr: %f ct: %d\n", max_corr, ct); + + /* Coherent phase estimation and correction */ + + qpsk_symbols_to_bits(coh, rx_bits, ct_symb_buf + ct); + /* --------------------------------------------------------*\ Log each vector \*---------------------------------------------------------*/ -- 2.25.1