diff options
Diffstat (limited to 'python/misc_utils/clock_offset_corrector.py')
-rw-r--r-- | python/misc_utils/clock_offset_corrector.py | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/python/misc_utils/clock_offset_corrector.py b/python/misc_utils/clock_offset_corrector.py index 807e6cc..0633ae5 100644 --- a/python/misc_utils/clock_offset_corrector.py +++ b/python/misc_utils/clock_offset_corrector.py @@ -3,7 +3,7 @@ # Gnuradio Python Flow Graph # Title: Clock offset corrector # Author: Piotr Krysik -# Generated: Wed Aug 13 16:43:12 2014 +# Generated: Thu Nov 6 10:22:24 2014 ################################################## from gnuradio import blocks @@ -15,7 +15,7 @@ import math class clock_offset_corrector(gr.hier_block2): - def __init__(self, fc=936.6e6, ppm=0, samp_rate_in=1625000.0/6.0*4.0, samp_rate_out=1625000.0/6.0*4.0): + def __init__(self, fc=936.6e6, samp_rate_in=1625000.0/6.0*4.0, samp_rate_out=1625000.0/6.0*4.0, ppm=0): gr.hier_block2.__init__( self, "Clock offset corrector", gr.io_signature(1, 1, gr.sizeof_gr_complex*1), @@ -26,9 +26,9 @@ class clock_offset_corrector(gr.hier_block2): # Parameters ################################################## self.fc = fc - self.ppm = ppm self.samp_rate_in = samp_rate_in self.samp_rate_out = samp_rate_out + self.ppm = ppm ################################################## # Blocks @@ -36,7 +36,8 @@ class clock_offset_corrector(gr.hier_block2): self.ppm_in = None;self.message_port_register_hier_out("ppm_in") self.gsm_controlled_rotator_cc_0 = gsm.controlled_rotator_cc(0,samp_rate_out) self.gsm_controlled_const_source_f_0 = gsm.controlled_const_source_f(ppm) - self.fractional_resampler_xx_0 = filter.fractional_resampler_cc(0, 1) + self.fractional_resampler_xx_0_0 = filter.fractional_resampler_ff(0, samp_rate_in/samp_rate_out) + self.fractional_resampler_xx_0 = filter.fractional_resampler_cc(0, samp_rate_in/samp_rate_out) self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vff((1.0e-6*samp_rate_in/samp_rate_out, )) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((fc/samp_rate_out*(2*math.pi)/1e6, )) self.blocks_add_const_vxx_0 = blocks.add_const_vff((samp_rate_in/samp_rate_out, )) @@ -44,14 +45,16 @@ class clock_offset_corrector(gr.hier_block2): ################################################## # Connections ################################################## - self.connect((self.blocks_add_const_vxx_0, 0), (self.fractional_resampler_xx_0, 1)) - self.connect((self.blocks_multiply_const_vxx_0, 0), (self.gsm_controlled_rotator_cc_0, 1)) - self.connect((self.fractional_resampler_xx_0, 0), (self.gsm_controlled_rotator_cc_0, 0)) - self.connect((self.gsm_controlled_rotator_cc_0, 0), (self, 0)) + self.connect((self.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self, 0), (self.fractional_resampler_xx_0, 0)) - self.connect((self.blocks_multiply_const_vxx_0_0, 0), (self.blocks_add_const_vxx_0, 0)) + self.connect((self.blocks_multiply_const_vxx_0, 0), (self.fractional_resampler_xx_0_0, 0)) + self.connect((self.blocks_add_const_vxx_0, 0), (self.fractional_resampler_xx_0_0, 1)) + self.connect((self.gsm_controlled_rotator_cc_0, 0), (self, 0)) + self.connect((self.fractional_resampler_xx_0, 0), (self.gsm_controlled_rotator_cc_0, 0)) + self.connect((self.blocks_add_const_vxx_0, 0), (self.fractional_resampler_xx_0, 1)) self.connect((self.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0_0, 0)) - self.connect((self.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0, 0)) + self.connect((self.blocks_multiply_const_vxx_0_0, 0), (self.blocks_add_const_vxx_0, 0)) + self.connect((self.fractional_resampler_xx_0_0, 0), (self.gsm_controlled_rotator_cc_0, 1)) ################################################## # Asynch Message Connections @@ -66,28 +69,32 @@ class clock_offset_corrector(gr.hier_block2): self.fc = fc self.blocks_multiply_const_vxx_0.set_k((self.fc/self.samp_rate_out*(2*math.pi)/1e6, )) - def get_ppm(self): - return self.ppm - - def set_ppm(self, ppm): - self.ppm = ppm - self.gsm_controlled_const_source_f_0.set_constant(self.ppm) - def get_samp_rate_in(self): return self.samp_rate_in def set_samp_rate_in(self, samp_rate_in): self.samp_rate_in = samp_rate_in - self.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, )) + self.fractional_resampler_xx_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out) + self.fractional_resampler_xx_0_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out) self.blocks_multiply_const_vxx_0_0.set_k((1.0e-6*self.samp_rate_in/self.samp_rate_out, )) + self.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, )) def get_samp_rate_out(self): return self.samp_rate_out def set_samp_rate_out(self, samp_rate_out): self.samp_rate_out = samp_rate_out + self.fractional_resampler_xx_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out) + self.gsm_controlled_rotator_cc_0.set_samp_rate(self.samp_rate_out) self.blocks_multiply_const_vxx_0.set_k((self.fc/self.samp_rate_out*(2*math.pi)/1e6, )) - self.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, )) + self.fractional_resampler_xx_0_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out) self.blocks_multiply_const_vxx_0_0.set_k((1.0e-6*self.samp_rate_in/self.samp_rate_out, )) - self.gsm_controlled_rotator_cc_0.set_samp_rate(self.samp_rate_out) + self.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, )) + + def get_ppm(self): + return self.ppm + + def set_ppm(self, ppm): + self.ppm = ppm + self.gsm_controlled_const_source_f_0.set_constant(self.ppm) |