[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4604 - gnuradio/branches/developers/n4hy/ofdm/gnuradi
From: |
trondeau |
Subject: |
[Commit-gnuradio] r4604 - gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm |
Date: |
Thu, 22 Feb 2007 22:49:01 -0700 (MST) |
Author: trondeau
Date: 2007-02-22 22:49:00 -0700 (Thu, 22 Feb 2007)
New Revision: 4604
Modified:
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/benchmark_ofdm.py
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm.py
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/transmit_path.py
Log:
A little hackery to get multipath channel and known symbols into the OFDM
frames.
Modified:
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/benchmark_ofdm.py
===================================================================
---
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/benchmark_ofdm.py
2007-02-23 05:48:13 UTC (rev 4603)
+++
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/benchmark_ofdm.py
2007-02-23 05:49:00 UTC (rev 4604)
@@ -50,6 +50,14 @@
gr.hier_block.__init__(self, fg, self.input, self.noise_adder)
+class multipath_channel(gr.hier_block):
+ def __init__(self, fg):
+
+ self.taps = [1.0, .2, 0.0, .1, .08, -.4, .12, -.2, 0, 0, 0, .3]
+ self.chan = gr.fir_filter_ccc(1, self.taps)
+
+ gr.hier_block.__init__(self, fg, self.chan, self.chan)
+
class my_graph(gr.flow_graph):
def __init__(self, callback, options):
gr.flow_graph.__init__(self)
@@ -70,8 +78,12 @@
if channel_on:
self.channel = awgn_channel(self, options.sample_rate,
noise_voltage, frequency_offset)
- self.connect(self.txpath, self.throttle, self.channel)
+ self.multipath = multipath_channel(self)
+
+ self.connect(self.txpath, self.throttle, self.multipath,
self.channel)
+ #self.connect(self.txpath, self.throttle, self.channel)
self.connect(self.channel, self.rxpath)
+ self.connect(self.txpath, gr.file_sink(gr.sizeof_gr_complex,
"tx_ofdm.dat"))
else:
self.connect(self.txpath, self.throttle, self.rxpath)
self.connect(self.txpath, gr.file_sink(gr.sizeof_gr_complex, "tx"))
@@ -137,9 +149,13 @@
n = 0
pktno = 0
pkt_size = int(options.size)
+
+
while n < nbytes:
- pkt_contents = struct.pack('!H', pktno) + (pkt_size - 2) * chr(pktno &
0xff)
+ r = ''.join([chr(random.randint(0,255)) for i in range(pkt_size-2)])
+ #pkt_contents = struct.pack('!H', pktno) + (pkt_size - 2) * chr(pktno
& 0xff)
+ pkt_contents = struct.pack('!H', pktno) + r
send_pkt(pkt_contents)
n += pkt_size
#sys.stderr.write('.')
@@ -150,8 +166,11 @@
send_pkt(eof=True)
fg.wait() # wait for it to finish
+
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
+
+
Modified:
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm.py
===================================================================
---
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm.py
2007-02-23 05:48:13 UTC (rev 4603)
+++
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm.py
2007-02-23 05:49:00 UTC (rev 4604)
@@ -43,7 +43,12 @@
win = [] #[1 for i in range(self._fft_length)]
- self.ofdm = gr.ofdm_bpsk_mapper(self._mtu, self._occupied_tones,
self._fft_length)
+ # hard-coded known symbol
+ #ks = self._occupied_tones*[1,]
+ ks1 = known_symbols_200_1
+ ks2 = known_symbols_200_2
+
+ self.ofdm = gr.ofdm_bpsk_mapper(self._mtu, self._occupied_tones,
self._fft_length, ks1, ks2)
self.ifft = gr.fft_vcc(self._fft_length, False, win, True)
self.cp_adder = gr.ofdm_cyclic_prefixer(self._fft_length,
symbol_length)
@@ -100,17 +105,23 @@
win = [1 for i in range(self._fft_length)]
+ # hard-coded known symbol
+ ks1 = known_symbols_200_1
+ ks2 = known_symbols_200_2
+
# ML Sync
self.ofdm_sync = ofdm_receiver(self.fg, self._fft_length,
symbol_length, self._snr)
# OFDM Demod
self.fft_demod = gr.fft_vcc(self._fft_length, True, win, True)
- self.ofdm_demod = gr.ofdm_bpsk_demapper(self._occupied_tones,
self._fft_length)
+ self.ofdm_corr = gr.ofdm_correlator(self._occupied_tones,
self._fft_length, ks1, ks2)
+ self.ofdm_demod = gr.ofdm_bpsk_demapper(self._occupied_tones)
+
if options.verbose:
self._print_verbage()
- self.fg.connect(self.ofdm_sync, self.fft_demod, self.ofdm_demod)
+ self.fg.connect(self.ofdm_sync, self.fft_demod, self.ofdm_corr,
self.ofdm_demod)
gr.hier_block.__init__(self, self.fg, self.ofdm_sync, self.ofdm_demod)
def bits_per_symbol(self=None): # staticmethod that's also callable on
an instance
@@ -138,3 +149,12 @@
print "FFT length: %3d" % (self._fft_length)
print "Occupied Tones: %3d" % (self._occupied_tones)
print "CP length: %3d" % (self._cp_length)
+
+
+# generated in python using:
+# import random
+# pn = [2.0*random.randint(0,1)-1.0 for i in range(self._occupied_tones)]
+
+known_symbols_200_1 = [1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0,
-1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0,
-1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0,
1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0,
1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0,
-1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0,
-1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0,
-1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0,
-1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0,
-1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0,
1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0,
-1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0,
-1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0,
-1.0, 1.0, 1.0, -1.0]
+
+known_symbols_200_2 = [-1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0,
1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0,
1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0,
-1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
-1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0,
-1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0,
-1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, -1.0, 1.0,
1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0,
-1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0,
-1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0,
1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0,
1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0,
1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0,
1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0]
Modified:
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/transmit_path.py
===================================================================
---
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/transmit_path.py
2007-02-23 05:48:13 UTC (rev 4603)
+++
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/transmit_path.py
2007-02-23 05:49:00 UTC (rev 4604)
@@ -43,7 +43,7 @@
self._verbose = options.verbose
self._tx_amplitude = options.tx_amplitude # digital amplitude sent
to USRP
-
+
self.ofdm_mod = ofdm.ofdm_mod(fg, options)
self.packet_transmitter = \
blks.mod_ofdm_pkts(fg,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4604 - gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm,
trondeau <=