added rx_bits to checks, changes demod bit ordering but demod bits still not quite...
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 18 Jun 2017 19:59:06 +0000 (19:59 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sun, 18 Jun 2017 19:59:06 +0000 (19:59 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3214 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/tofdm.m
codec2-dev/src/ofdm.c
codec2-dev/unittest/tofdm.c

index 3aec69d43fb8cfed28d5729db9bffc27b451397c..c1f43e61b9b02fbaa8b8027ba04c8586f5d603f6 100644 (file)
@@ -6,7 +6,7 @@
 
 Nframes = 3;
 
-more off;
+more off; format;
 ofdm_lib;
 autotest;
 
@@ -41,7 +41,7 @@ nin = Nsamperframe+2*(M+Ncp);
 states.rxbuf(Nrxbuf-nin+1:Nrxbuf) = rx(prx:nin);
 prx += nin;
 
-rxbuf_log = []; rxbuf_in_log = []; rx_sym_log = []; foff_hz_log = [];
+rxbuf_log = []; rxbuf_in_log = []; rx_sym_log = []; foff_hz_log = []; rx_bits_log = [];
 
 states.timing_en = 0;
 states.foff_est_en = 1;
@@ -62,7 +62,7 @@ for f=1:Nframes
   end
   prx += lnew;
 
-  [rx_bits_raw states aphase_est_pilot_log arx_np arx_amp] = ofdm_demod(states, rxbuf_in);
+  [rx_bits states aphase_est_pilot_log arx_np arx_amp] = ofdm_demod(states, rxbuf_in);
 
   % log some states for comparison to C
 
@@ -70,13 +70,21 @@ for f=1:Nframes
   rxbuf_log = [rxbuf_log states.rxbuf];
   rx_sym_log = [rx_sym_log; states.rx_sym];
   foff_hz_log = [foff_hz_log; states.foff_est_hz];
+  rx_bits_log = [rx_bits_log rx_bits];
+  
 end
 
 % ---------------------------------------------------------------------
 % Run C version and plot Octave and C states and differences 
 % ---------------------------------------------------------------------
 
-system('/home/ssampson/testing/tofdm');
+% Override default path by setting path_to_tofdm = "/your/path/to/tofdm"
+
+if exist("path_to_tofdm", "var") == 0
+   path_to_tofdm = "../build_linux/unittest/tofdm";
+end
+system(path_to_tofdm) 
+
 load tofdm_out.txt;
 
 stem_sig_and_error(1, 111, tx_bits_log_c, tx_bits_log - tx_bits_log_c, 'tx bits', [1 length(tx_bits_log) -1.5 1.5])
@@ -95,6 +103,8 @@ stem_sig_and_error(5, 212, imag(rx_sym_log_c), imag(rx_sym_log - rx_sym_log_c),
 
 stem_sig_and_error(6, 111, foff_hz_log_c, (foff_hz_log - foff_hz_log_c), 'foff hz', [1 length(foff_hz_log_c) -1.5 1.5])
 
+stem_sig_and_error(7, 111, rx_bits_log_c, rx_bits_log - rx_bits_log_c, 'rx bits', [1 length(rx_bits_log) -1.5 1.5])
+
 % Run through checklist -----------------------------
 
 check(W, W_c, 'W');
@@ -104,3 +114,4 @@ check(rxbuf_in_log, rxbuf_in_log_c, 'rxbuf in');
 check(rxbuf_log, rxbuf_log_c, 'rxbuf');
 check(rx_sym_log, rx_sym_log_c, 'rx_sym');
 check(foff_hz_log, foff_hz_log_c, 'foff_est_hz');
+check(rx_bits_log, rx_bits_log_c, 'rx_bits');
index 3ec04c5ed0af5f45dd89432770c4aa2ac9821ce8..52d0071fa6942fc79e481d765b0bb2225ac0bfaf 100644 (file)
@@ -630,8 +630,8 @@ void ofdm_demod(struct OFDM *ofdm, int *rx_bits, COMP *rxbuf_in) {
                 rx_bits[bit_index++] = crealf(rx_corr) > 0.0f;
             } else if (OFDM_BPS == 2) {
                 qpsk_demod(rx_corr, abit);
-                rx_bits[bit_index++] = abit[0];
                 rx_bits[bit_index++] = abit[1];
+                rx_bits[bit_index++] = abit[0];
             }
         }
 
index 0f0edcd1e7cd3fe1993df0c257d444c63ccf9aa1..aca6609eb3b52d928860336d92493c2229a7898f 100644 (file)
@@ -59,6 +59,7 @@ int main(int argc, char *argv[])
     COMP           rxbuf_log[OFDM_RXBUF*NFRAMES];
     COMP           rx_sym_log[(OFDM_NS + 3)*NFRAMES][OFDM_NC + 2];
     float          foff_hz_log[NFRAMES];
+    int            rx_bits_log[OFDM_BITSPERFRAME*NFRAMES];
 
     FILE          *fout;
     int            f,i,j;
@@ -107,6 +108,7 @@ int main(int argc, char *argv[])
 
     /* disable estimators for initial testing */
 
+    ofdm_set_verbose(ofdm, true);
     ofdm_set_timing_enable(ofdm, false);
     ofdm_set_foff_est_enable(ofdm, true);
     ofdm_set_phase_est_enable(ofdm, false);
@@ -162,6 +164,8 @@ int main(int argc, char *argv[])
         }
 
         foff_hz_log[f] = ofdm->foff_est_hz;
+
+        memcpy(&rx_bits_log[OFDM_BITSPERFRAME*f], rx_bits, sizeof(rx_bits));
     }
 
     /*---------------------------------------------------------*\
@@ -179,6 +183,7 @@ int main(int argc, char *argv[])
     octave_save_complex(fout, "rxbuf_log_c", (COMP*)rxbuf_log, 1, OFDM_RXBUF*NFRAMES,  OFDM_RXBUF*NFRAMES);
     octave_save_complex(fout, "rx_sym_log_c", (COMP*)rx_sym_log, (OFDM_NS + 3)*NFRAMES, OFDM_NC + 2, OFDM_NC + 2);
     octave_save_float(fout, "foff_hz_log_c", foff_hz_log, NFRAMES, 1, 1);
+    octave_save_int(fout, "rx_bits_log_c", rx_bits_log, 1, OFDM_BITSPERFRAME*NFRAMES);
     fclose(fout);
 
     ofdm_destroy(ofdm);