commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r7314 - gnuradio/branches/developers/trondeau/ofdm2/gn


From: trondeau
Subject: [Commit-gnuradio] r7314 - gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl
Date: Tue, 1 Jan 2008 06:45:50 -0700 (MST)

Author: trondeau
Date: 2008-01-01 06:45:49 -0700 (Tue, 01 Jan 2008)
New Revision: 7314

Modified:
   
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py
   
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_receiver.py
   
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_sync_pn.py
Log:
wip - removing two of the three preambles. Frame acquisition and 
synchronization work off one symbol. Frame acq uses frequency-domain symbol and 
sync uses time domain symbol, so the IFFT process on the known-symbol was moved 
into ofdm_receiver. A secondary output was added to the sync blocks (only in 
the PN and fixed versions currently) that signals to the ofdm_frame_sink when 
the preamble is seen.

Modified: 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py
===================================================================
--- 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py
     2008-01-01 13:29:21 UTC (rev 7313)
+++ 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm.py
     2008-01-01 13:45:49 UTC (rev 7314)
@@ -21,7 +21,6 @@
 # 
 
 import math
-from numpy import fft
 from gnuradio import gr, ofdm_packet_utils
 import gnuradio.gr.gr_threading as _threading
 import psk, qam
@@ -73,9 +72,9 @@
                 ksfreq[i] = 0
 
         # hard-coded known symbols
-        preambles = (ksfreq,
-                     known_symbols_4512_1[0:self._occupied_tones],
-                     known_symbols_4512_2[0:self._occupied_tones])
+        preambles = (ksfreq,)
+#                     known_symbols_4512_1[0:self._occupied_tones],
+#                     known_symbols_4512_2[0:self._occupied_tones])
                 
         padded_preambles = list()
         for pre in preambles:
@@ -115,6 +114,8 @@
         if options.log:
             self.connect(self._pkt_input, 
gr.file_sink(gr.sizeof_gr_complex*options.fft_length,
                                                        "ofdm_mapper_c.dat"))
