[Top][All Lists]
[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"))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7314 - gnuradio/branches/developers/trondeau/ofdm2/gnuradio-core/src/python/gnuradio/blks2impl,
trondeau <=