Changes in clock offset corrector and gsm_input - the previous version wasn't working well when samp_rate_in was different from samp_rate_out.
Now resampling is done outside of clock offset corrector.
This commit is contained in:
parent
7a7b9b0a3a
commit
381253a1d2
|
@ -1,4 +1,3 @@
|
|||
<?xml version='1.0' encoding='ASCII'?>
|
||||
<block>
|
||||
<name>Clock offset corrector</name>
|
||||
<key>gsm_clock_offset_corrector</key>
|
||||
|
@ -7,34 +6,26 @@
|
|||
fc=$fc,
|
||||
ppm=$ppm,
|
||||
samp_rate_in=$samp_rate_in,
|
||||
samp_rate_out=$samp_rate_out,
|
||||
)</make>
|
||||
<callback>set_fc($fc)</callback>
|
||||
<callback>set_ppm($ppm)</callback>
|
||||
<callback>set_samp_rate_in($samp_rate_in)</callback>
|
||||
<callback>set_samp_rate_out($samp_rate_out)</callback>
|
||||
<param>
|
||||
<name>fc</name>
|
||||
<key>fc</key>
|
||||
<value>936.6e6</value>
|
||||
<value>fc</value>
|
||||
<type>float</type>
|
||||
</param>
|
||||
<param>
|
||||
<name>ppm</name>
|
||||
<key>ppm</key>
|
||||
<value>0</value>
|
||||
<type>int</type>
|
||||
<value>ppm</value>
|
||||
<type>float</type>
|
||||
</param>
|
||||
<param>
|
||||
<name>samp_rate_in</name>
|
||||
<key>samp_rate_in</key>
|
||||
<value>1625000.0/6.0*4.0</value>
|
||||
<type>float</type>
|
||||
</param>
|
||||
<param>
|
||||
<name>samp_rate_out</name>
|
||||
<key>samp_rate_out</key>
|
||||
<value>1625000.0/6.0*4.0</value>
|
||||
<value>samp_rate_in</value>
|
||||
<type>float</type>
|
||||
</param>
|
||||
<sink>
|
||||
|
@ -53,5 +44,4 @@
|
|||
<vlen>1</vlen>
|
||||
</source>
|
||||
<doc>Piotr Krysik</doc>
|
||||
<!-- <grc_source></grc_source> -->
|
||||
</block>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
<?xml version='1.0' encoding='ASCII'?>
|
||||
<block>
|
||||
<name>GSM input adaptor</name>
|
||||
<key>gsm_input</key>
|
||||
|
@ -6,40 +5,40 @@
|
|||
<import>import gsm</import>
|
||||
<make>gsm.gsm_input(
|
||||
ppm=$ppm,
|
||||
fc=$fc,
|
||||
osr=$osr,
|
||||
fc=$fc,
|
||||
samp_rate_in=$samp_rate_in,
|
||||
)</make>
|
||||
<callback>set_ppm($ppm)</callback>
|
||||
<callback>set_fc($fc)</callback>
|
||||
<callback>set_osr($osr)</callback>
|
||||
<callback>set_fc($fc)</callback>
|
||||
<callback>set_samp_rate_in($samp_rate_in)</callback>
|
||||
<param>
|
||||
<name>ppm</name>
|
||||
<key>ppm</key>
|
||||
<value>0</value>
|
||||
<type>raw</type>
|
||||
<value>ppm</value>
|
||||
<type>float</type>
|
||||
<hide>part</hide>
|
||||
</param>
|
||||
<param>
|
||||
<name>OSR</name>
|
||||
<key>osr</key>
|
||||
<value>osr</value>
|
||||
<type>int</type>
|
||||
<hide>part</hide>
|
||||
</param>
|
||||
<param>
|
||||
<name>fc</name>
|
||||
<key>fc</key>
|
||||
<value>fc</value>
|
||||
<type>raw</type>
|
||||
<hide>part</hide>
|
||||
</param>
|
||||
<param>
|
||||
<name>OSR</name>
|
||||
<key>osr</key>
|
||||
<value>4</value>
|
||||
<type>raw</type>
|
||||
<type>float</type>
|
||||
<hide>part</hide>
|
||||
</param>
|
||||
<param>
|
||||
<name>samp_rate_in</name>
|
||||
<key>samp_rate_in</key>
|
||||
<value>samp_rate</value>
|
||||
<type>raw</type>
|
||||
<value>samp_rate_in</value>
|
||||
<type>float</type>
|
||||
<hide>part</hide>
|
||||
</param>
|
||||
<sink>
|
||||
|
@ -58,7 +57,5 @@
|
|||
<vlen>1</vlen>
|
||||
</source>
|
||||
<doc>Piotr Krysik
|
||||
Adaptor of input stream for the GSM receiver. Contains frequency ofset corrector doing also resampling to integer multiplies of GSM sample rate and LP filter filtering GSM channel.
|
||||
/home/piotr/.grc_gnuradio/gsm_input.py</doc>
|
||||
<grc_source>/home/piotr/Odbiornik_gsm/Dodanie_wielokanalowosci/demonstration (without data)/gsminput.grc</grc_source>
|
||||
Adaptor of input stream for the GSM receiver. Contains frequency offset corrector and resampler to correct carrier frequency and sampling frequency offsets. At the end it has LP filter for filtering of a GSM channel.</doc>
|
||||
</block>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version='1.0' encoding='ASCII'?>
|
||||
<?grc format='1' created='3.7.6'?>
|
||||
<flow_graph>
|
||||
<timestamp>Thu Nov 6 10:22:20 2014</timestamp>
|
||||
<block>
|
||||
|
@ -28,6 +29,33 @@
|
|||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>variable</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>samp_rate_out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>value</key>
|
||||
<value>samp_rate_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(736, 19)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>parameter</key>
|
||||
<param>
|
||||
|
@ -67,6 +95,84 @@
|
|||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_source_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(14, 299)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>parameter</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>ppm</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>ppm</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>value</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>eng_float</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>short_id</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(496, 19)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>parameter</key>
|
||||
<param>
|
||||
|
@ -114,7 +220,7 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
|
@ -146,10 +252,10 @@
|
|||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_sink</key>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_sink_1</value>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
|
@ -157,11 +263,11 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>out</value>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
<value>message</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
|
@ -173,11 +279,11 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(1184, 333)</value>
|
||||
<value>(16, 219)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
|
@ -188,15 +294,15 @@
|
|||
<key>fractional_resampler_xx</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>fractional_resampler_xx_0</value>
|
||||
<value>fractional_resampler_xx_0_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
<value>float</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>phase_shift</key>
|
||||
|
@ -224,89 +330,7 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(721, 303)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_source_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(14, 299)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>gsm_controlled_rotator_cc</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>gsm_controlled_rotator_cc_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>phase_inc</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate</key>
|
||||
<value>samp_rate_out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(968, 320)</value>
|
||||
<value>(712, 144)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
|
@ -353,7 +377,7 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(435, 216)</value>
|
||||
<value>(416, 219)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
|
@ -364,7 +388,7 @@
|
|||
<key>fractional_resampler_xx</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>fractional_resampler_xx_0_0</value>
|
||||
<value>fractional_resampler_xx_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
|
@ -372,7 +396,7 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>float</value>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>phase_shift</key>
|
||||
|
@ -400,124 +424,7 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(721, 220)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>gsm_controlled_const_source_f</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>gsm_controlled_const_source_f_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>constant</key>
|
||||
<value>ppm</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(182, 216)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>message</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(13, 216)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>parameter</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>ppm</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>ppm</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>value</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>eng_float</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>short_id</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(496, 19)</value>
|
||||
<value>(704, 304)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
|
@ -564,7 +471,128 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(410, 333)</value>
|
||||
<value>(392, 331)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_sink</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_sink_1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(1112, 331)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>gsm_controlled_rotator_cc</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>gsm_controlled_rotator_cc_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>phase_inc</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate</key>
|
||||
<value>samp_rate_out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(928, 320)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>gsm_controlled_const_source_f</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>gsm_controlled_const_source_f_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>constant</key>
|
||||
<value>ppm</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(168, 219)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
|
@ -611,7 +639,7 @@
|
|||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(571, 333)</value>
|
||||
<value>(552, 331)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
|
@ -687,12 +715,6 @@
|
|||
<source_key>0</source_key>
|
||||
<sink_key>constant_msg</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_controlled_const_source_f_0</source_block_id>
|
||||
<sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>pad_source_0</source_block_id>
|
||||
<sink_block_id>fractional_resampler_xx_0</sink_block_id>
|
||||
|
@ -711,12 +733,6 @@
|
|||
<source_key>0</source_key>
|
||||
<sink_key>1</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_controlled_rotator_cc_0</source_block_id>
|
||||
<sink_block_id>pad_sink_1</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>fractional_resampler_xx_0</source_block_id>
|
||||
<sink_block_id>gsm_controlled_rotator_cc_0</sink_block_id>
|
||||
|
@ -729,12 +745,6 @@
|
|||
<source_key>0</source_key>
|
||||
<sink_key>1</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_controlled_const_source_f_0</source_block_id>
|
||||
<sink_block_id>blocks_multiply_const_vxx_0_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>blocks_multiply_const_vxx_0_0</source_block_id>
|
||||
<sink_block_id>blocks_add_const_vxx_0</sink_block_id>
|
||||
|
@ -747,4 +757,28 @@
|
|||
<source_key>0</source_key>
|
||||
<sink_key>1</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
|
||||
<sink_block_id>gsm_controlled_rotator_cc_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>1</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_controlled_rotator_cc_0</source_block_id>
|
||||
<sink_block_id>pad_sink_1</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_controlled_const_source_f_0</source_block_id>
|
||||
<sink_block_id>blocks_multiply_const_vxx_0_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_controlled_const_source_f_0</source_block_id>
|
||||
<sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
</flow_graph>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version='1.0' encoding='ASCII'?>
|
||||
<?grc format='1' created='3.7.6'?>
|
||||
<flow_graph>
|
||||
<timestamp>Thu Nov 6 14:41:06 2014</timestamp>
|
||||
<block>
|
||||
|
@ -65,38 +66,26 @@
|
|||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_sink</key>
|
||||
<key>variable</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_sink_0</value>
|
||||
<value>samp_rate_out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>out</value>
|
||||
<key>value</key>
|
||||
<value>1625000.0/6.0*osr</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(706, 213)</value>
|
||||
<value>(632, 19)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
|
@ -181,206 +170,6 @@
|
|||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>low_pass_filter</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>low_pass_filter_0_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>fir_filter_ccf</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>decim</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>interp</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate</key>
|
||||
<value>1625000.0/6.0*osr</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>cutoff_freq</key>
|
||||
<value>125e3</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>width</key>
|
||||
<value>5e3</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>win</key>
|
||||
<value>firdes.WIN_HAMMING</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>beta</key>
|
||||
<value>6.76</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(502, 165)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>message</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(91, 242)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>gsm_clock_offset_corrector</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>gsm_clock_offset_corrector_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>fc</key>
|
||||
<value>fc</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ppm</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate_in</key>
|
||||
<value>samp_rate_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate_out</key>
|
||||
<value>1625000.0/6.0*4.0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(279, 190)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_source_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(88, 197)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>parameter</key>
|
||||
<param>
|
||||
|
@ -459,6 +248,288 @@
|
|||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>low_pass_filter</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>low_pass_filter_0_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>fir_filter_ccf</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>decim</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>interp</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>gain</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate</key>
|
||||
<value>samp_rate_out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>cutoff_freq</key>
|
||||
<value>125e3</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>width</key>
|
||||
<value>5e3</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>win</key>
|
||||
<value>firdes.WIN_HAMMING</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>beta</key>
|
||||
<value>6.76</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(704, 179)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_sink</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_sink_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(904, 227)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>fractional_resampler_xx</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>fractional_resampler_xx_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>phase_shift</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>resamp_ratio</key>
|
||||
<value>samp_rate_in/samp_rate_out</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(488, 216)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>pad_source_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>complex</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>False</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(56, 179)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>pad_source</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>ppm_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>type</key>
|
||||
<value>message</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>vlen</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>num_streams</key>
|
||||
<value>1</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>optional</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(56, 243)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>gsm_clock_offset_corrector</key>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>gsm_clock_offset_corrector_0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_enabled</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>fc</key>
|
||||
<value>fc</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ppm</key>
|
||||
<value>ppm</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>samp_rate_in</key>
|
||||
<value>samp_rate_in</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>affinity</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>minoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>maxoutbuf</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(280, 195)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
</block>
|
||||
<connection>
|
||||
<source_block_id>low_pass_filter_0_0</source_block_id>
|
||||
<sink_block_id>pad_sink_0</sink_block_id>
|
||||
|
@ -466,11 +537,17 @@
|
|||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_clock_offset_corrector_0</source_block_id>
|
||||
<source_block_id>fractional_resampler_xx_0</source_block_id>
|
||||
<sink_block_id>low_pass_filter_0_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>gsm_clock_offset_corrector_0</source_block_id>
|
||||
<sink_block_id>fractional_resampler_xx_0</sink_block_id>
|
||||
<source_key>0</source_key>
|
||||
<sink_key>0</sink_key>
|
||||
</connection>
|
||||
<connection>
|
||||
<source_block_id>pad_source_0</source_block_id>
|
||||
<sink_block_id>gsm_clock_offset_corrector_0</sink_block_id>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Gnuradio Python Flow Graph
|
||||
# Title: Clock offset corrector
|
||||
# Author: Piotr Krysik
|
||||
# Generated: Thu Nov 6 10:22:24 2014
|
||||
# Generated: Wed Nov 19 08:38:40 2014
|
||||
##################################################
|
||||
|
||||
from gnuradio import blocks
|
||||
|
@ -15,7 +15,7 @@ import math
|
|||
|
||||
class clock_offset_corrector(gr.hier_block2):
|
||||
|
||||
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):
|
||||
def __init__(self, fc=936.6e6, ppm=0, samp_rate_in=1625000.0/6.0*4.0):
|
||||
gr.hier_block2.__init__(
|
||||
self, "Clock offset corrector",
|
||||
gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
|
||||
|
@ -26,9 +26,13 @@ class clock_offset_corrector(gr.hier_block2):
|
|||
# Parameters
|
||||
##################################################
|
||||
self.fc = fc
|
||||
self.samp_rate_in = samp_rate_in
|
||||
self.samp_rate_out = samp_rate_out
|
||||
self.ppm = ppm
|
||||
self.samp_rate_in = samp_rate_in
|
||||
|
||||
##################################################
|
||||
# Variables
|
||||
##################################################
|
||||
self.samp_rate_out = samp_rate_out = samp_rate_in
|
||||
|
||||
##################################################
|
||||
# Blocks
|
||||
|
@ -36,7 +40,6 @@ 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_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, ))
|
||||
|
@ -45,16 +48,14 @@ class clock_offset_corrector(gr.hier_block2):
|
|||
##################################################
|
||||
# Connections
|
||||
##################################################
|
||||
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), (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.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))
|
||||
self.connect((self.blocks_multiply_const_vxx_0, 0), (self.gsm_controlled_rotator_cc_0, 1))
|
||||
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, 0))
|
||||
self.connect((self.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0, 0))
|
||||
|
||||
##################################################
|
||||
# Asynch Message Connections
|
||||
|
@ -69,13 +70,20 @@ 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.set_samp_rate_out(self.samp_rate_in)
|
||||
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, ))
|
||||
|
||||
|
@ -84,17 +92,9 @@ class clock_offset_corrector(gr.hier_block2):
|
|||
|
||||
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.fractional_resampler_xx_0_0.set_resamp_ratio(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.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)
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# Title: GSM input adaptor
|
||||
# Author: Piotr Krysik
|
||||
# Description: Adaptor of input stream for the GSM receiver. Contains frequency ofset corrector doing also resampling to integer multiplies of GSM sample rate and LP filter filtering GSM channel.
|
||||
# Generated: Thu Nov 6 14:41:06 2014
|
||||
# Generated: Wed Nov 19 08:23:52 2014
|
||||
##################################################
|
||||
|
||||
from gnuradio import filter
|
||||
|
@ -29,24 +29,30 @@ class gsm_input(gr.hier_block2):
|
|||
self.fc = fc
|
||||
self.samp_rate_in = samp_rate_in
|
||||
|
||||
##################################################
|
||||
# Variables
|
||||
##################################################
|
||||
self.samp_rate_out = samp_rate_out = 1625000.0/6.0*osr
|
||||
|
||||
##################################################
|
||||
# Blocks
|
||||
##################################################
|
||||
self.ppm_in = None;self.message_port_register_hier_out("ppm_in")
|
||||
self.low_pass_filter_0_0 = filter.fir_filter_ccf(1, firdes.low_pass(
|
||||
1, 1625000.0/6.0*osr, 125e3, 5e3, firdes.WIN_HAMMING, 6.76))
|
||||
1, samp_rate_out, 125e3, 5e3, firdes.WIN_HAMMING, 6.76))
|
||||
self.gsm_clock_offset_corrector_0 = gsm.clock_offset_corrector(
|
||||
fc=fc,
|
||||
fc=936.6e6,
|
||||
ppm=0,
|
||||
samp_rate_in=samp_rate_in,
|
||||
samp_rate_out=1625000.0/6.0*4.0,
|
||||
)
|
||||
self.fractional_resampler_xx_0 = filter.fractional_resampler_cc(0, samp_rate_in/samp_rate_out)
|
||||
|
||||
##################################################
|
||||
# Connections
|
||||
##################################################
|
||||
self.connect((self.low_pass_filter_0_0, 0), (self, 0))
|
||||
self.connect((self.gsm_clock_offset_corrector_0, 0), (self.low_pass_filter_0_0, 0))
|
||||
self.connect((self.fractional_resampler_xx_0, 0), (self.low_pass_filter_0_0, 0))
|
||||
self.connect((self.gsm_clock_offset_corrector_0, 0), (self.fractional_resampler_xx_0, 0))
|
||||
self.connect((self, 0), (self.gsm_clock_offset_corrector_0, 0))
|
||||
|
||||
##################################################
|
||||
|
@ -60,13 +66,14 @@ class gsm_input(gr.hier_block2):
|
|||
|
||||
def set_ppm(self, ppm):
|
||||
self.ppm = ppm
|
||||
self.gsm_clock_offset_corrector_0.set_ppm(self.ppm)
|
||||
|
||||
def get_osr(self):
|
||||
return self.osr
|
||||
|
||||
def set_osr(self, osr):
|
||||
self.osr = osr
|
||||
self.low_pass_filter_0_0.set_taps(firdes.low_pass(1, 1625000.0/6.0*self.osr, 125e3, 5e3, firdes.WIN_HAMMING, 6.76))
|
||||
self.set_samp_rate_out(1625000.0/6.0*self.osr)
|
||||
|
||||
def get_fc(self):
|
||||
return self.fc
|
||||
|
@ -80,5 +87,14 @@ class gsm_input(gr.hier_block2):
|
|||
|
||||
def set_samp_rate_in(self, samp_rate_in):
|
||||
self.samp_rate_in = samp_rate_in
|
||||
self.fractional_resampler_xx_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out)
|
||||
self.gsm_clock_offset_corrector_0.set_samp_rate_in(self.samp_rate_in)
|
||||
|
||||
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.low_pass_filter_0_0.set_taps(firdes.low_pass(1, self.samp_rate_out, 125e3, 5e3, firdes.WIN_HAMMING, 6.76))
|
||||
self.fractional_resampler_xx_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out)
|
||||
|
||||
|
|
Loading…
Reference in New Issue