+            self.connect(self.preambles, 
gr.file_sink(gr.sizeof_gr_complex*options.fft_length,
+                                                      "ofdm_preambles.dat"))
             self.connect(self.ifft, 
gr.file_sink(gr.sizeof_gr_complex*options.fft_length,
                                                  "ofdm_ifft_c.dat"))
             self.connect(self.cp_adder, gr.file_sink(gr.sizeof_gr_complex,
@@ -203,20 +204,10 @@
             if(i&1):
                 ksfreq[i] = 0        
 
-        zeros_on_left = int(math.ceil((self._fft_length - 
self._occupied_tones)/2.0))
-        zeros_on_right = self._fft_length - self._occupied_tones - 
zeros_on_left
-        ks0 = zeros_on_left*[0.0,]
-        ks0.extend(ksfreq)
-        ks0.extend(zeros_on_right*[0.0,])
-        
-        ks0time = fft.ifft(ks0)
-        # ADD SCALING FACTOR
-        ks0time = ks0time.tolist()
-
         # hard-coded known symbols
-        preambles = (ks0time,
-                     known_symbols_4512_1[0:self._occupied_tones],
-                     known_symbols_4512_2[0:self._occupied_tones])
+        preambles = (ksfreq,)
+                     #known_symbols_4512_1[0:self._occupied_tones],
+                     #known_symbols_4512_2[0:self._occupied_tones])
         
         symbol_length = self._fft_length + self._cp_length
         self.ofdm_recv = ofdm_receiver(self._fft_length, self._cp_length,

Modified: 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_receiver.py
===================================================================
--- 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_receiver.py
    2008-01-01 13:29:21 UTC (rev 7313)
+++ 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_receiver.py
    2008-01-01 13:45:49 UTC (rev 7314)
@@ -21,10 +21,12 @@
 # 
 
 import math
+from numpy import fft
 from gnuradio import gr
 from gnuradio.blks2impl.ofdm_sync_ml import ofdm_sync_ml
 from gnuradio.blks2impl.ofdm_sync_pn import ofdm_sync_pn
 from gnuradio.blks2impl.ofdm_sync_pnac import ofdm_sync_pnac
+from gnuradio.blks2impl.ofdm_sync_fixed import ofdm_sync_fixed
 
 class ofdm_receiver(gr.hier_block2):
     """
@@ -72,20 +74,33 @@
         
         win = [1 for i in range(fft_length)]
 
+        zeros_on_left = int(math.ceil((fft_length - occupied_tones)/2.0))
+        zeros_on_right = fft_length - occupied_tones - zeros_on_left
+        ks0 = zeros_on_left*[0.0,]
+        ks0.extend(ks[0])
+        ks0.extend(zeros_on_right*[0.0,])
+        
+        ks0time = fft.ifft(ks0)
+        # ADD SCALING FACTOR
+        ks0time = ks0time.tolist()
+        
         SYNC = "pn"
         if SYNC == "ml":
             self.ofdm_sync = ofdm_sync_ml(fft_length, cp_length, snr, logging)
         elif SYNC == "pn":
             self.ofdm_sync = ofdm_sync_pn(fft_length, cp_length, logging)
         elif SYNC == "pnac":
-            self.ofdm_sync = ofdm_sync_pnac(fft_length, cp_length, ks[0])
+            self.ofdm_sync = ofdm_sync_pnac(fft_length, cp_length, ks0time)
+        elif SYNC == "fixed":
+            self.ofdm_sync = ofdm_sync_fixed(fft_length, cp_length, logging)
                         
         self.fft_demod = gr.fft_vcc(fft_length, True, win, True)
         self.ofdm_frame_acq = gr.ofdm_frame_acquisition(occupied_tones, 
fft_length,
-                                                        cp_length, ks[1], 
ks[2])
+                                                        cp_length, ks[0])
 
         self.connect(self, self.chan_filt)
-        self.connect(self.chan_filt, self.ofdm_sync, self.fft_demod, 
self.ofdm_frame_acq)
+        self.connect(self.chan_filt, self.ofdm_sync, self.fft_demod, 
(self.ofdm_frame_acq,0))
+        self.connect((self.ofdm_sync,1), (self.ofdm_frame_acq,1))
         self.connect((self.ofdm_frame_acq,0), (self,0))
         self.connect((self.ofdm_frame_acq,1), (self,1))
 

Modified: 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_sync_pn.py
===================================================================
--- 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_sync_pn.py
     2008-01-01 13:29:21 UTC (rev 7313)
+++ 
gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl/ofdm_sync_pn.py
     2008-01-01 13:45:49 UTC (rev 7314)
@@ -35,7 +35,7 @@
         
        gr.hier_block2.__init__(self, "ofdm_sync_pn",
                                gr.io_signature(1, 1, gr.sizeof_gr_complex), # 
Input signature
-                               gr.io_signature(1, 1, 
gr.sizeof_gr_complex*fft_length)) # Output signature
+                               gr.io_signature2(2, 2, 
gr.sizeof_gr_complex*fft_length, gr.sizeof_char)) # Output signature
 
         # FIXME: when converting to hier_block2's, the output signature
         # should be the output of the divider (the normalized peaks) and
@@ -87,11 +87,13 @@
 
         #ML measurements input to sampler block and detect
         self.sub1 = gr.add_const_ff(-1)
-        self.pk_detect = gr.peak_detector_fb(0.2, 0.25, 30, 0.0005)
+        self.pk_detect = gr.peak_detector_fb(0.20, 0.20, 30, 0.001)
         #self.pk_detect = gr.peak_detector2_fb()
         #self.pk_detect = gr.threshold_detector_fb(0.5)
         self.regen = gr.regenerate_bb(symbol_length)
 
+        # FIXME: If sampler doesn't get proper input, it can completely
+        # stall the flowgraph.
         self.sampler = gr.ofdm_sampler(fft_length,symbol_length)
 
         self.connect(self, self.input)
@@ -127,9 +129,9 @@
         self.connect(self.pk_detect, (self.sample_and_hold,1))
 
         # Set output from sampler
-        self.connect(self.sampler, self)
+        self.connect(self.sampler, (self,0))
+        self.connect(self.pk_detect, (self,1))
 
-
         if logging:
             self.connect(self.matched_filter, gr.file_sink(gr.sizeof_float, 
"ofdm_sync_pn-mf_f.dat"))
             self.connect(self.normalize, gr.file_sink(gr.sizeof_float, 
"ofdm_sync_pn-theta_f.dat"))





reply via email to

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