commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r6106 - gnuradio/branches/developers/trondeau/ofdm_mod


From: trondeau
Subject: [Commit-gnuradio] r6106 - gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general
Date: Fri, 3 Aug 2007 05:00:58 -0600 (MDT)

Author: trondeau
Date: 2007-08-03 05:00:58 -0600 (Fri, 03 Aug 2007)
New Revision: 6106

Modified:
   
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.cc
   
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.h
Log:
reverting to slower sin/cos until we fix the LUT with negative frequency 
adjustments. This code should work over the air and fixes the assertion error 
of ticket:157, though with a performance penalty.

Modified: 
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.cc
===================================================================
--- 
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.cc
  2007-08-03 10:58:04 UTC (rev 6105)
+++ 
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.cc
  2007-08-03 11:00:58 UTC (rev 6106)
@@ -99,12 +99,13 @@
 {
   //  return 
gr_complex(cos(-M_TWOPI*freq_delta*d_cplen/d_fft_length*symbol_count),
   //       sin(-M_TWOPI*freq_delta*d_cplen/d_fft_length*symbol_count));
-  //return gr_expj(-M_TWOPI*freq_delta*d_cplen/d_fft_length*symbol_count);
 
-  assert(d_freq_shift_len + freq_delta >= 0);
-  assert(symbol_count <= MAX_NUM_SYMBOLS);
+  return gr_expj(-M_TWOPI*freq_delta*d_cplen/d_fft_length*symbol_count);
 
-  return d_phase_lut[MAX_NUM_SYMBOLS * (d_freq_shift_len + freq_delta) + 
symbol_count];
+  //assert(d_freq_shift_len + freq_delta >= 0);
+  //assert(symbol_count <= MAX_NUM_SYMBOLS);
+
+  //return d_phase_lut[MAX_NUM_SYMBOLS * (d_freq_shift_len + freq_delta) + 
symbol_count];
 }
 
 bool
@@ -118,13 +119,13 @@
   gr_complex h_sqrd = gr_complex(0.0,0.0);
   float power = 0.0F;
 
-  while(!found && ((unsigned)abs(search_delta) < d_freq_shift_len)) {
+  while(!found && ((unsigned)abs(search_delta) <= d_freq_shift_len)) {
     h_sqrd = gr_complex(0.0,0.0);
     power = 0.0F;
 
     for(i = 0; i < d_occupied_carriers; i++) {
       h_sqrd = h_sqrd + previous[i+zeros_on_left+search_delta] * 
-       
conj(coarse_freq_comp(search_delta,1)*current[i+zeros_on_left+search_delta]) * 
+       
conj(coarse_freq_comp(search_delta,0)*current[i+zeros_on_left+search_delta]) * 
        d_diff_corr_factor[i];
       power = power + norm(current[i+zeros_on_left+search_delta]); // No need 
to do coarse freq here
     }
@@ -137,8 +138,9 @@
       // FIXME: Look at h_sqrd.read() > power
     if((h_sqrd.real() > 0.82*power)  && (h_sqrd.real() < 1.1 * power)) {
       found = true;
+      //printf("search delta: %d\n", search_delta);
       d_coarse_freq = search_delta;
-      d_phase_count = 1;
+      d_phase_count = 0;
       //d_snr_est = 10*log10(power/(power-h_sqrd.real()));
 
       // check for low noise power; sets maximum SNR at 100 dB
@@ -223,6 +225,7 @@
   if(d_phase_count == MAX_NUM_SYMBOLS) {
     d_phase_count = 0;
   }
+
   consume_each(1);
   return 1;
 }

Modified: 
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.h
===================================================================
--- 
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.h
   2007-08-03 10:58:04 UTC (rev 6105)
+++ 
gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general/gr_ofdm_correlator.h
   2007-08-03 11:00:58 UTC (rev 6106)
@@ -35,7 +35,7 @@
                         unsigned int cplen,
                         const std::vector<gr_complex> &known_symbol1, 
                         const std::vector<gr_complex> &known_symbol2,
-                        unsigned int max_fft_shift_len=4);
+                        unsigned int max_fft_shift_len=10);
 
 /*!
  * \brief take a vector of complex constellation points in from an FFT





reply via email to

[Prev in Thread] Current Thread [Next in Thread]