[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6106 - gnuradio/branches/developers/trondeau/ofdm_mod/gnuradio-core/src/lib/general,
trondeau <=