commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r4148 - gnuradio/branches/developers/n4hy/ofdm/gnuradi


From: trondeau
Subject: [Commit-gnuradio] r4148 - gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general
Date: Mon, 18 Dec 2006 23:32:18 -0700 (MST)

Author: trondeau
Date: 2006-12-18 23:32:17 -0700 (Mon, 18 Dec 2006)
New Revision: 4148

Modified:
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.cc
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_sampler.cc
Log:
improvements to OFDM code to handle odd and even number of FFT bins

Modified: 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.cc
===================================================================
--- 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.cc
       2006-12-19 01:14:44 UTC (rev 4147)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.cc
       2006-12-19 06:32:17 UTC (rev 4148)
@@ -64,13 +64,21 @@
   
   unsigned int i=0, j=0;
 
-  for(i=0;i<ceil(d_bits_per_symbol/2);i++) {
-    unsigned int k=ceil(d_bits_per_symbol/2);
+  for(i=0;i<ceil(d_bits_per_symbol/2.0);i++) {
+    unsigned int k=ceil(d_bits_per_symbol/2.0);
     out[i+k] = slicer(in[i]);
   }
   for(i+=(d_vlen-d_bits_per_symbol);i<d_vlen;i++,j++) {
     out[j]= slicer(in[i]);
   }
 
+#if 0
+printf("demod out: ");
+  for(i = 0; i < d_bits_per_symbol; i++) {
+    printf("%d", out[i]);
+  }
+  printf(" %d\n", i);
+#endif
+
   return d_bits_per_symbol;
 }

Modified: 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
===================================================================
--- 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
 2006-12-19 01:14:44 UTC (rev 4147)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_bpsk_mapper.cc
 2006-12-19 06:32:17 UTC (rev 4148)
@@ -62,11 +62,11 @@
   unsigned int right = d_vlen - d_bits_per_symbol-left;
   unsigned int i;
 
-  for(i=0;i<ceil(d_bits_per_symbol/2);i++) {
-    unsigned int k=ceil(d_bits_per_symbol/2);
+  for(i=0;i<ceil(d_bits_per_symbol/2.0);i++) {
+    unsigned int k=ceil(d_bits_per_symbol/2.0);
     out[i] = gr_complex(-1+2*in[i+k],0);
   }
-  for(;i<d_vlen - floor(d_bits_per_symbol/2);i++) {
+  for(;i<d_vlen - ceil(d_bits_per_symbol/2.0);i++) {
     out[i]=gr_complex(0,0);
   }
   for(unsigned int j=0;i<d_vlen;i++,j++) {

Modified: 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_sampler.cc
===================================================================
--- 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_sampler.cc
     2006-12-19 01:14:44 UTC (rev 4147)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-core/src/lib/general/gr_ofdm_sampler.cc
     2006-12-19 06:32:17 UTC (rev 4148)
@@ -79,14 +79,26 @@
   while(i<d_symbol_length+d_fft_length && (found==0)) {
     if( (theta[i].real() > d_avg*0.10) &&
        (theta[i].real() > theta[i+1].real()) ) {
-      //      fprintf(stderr,"%d: %f 
%f\n",i,theta[i].real(),epsilon[i].real());
       found = 1;
-      d_freq = epsilon[i].real() / d_fft_length;
-      for(unsigned int j=0;j<d_fft_length;j++) {
-       d_phase += d_freq;
-       gr_complex nco = gr_expj(-d_phase);
-       *optr++ = nco * iptr[i-d_fft_length+j+1];
+      for(unsigned int j=1; j < 10; j++) {
+       if(theta[i+j].real() > theta[i].real()) {
+         found = 0;
+         d_phase += d_freq;
+         i++;
+         break;
+       }
       }
+      
+      if(found) {
+       fprintf(stderr,"%d %f\n",i,theta[i].real());     
+
+       d_freq = epsilon[i].real() / d_fft_length;
+       for(unsigned int j=0;j<d_fft_length;j++) {
+         d_phase += d_freq;
+         gr_complex nco = gr_expj(-d_phase);
+         *optr++ = nco * iptr[i-d_fft_length+j+1];
+       }
+      }
     }
     else {
       d_phase += d_freq;





reply via email to

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