commit-gnuradio
[Top][All Lists]
Advanced

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

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


From: trondeau
Subject: [Commit-gnuradio] r4548 - gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm
Date: Tue, 20 Feb 2007 15:21:26 -0700 (MST)

Author: trondeau
Date: 2007-02-20 15:21:25 -0700 (Tue, 20 Feb 2007)
New Revision: 4548

Modified:
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/benchmark_ofdm.py
   
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm_receiver.py
Log:
work in progress

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-20 22:21:15 UTC (rev 4547)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/benchmark_ofdm.py
      2007-02-20 22:21:25 UTC (rev 4548)
@@ -37,10 +37,10 @@
     def __init__(self, fg, sample_rate, noise_voltage, frequency_offset):
 
         self.input = gr.add_const_cc(0)
-        
+
         self.noise_adder = gr.add_cc()
         self.noise = gr.noise_source_c(gr.GR_GAUSSIAN,noise_voltage)
-        self.offset = gr.sig_source_c((sample_rate*1.0), gr.GR_SIN_WAVE, 
frequency_offset, 1.0, 0.0)
+        self.offset = gr.sig_source_c(1, gr.GR_SIN_WAVE, frequency_offset, 
1.0, 0.0)
         self.mixer_offset = gr.multiply_cc()
 
         fg.connect(self.input, (self.mixer_offset,0))
@@ -57,7 +57,7 @@
         channel_on = True
 
         SNR = 10.0**(options.snr/10.0)
-        frequency_offset = options.frequency_offset
+        frequency_offset = options.frequency_offset / options.fft_length
         
         power_in_signal = options.occupied_tones
         noise_power_in_channel = power_in_signal/SNR

Modified: 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm_receiver.py
===================================================================
--- 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm_receiver.py
       2007-02-20 22:21:15 UTC (rev 4547)
+++ 
gnuradio/branches/developers/n4hy/ofdm/gnuradio-examples/python/ofdm/ofdm_receiver.py
       2007-02-20 22:21:25 UTC (rev 4548)
@@ -84,21 +84,32 @@
         self.fg.connect(self.moving_sum_filter,(self.diff,1))
 
         #ML measurements input to sampler block and detect
-        self.sampler = gr.ofdm_sampler(fft_length,symbol_length,1)
+        self.f2c = gr.float_to_complex()
+        self.sampler = gr.ofdm_sampler(fft_length,symbol_length)
+        self.pkt_detect = gr.peak_detector_ff()
+        self.sample_and_hold = gr.sample_and_hold_ff()
+        self.nco = gr.frequency_modulator_fc((1/(2*math.pi))/fft_length) 
#gr.vco_f(1, (1/(2*math.pi))/fft_length, 1)
+        self.sigmix = gr.multiply_cc()
 
-        self.f2c1 = gr.float_to_complex()
-        self.f2c2 = gr.float_to_complex()
+        # Mix the signal with an NCO controlled by the sync loop
+        self.fg.connect(self.input, (self.sigmix,0))
+        self.fg.connect(self.nco, (self.sigmix,1))
+        self.fg.connect(self.sigmix, (self.sampler,0))
 
-        # Connect inputs to OFDM sampler:
-        #   1: stream to get downconverted to baseband
-        #   2: output of difference block (theta)
-        #   3: frequency error estimate (epsilon)
-        self.fg.connect(self.input, (self.sampler,0))
-        self.fg.connect(self.diff, self.f2c1,(self.sampler,1))
-        self.fg.connect(self.angle, self.f2c2,(self.sampler,2))
+        # use the sync loop values to set the sampler and the NCO
+        # diff = theta
+        # angle = epsilon
+        self.fg.connect(self.diff, self.pkt_detect)
+        self.fg.connect(self.pkt_detect, self.f2c, (self.sampler,1))
+        self.fg.connect(self.pkt_detect, (self.sample_and_hold,1))
+        self.fg.connect(self.angle, (self.sample_and_hold,0))
+        self.fg.connect(self.sample_and_hold, self.nco)
 
-        if 0:
-            self.fg.connect(self.diff, gr.file_sink(gr.sizeof_float, 
"ofdmrx_theta_f.dat"))
-            self.fg.connect(self.angle, gr.file_sink(gr.sizeof_float, 
"ofdmrx_epsilon_f.dat"))
-            
+        if 1:
+            self.fg.connect(self.diff, gr.file_sink(gr.sizeof_float, 
"theta_f.dat"))
+            self.fg.connect(self.angle, gr.file_sink(gr.sizeof_float, 
"epsilon_f.dat"))
+            self.fg.connect(self.pkt_detect, gr.file_sink(gr.sizeof_float, 
"peaks_f.dat"))
+            self.fg.connect(self.sample_and_hold, 
gr.file_sink(gr.sizeof_float, "sample_and_hold_f.dat"))
+            self.fg.connect(self.nco, gr.file_sink(gr.sizeof_gr_complex, 
"nco_c.dat"))
+        
         gr.hier_block.__init__(self, fg, self.input, self.sampler)





reply via email to

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