[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r7056 - gnuradio/branches/developers/trondeau/ofdm2/gn
From: |
n4hy |
Subject: |
[Commit-gnuradio] r7056 - gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general |
Date: |
Thu, 29 Nov 2007 14:47:44 -0700 (MST) |
Author: n4hy
Date: 2007-11-29 14:47:42 -0700 (Thu, 29 Nov 2007)
New Revision: 7056
Modified:
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
Log:
DFE added to gr_ofdm_frame_sink. No provision is made to set any of the gains
for the DFE or the frequency correction yet
Modified:
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
===================================================================
---
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
2007-11-29 04:09:03 UTC (rev 7055)
+++
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.cc
2007-11-29 21:47:42 UTC (rev 7056)
@@ -115,16 +115,20 @@
}
while((d_byte_offset < 8) && (i < d_occupied_carriers)) {
- gr_complex sigrot = in[i]*carrier;
+ gr_complex sigrot = in[i]*carrier*d_dfe[i];
//fprintf(stderr, "%f+j%f = %d\n", sigrot.real(), sigrot.imag(),
slicer(in[i]));
//unsigned char bits = slicer(in[i++]);
unsigned char bits = slicer(sigrot);
- i++;
+
gr_complex closest_sym = d_sym_position[bits];
accum_error += sigrot * conj(closest_sym);
+ if (norm(sigrot)> 0.001) d_dfe[i] +=
d_eq_gain*(closest_sym/sigrot-d_dfe[i]);
+
+ i++;
+
if((8 - d_byte_offset) >= d_nbits) {
d_partial_byte |= bits << (d_byte_offset);
d_byte_offset += d_nbits;
@@ -156,7 +160,7 @@
if (d_phase <0) d_phase += 2*M_PI;
- std::cerr << angle << "\t" << d_freq << "\t" << d_phase << std::endl;
+ std::cerr << angle << "\t" << d_freq << "\t" << d_phase << "\t" << std::endl;
return bytes_produced;
}
@@ -179,9 +183,13 @@
gr_make_io_signature (0, 0, 0)),
d_target_queue(target_queue), d_occupied_carriers(occupied_carriers),
d_byte_offset(0), d_partial_byte(0),
- d_resid(0),
d_nresid(0),d_phase(0),d_freq(0),d_phase_gain(0.25),d_freq_gain(0.25*.25*.25)
+ d_resid(0), d_nresid(0),d_phase(0),d_freq(0),
+ d_freq_gain(0.25*.25*.25),d_phase_gain(0.25),
+ d_eq_gain(0.05)
{
d_bytes_out = new unsigned char[d_occupied_carriers];
+ d_dfe.resize(occupied_carriers);
+ for(unsigned int i=0;i<occupied_carriers;i++) d_dfe[i]=1.0;
set_sym_value_out(sym_position, sym_value_out);
Modified:
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
===================================================================
---
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
2007-11-29 04:09:03 UTC (rev 7055)
+++
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h
2007-11-29 21:47:42 UTC (rev 7056)
@@ -73,6 +73,7 @@
std::vector<gr_complex> d_sym_position;
std::vector<unsigned char> d_sym_value_out;
+ std::vector<gr_complex> d_dfe;
unsigned int d_nbits;
unsigned char d_resid;
@@ -81,6 +82,7 @@
float d_freq;
float d_freq_gain;
float d_phase_gain;
+ float d_eq_gain;
protected:
gr_ofdm_frame_sink(const std::vector<gr_complex> &sym_position,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7056 - gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/lib/general,
n4hy <=