commit-gnuradio
[Top][All Lists]
Advanced

[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, 





reply via email to

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