summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rondeau2009-10-12 17:55:17 -0400
committerTom Rondeau2009-10-12 17:55:17 -0400
commitc1ab962946bb05b8a20a0f19dd294eb3b3056142 (patch)
tree83e609752d3d522ef01b75f795a0b22548bad905
parent2b60291c2883dbd3b85c6f694d830fa3ccf0a6e6 (diff)
downloadgnuradio-c1ab962946bb05b8a20a0f19dd294eb3b3056142.tar.gz
gnuradio-c1ab962946bb05b8a20a0f19dd294eb3b3056142.tar.bz2
gnuradio-c1ab962946bb05b8a20a0f19dd294eb3b3056142.zip
This splits the rate into a fractional an integer value, which allows the loop to adjust the fractional rate while the integer rate keeps the increments moving properly. Allows the max rate deviation to be independent of the integer rate. Scaling of the differential taps also allows alpha and beta to operate independent of the rate when fractional samples per symbol are used. Slightly more tolerant to large signal values, but they still should be close to +/-1.
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc20
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h2
-rw-r--r--gnuradio-examples/grc/demod/pam_timing.grc758
3 files changed, 427 insertions, 353 deletions
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc
index 43412f25b..433b7d613 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc
+++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.cc
@@ -68,6 +68,8 @@ gr_pfb_clock_sync_ccf::gr_pfb_clock_sync_ccf (double sps, float gain,
set_beta(0.25*gain*gain);
d_k = init_phase;
d_rate = (sps-floor(sps))*(double)d_nfilters;
+ d_rate_i = (int)floor(d_rate);
+ d_rate_f = d_rate - (float)d_rate_i;
d_filtnum = (int)floor(d_k);
d_filters = std::vector<gr_fir_ccf*>(d_nfilters);
@@ -137,13 +139,23 @@ void
gr_pfb_clock_sync_ccf::create_diff_taps(const std::vector<float> &newtaps,
std::vector<float> &difftaps)
{
+ float maxtap = 1e-20;
difftaps.clear();
difftaps.push_back(0); //newtaps[0]);
for(unsigned int i = 1; i < newtaps.size()-1; i++) {
float tap = newtaps[i+1] - newtaps[i-1];
difftaps.push_back(tap);
+ if(tap > maxtap) {
+ maxtap = tap;
+ }
}
difftaps.push_back(0);//-newtaps[newtaps.size()-1]);
+
+ // Scale the differential taps; helps scale error term to better update state
+ // FIXME: should this be scaled this way or use the same gain as the taps?
+ for(unsigned int i = 0; i < difftaps.size(); i++) {
+ difftaps[i] /= maxtap;
+ }
}
void
@@ -250,18 +262,18 @@ gr_pfb_clock_sync_ccf::general_work (int noutput_items,
error = (error_i + error_r) / 2.0; // average error from I&Q channel
// Run the control loop to update the current phase (k) and tracking rate
- d_k = d_k + d_alpha*error + d_rate;
- d_rate = d_rate + d_beta*error;
+ d_k = d_k + d_alpha*error + d_rate_i + d_rate_f;
+ d_rate_f = d_rate_f + d_beta*error;
// Keep our rate within a good range
- d_rate = gr_branchless_clip(d_rate, d_max_dev);
+ d_rate_f = gr_branchless_clip(d_rate_f, d_max_dev);
i++;
count += (int)floor(d_sps);
if(output_items.size() > 2) {
err[i] = error;
- outrate[i] = d_rate;
+ outrate[i] = d_rate_f;
outk[i] = d_k;
}
}
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h
index 778db59e5..a07192a7f 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h
@@ -69,6 +69,8 @@ class gr_pfb_clock_sync_ccf : public gr_block
std::vector< std::vector<float> > d_dtaps;
float d_k;
float d_rate;
+ float d_rate_i;
+ float d_rate_f;
float d_max_dev;
int d_filtnum;
int d_taps_per_filter;
diff --git a/gnuradio-examples/grc/demod/pam_timing.grc b/gnuradio-examples/grc/demod/pam_timing.grc
index 907233aca..4e2a2f861 100644
--- a/gnuradio-examples/grc/demod/pam_timing.grc
+++ b/gnuradio-examples/grc/demod/pam_timing.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Fri Oct 9 14:51:58 2009</timestamp>
+ <timestamp>Mon Oct 12 17:54:59 2009</timestamp>
<block>
<key>options</key>
<param>
@@ -95,61 +95,6 @@
</param>
</block>
<block>
- <key>variable_slider</key>
- <param>
- <key>id</key>
- <value>noise_amp</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>Channel Noise</value>
- </param>
- <param>
- <key>value</key>
- <value>0</value>
- </param>
- <param>
- <key>min</key>
- <value>0</value>
- </param>
- <param>
- <key>max</key>
- <value>1.0</value>
- </param>
- <param>
- <key>num_steps</key>
- <value>1000</value>
- </param>
- <param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
- </param>
- <param>
- <key>converver</key>
- <value>float_converter</value>
- </param>
- <param>
- <key>grid_pos</key>
- <value></value>
- </param>
- <param>
- <key>notebook</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(168, 684)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>variable</key>
<param>
<key>id</key>
@@ -251,22 +196,18 @@
</param>
</block>
<block>
- <key>variable_slider</key>
+ <key>random_source_x</key>
<param>
<key>id</key>
- <value>alpha</value>
+ <value>random_source_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>Timing Alpha</value>
- </param>
- <param>
- <key>value</key>
- <value>0</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
<key>min</key>
@@ -274,31 +215,19 @@
</param>
<param>
<key>max</key>
- <value>10</value>
- </param>
- <param>
- <key>num_steps</key>
- <value>1000</value>
- </param>
- <param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
- </param>
- <param>
- <key>converver</key>
- <value>float_converter</value>
+ <value>pam_amp</value>
</param>
<param>
- <key>grid_pos</key>
- <value></value>
+ <key>num_samps</key>
+ <value>10000</value>
</param>
<param>
- <key>notebook</key>
- <value></value>
+ <key>repeat</key>
+ <value>True</value>
</param>
<param>
<key>_coordinate</key>
- <value>(552, 4)</value>
+ <value>(13, 80)</value>
</param>
<param>
<key>_rotation</key>
@@ -306,77 +235,92 @@
</param>
</block>
<block>
- <key>variable_slider</key>
+ <key>random_source_x</key>
<param>
<key>id</key>
- <value>beta</value>
+ <value>random_source_x_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>Timing Beta</value>
+ <key>type</key>
+ <value>byte</value>
</param>
<param>
- <key>value</key>
+ <key>min</key>
<value>0</value>
</param>
<param>
- <key>min</key>
- <value>0.0</value>
+ <key>max</key>
+ <value>pam_amp</value>
</param>
<param>
- <key>max</key>
- <value>0.1</value>
+ <key>num_samps</key>
+ <value>10000</value>
</param>
<param>
- <key>num_steps</key>
- <value>1000</value>
+ <key>repeat</key>
+ <value>True</value>
</param>
<param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
+ <key>_coordinate</key>
+ <value>(15, 245)</value>
</param>
<param>
- <key>converver</key>
- <value>float_converter</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>const_source_x</key>
<param>
- <key>grid_pos</key>
- <value></value>
+ <key>id</key>
+ <value>const_source_x_0</value>
</param>
<param>
- <key>notebook</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>float</value>
+ </param>
+ <param>
+ <key>const</key>
+ <value>-0.5*(pam_amp-1)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(668, 5)</value>
+ <value>(213, 197)</value>
</param>
<param>
<key>_rotation</key>
- <value>180</value>
+ <value>0</value>
</param>
</block>
<block>
- <key>variable</key>
+ <key>const_source_x</key>
<param>
<key>id</key>
- <value>spb_gen</value>
+ <value>const_source_x_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>4</value>
+ <key>type</key>
+ <value>float</value>
+ </param>
+ <param>
+ <key>const</key>
+ <value>-0.5*(pam_amp-1)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(119, 841)</value>
+ <value>(200, 360)</value>
</param>
<param>
<key>_rotation</key>
@@ -384,42 +328,46 @@
</param>
</block>
<block>
- <key>variable_slider</key>
+ <key>wxgui_scopesink2</key>
<param>
<key>id</key>
- <value>interpratio</value>
+ <value>wxgui_scopesink2_0_0_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>Timing Offset</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>value</key>
- <value>1.00</value>
+ <key>title</key>
+ <value>Scope Plot</value>
</param>
<param>
- <key>min</key>
- <value>0.9</value>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>max</key>
- <value>1.1</value>
+ <key>v_scale</key>
+ <value>1.25</value>
</param>
<param>
- <key>num_steps</key>
- <value>1000</value>
+ <key>t_scale</key>
+ <value>0</value>
</param>
<param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
+ <key>ac_couple</key>
+ <value>False</value>
</param>
<param>
- <key>converver</key>
- <value>float_converter</value>
+ <key>xy_mode</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>1</value>
</param>
<param>
<key>grid_pos</key>
@@ -427,22 +375,22 @@
</param>
<param>
<key>notebook</key>
- <value></value>
+ <value>notebook_0,2</value>
</param>
<param>
<key>_coordinate</key>
- <value>(40, 684)</value>
+ <value>(1111, 767)</value>
</param>
<param>
<key>_rotation</key>
- <value>180</value>
+ <value>0</value>
</param>
</block>
<block>
- <key>random_source_x</key>
+ <key>wxgui_scopesink2</key>
<param>
<key>id</key>
- <value>random_source_x_0</value>
+ <value>wxgui_scopesink2_0_0_0</value>
</param>
<param>
<key>_enabled</key>
@@ -450,27 +398,47 @@
</param>
<param>
<key>type</key>
- <value>byte</value>
+ <value>float</value>
</param>
<param>
- <key>min</key>
+ <key>title</key>
+ <value>Scope Plot</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>v_scale</key>
+ <value>9</value>
+ </param>
+ <param>
+ <key>t_scale</key>
<value>0</value>
</param>
<param>
- <key>max</key>
- <value>pam_amp</value>
+ <key>ac_couple</key>
+ <value>False</value>
</param>
<param>
- <key>num_samps</key>
- <value>10000</value>
+ <key>xy_mode</key>
+ <value>False</value>
</param>
<param>
- <key>repeat</key>
- <value>True</value>
+ <key>num_inputs</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value>notebook_0,1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(13, 80)</value>
+ <value>(1112, 881)</value>
</param>
<param>
<key>_rotation</key>
@@ -478,38 +446,38 @@
</param>
</block>
<block>
- <key>random_source_x</key>
+ <key>gr_channel_model</key>
<param>
<key>id</key>
- <value>random_source_x_0_0</value>
+ <value>gr_channel_model_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>byte</value>
+ <key>noise_voltage</key>
+ <value>noise_amp</value>
</param>
<param>
- <key>min</key>
- <value>0</value>
+ <key>freq_offset</key>
+ <value>freq_offset</value>
</param>
<param>
- <key>max</key>
- <value>pam_amp</value>
+ <key>epsilon</key>
+ <value>interpratio</value>
</param>
<param>
- <key>num_samps</key>
- <value>10000</value>
+ <key>taps</key>
+ <value>1.0</value>
</param>
<param>
- <key>repeat</key>
- <value>True</value>
+ <key>seed</key>
+ <value>42</value>
</param>
<param>
<key>_coordinate</key>
- <value>(15, 245)</value>
+ <value>(59, 543)</value>
</param>
<param>
<key>_rotation</key>
@@ -517,10 +485,10 @@
</param>
</block>
<block>
- <key>const_source_x</key>
+ <key>gr_throttle</key>
<param>
<key>id</key>
- <value>const_source_x_0</value>
+ <value>gr_throttle_0</value>
</param>
<param>
<key>_enabled</key>
@@ -528,15 +496,19 @@
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>complex</value>
</param>
<param>
- <key>const</key>
- <value>-0.5*(pam_amp-1)</value>
+ <key>samples_per_second</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(213, 197)</value>
+ <value>(290, 575)</value>
</param>
<param>
<key>_rotation</key>
@@ -544,26 +516,34 @@
</param>
</block>
<block>
- <key>const_source_x</key>
+ <key>notebook</key>
<param>
<key>id</key>
- <value>const_source_x_0_0</value>
+ <value>notebook_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
+ <key>style</key>
+ <value>wx.NB_TOP</value>
</param>
<param>
- <key>const</key>
- <value>-0.5*(pam_amp-1)</value>
+ <key>labels</key>
+ <value>['error', 'phase', 'freq', 'Resampled Signal']</value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(200, 360)</value>
+ <value>(729, 769)</value>
</param>
<param>
<key>_rotation</key>
@@ -574,7 +554,7 @@
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
- <value>wxgui_scopesink2_0_0</value>
+ <value>wxgui_scopesink2_0_0_1</value>
</param>
<param>
<key>_enabled</key>
@@ -582,7 +562,7 @@
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>complex</value>
</param>
<param>
<key>title</key>
@@ -618,11 +598,11 @@
</param>
<param>
<key>notebook</key>
- <value>notebook_0,0</value>
+ <value>notebook_0,3</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1110, 651)</value>
+ <value>(1115, 358)</value>
</param>
<param>
<key>_rotation</key>
@@ -630,10 +610,10 @@
</param>
</block>
<block>
- <key>wxgui_scopesink2</key>
+ <key>gr_add_xx</key>
<param>
<key>id</key>
- <value>wxgui_scopesink2_0_0_0_0</value>
+ <value>gr_add_xx_0</value>
</param>
<param>
<key>_enabled</key>
@@ -644,44 +624,70 @@
<value>float</value>
</param>
<param>
- <key>title</key>
- <value>Scope Plot</value>
+ <key>num_inputs</key>
+ <value>2</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>v_scale</key>
- <value>1.25</value>
+ <key>_coordinate</key>
+ <value>(440, 167)</value>
</param>
<param>
- <key>t_scale</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>gr_add_xx</key>
<param>
- <key>ac_couple</key>
- <value>False</value>
+ <key>id</key>
+ <value>gr_add_xx_0_1</value>
</param>
<param>
- <key>xy_mode</key>
- <value>False</value>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
<key>num_inputs</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
- <key>grid_pos</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(430, 330)</value>
</param>
<param>
- <key>notebook</key>
- <value>notebook_0,2</value>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_float_to_complex</key>
+ <param>
+ <key>id</key>
+ <value>gr_float_to_complex_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1111, 767)</value>
+ <value>(590, 184)</value>
</param>
<param>
<key>_rotation</key>
@@ -692,7 +698,7 @@
<key>wxgui_scopesink2</key>
<param>
<key>id</key>
- <value>wxgui_scopesink2_0_0_0</value>
+ <value>wxgui_scopesink2_0</value>
</param>
<param>
<key>_enabled</key>
@@ -700,7 +706,7 @@
</param>
<param>
<key>type</key>
- <value>float</value>
+ <value>complex</value>
</param>
<param>
<key>title</key>
@@ -712,7 +718,7 @@
</param>
<param>
<key>v_scale</key>
- <value>9</value>
+ <value>0</value>
</param>
<param>
<key>t_scale</key>
@@ -736,11 +742,11 @@
</param>
<param>
<key>notebook</key>
- <value>notebook_0,1</value>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(1112, 881)</value>
+ <value>(1116, 500)</value>
</param>
<param>
<key>_rotation</key>
@@ -748,38 +754,22 @@
</param>
</block>
<block>
- <key>gr_channel_model</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>gr_channel_model_0</value>
+ <value>nfilts</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>noise_voltage</key>
- <value>noise_amp</value>
- </param>
- <param>
- <key>freq_offset</key>
- <value>freq_offset</value>
- </param>
- <param>
- <key>epsilon</key>
- <value>interpratio</value>
- </param>
- <param>
- <key>taps</key>
- <value>1.0</value>
- </param>
- <param>
- <key>seed</key>
- <value>42</value>
+ <key>value</key>
+ <value>32</value>
</param>
<param>
<key>_coordinate</key>
- <value>(59, 543)</value>
+ <value>(435, 686)</value>
</param>
<param>
<key>_rotation</key>
@@ -787,30 +777,46 @@
</param>
</block>
<block>
- <key>gr_throttle</key>
+ <key>gr_pfb_clock_sync_ccf</key>
<param>
<key>id</key>
- <value>gr_throttle_0</value>
+ <value>gr_pfb_clock_sync_ccf_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>sps</key>
+ <value>spb</value>
</param>
<param>
- <key>samples_per_second</key>
- <value>samp_rate</value>
+ <key>alpha</key>
+ <value>alpha</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>beta</key>
+ <value>beta</value>
+ </param>
+ <param>
+ <key>taps</key>
+ <value>rrctaps</value>
+ </param>
+ <param>
+ <key>filter_size</key>
+ <value>nfilts</value>
+ </param>
+ <param>
+ <key>init_phase</key>
+ <value>16</value>
+ </param>
+ <param>
+ <key>max_dev</key>
+ <value>1.5</value>
</param>
<param>
<key>_coordinate</key>
- <value>(290, 575)</value>
+ <value>(512, 527)</value>
</param>
<param>
<key>_rotation</key>
@@ -818,22 +824,42 @@
</param>
</block>
<block>
- <key>notebook</key>
+ <key>variable_slider</key>
<param>
<key>id</key>
- <value>notebook_0</value>
+ <value>noise_amp</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>label</key>
+ <value>Channel Noise</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>min</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>max</key>
+ <value>1.0</value>
+ </param>
+ <param>
+ <key>num_steps</key>
+ <value>1000</value>
+ </param>
+ <param>
<key>style</key>
- <value>wx.NB_TOP</value>
+ <value>wx.SL_HORIZONTAL</value>
</param>
<param>
- <key>labels</key>
- <value>['error', 'phase', 'freq', 'Resampled Signal']</value>
+ <key>converver</key>
+ <value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
@@ -845,7 +871,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(729, 769)</value>
+ <value>(168, 684)</value>
</param>
<param>
<key>_rotation</key>
@@ -853,46 +879,42 @@
</param>
</block>
<block>
- <key>wxgui_scopesink2</key>
+ <key>variable_slider</key>
<param>
<key>id</key>
- <value>wxgui_scopesink2_0_0_1</value>
+ <value>interpratio</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>title</key>
- <value>Error</value>
+ <key>label</key>
+ <value>Timing Offset</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>value</key>
+ <value>1.00</value>
</param>
<param>
- <key>v_scale</key>
- <value>.5</value>
+ <key>min</key>
+ <value>0.99</value>
</param>
<param>
- <key>t_scale</key>
- <value>0</value>
+ <key>max</key>
+ <value>1.01</value>
</param>
<param>
- <key>ac_couple</key>
- <value>False</value>
+ <key>num_steps</key>
+ <value>1000</value>
</param>
<param>
- <key>xy_mode</key>
- <value>False</value>
+ <key>style</key>
+ <value>wx.SL_HORIZONTAL</value>
</param>
<param>
- <key>num_inputs</key>
- <value>1</value>
+ <key>converver</key>
+ <value>float_converter</value>
</param>
<param>
<key>grid_pos</key>
@@ -900,22 +922,22 @@
</param>
<param>
<key>notebook</key>
- <value>notebook_0,3</value>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(1115, 358)</value>
+ <value>(40, 684)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
- <value>spb</value>
+ <value>spb_gen</value>
</param>
<param>
<key>_enabled</key>
@@ -923,11 +945,11 @@
</param>
<param>
<key>value</key>
- <value>4.1</value>
+ <value>4</value>
</param>
<param>
<key>_coordinate</key>
- <value>(32, 842)</value>
+ <value>(119, 841)</value>
</param>
<param>
<key>_rotation</key>
@@ -935,61 +957,109 @@
</param>
</block>
<block>
- <key>gr_add_xx</key>
+ <key>variable_slider</key>
<param>
<key>id</key>
- <value>gr_add_xx_0</value>
+ <value>beta</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
+ <key>label</key>
+ <value>Timing Beta</value>
</param>
<param>
- <key>num_inputs</key>
- <value>2</value>
+ <key>value</key>
+ <value>0</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>min</key>
+ <value>0.0</value>
+ </param>
+ <param>
+ <key>max</key>
+ <value>0.1</value>
+ </param>
+ <param>
+ <key>num_steps</key>
+ <value>1000</value>
+ </param>
+ <param>
+ <key>style</key>
+ <value>wx.SL_HORIZONTAL</value>
+ </param>
+ <param>
+ <key>converver</key>
+ <value>float_converter</value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(440, 167)</value>
+ <value>(668, 5)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
- <key>gr_add_xx</key>
+ <key>variable_slider</key>
<param>
<key>id</key>
- <value>gr_add_xx_0_1</value>
+ <value>alpha</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
+ <key>label</key>
+ <value>Timing Alpha</value>
</param>
<param>
- <key>num_inputs</key>
- <value>2</value>
+ <key>value</key>
+ <value>0</value>
</param>
<param>
- <key>vlen</key>
+ <key>min</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>max</key>
<value>1</value>
</param>
<param>
+ <key>num_steps</key>
+ <value>1000</value>
+ </param>
+ <param>
+ <key>style</key>
+ <value>wx.SL_HORIZONTAL</value>
+ </param>
+ <param>
+ <key>converver</key>
+ <value>float_converter</value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(430, 330)</value>
+ <value>(552, 4)</value>
</param>
<param>
<key>_rotation</key>
@@ -997,53 +1067,58 @@
</param>
</block>
<block>
- <key>blks2_pfb_arb_resampler_ccf</key>
+ <key>wxgui_scopesink2</key>
<param>
<key>id</key>
- <value>blks2_pfb_arb_resampler_ccf_0</value>
+ <value>wxgui_scopesink2_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>rate</key>
- <value>float(spb)/float(spb_gen)</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>taps</key>
- <value>firdes.low_pass(128, 128, 0.45, 0.1)</value>
+ <key>title</key>
+ <value>Error</value>
</param>
<param>
- <key>size</key>
- <value>128</value>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(617, 374)</value>
+ <key>v_scale</key>
+ <value>3</value>
</param>
<param>
- <key>_rotation</key>
+ <key>t_scale</key>
<value>0</value>
</param>
- </block>
- <block>
- <key>gr_float_to_complex</key>
<param>
- <key>id</key>
- <value>gr_float_to_complex_0</value>
+ <key>ac_couple</key>
+ <value>False</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>xy_mode</key>
+ <value>False</value>
</param>
<param>
- <key>vlen</key>
+ <key>num_inputs</key>
<value>1</value>
</param>
<param>
+ <key>grid_pos</key>
+ <value></value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value>notebook_0,0</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(590, 184)</value>
+ <value>(1110, 651)</value>
</param>
<param>
<key>_rotation</key>
@@ -1094,7 +1169,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(832, 157)</value>
+ <value>(834, 157)</value>
</param>
<param>
<key>_rotation</key>
@@ -1102,58 +1177,61 @@
</param>
</block>
<block>
- <key>wxgui_scopesink2</key>
+ <key>blks2_pfb_arb_resampler_ccf</key>
<param>
<key>id</key>
- <value>wxgui_scopesink2_0</value>
+ <value>blks2_pfb_arb_resampler_ccf_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>rate</key>
+ <value>float(spb)/float(spb_gen)</value>
</param>
<param>
- <key>title</key>
- <value>Scope Plot</value>
+ <key>taps</key>
+ <value>firdes.low_pass(128, 128, 0.45, 0.1)</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>size</key>
+ <value>128</value>
</param>
<param>
- <key>v_scale</key>
- <value>0</value>
+ <key>_coordinate</key>
+ <value>(617, 374)</value>
</param>
<param>
- <key>t_scale</key>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>gr_multiply_const_vxx</key>
<param>
- <key>ac_couple</key>
- <value>False</value>
+ <key>id</key>
+ <value>gr_multiply_const_vxx_0</value>
</param>
<param>
- <key>xy_mode</key>
- <value>False</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>num_inputs</key>
- <value>1</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>grid_pos</key>
- <value></value>
+ <key>const</key>
+ <value>sig_amp</value>
</param>
<param>
- <key>notebook</key>
- <value></value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1116, 500)</value>
+ <value>(1096, 197)</value>
</param>
<param>
<key>_rotation</key>
@@ -1164,7 +1242,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>nfilts</value>
+ <value>pam_amp</value>
</param>
<param>
<key>_enabled</key>
@@ -1172,11 +1250,11 @@
</param>
<param>
<key>value</key>
- <value>64</value>
+ <value>2</value>
</param>
<param>
<key>_coordinate</key>
- <value>(435, 686)</value>
+ <value>(223, 9)</value>
</param>
<param>
<key>_rotation</key>
@@ -1184,46 +1262,22 @@
</param>
</block>
<block>
- <key>gr_pfb_clock_sync_ccf</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>gr_pfb_clock_sync_ccf_0</value>
+ <value>spb</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>sps</key>
- <value>spb</value>
- </param>
- <param>
- <key>alpha</key>
- <value>alpha</value>
- </param>
- <param>
- <key>beta</key>
- <value>beta</value>
- </param>
- <param>
- <key>taps</key>
- <value>rrctaps</value>
- </param>
- <param>
- <key>filter_size</key>
- <value>nfilts</value>
- </param>
- <param>
- <key>init_phase</key>
- <value>16</value>
- </param>
- <param>
- <key>max_dev</key>
- <value>20</value>
+ <key>value</key>
+ <value>4.1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(512, 527)</value>
+ <value>(32, 842)</value>
</param>
<param>
<key>_rotation</key>
@@ -1234,7 +1288,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>pam_amp</value>
+ <value>sig_amp</value>
</param>
<param>
<key>_enabled</key>
@@ -1242,11 +1296,11 @@
</param>
<param>
<key>value</key>
- <value>2</value>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(223, 9)</value>
+ <value>(315, 9)</value>
</param>
<param>
<key>_rotation</key>
@@ -1357,6 +1411,12 @@
</connection>
<connection>
<source_block_id>root_raised_cosine_filter_0</source_block_id>
+ <sink_block_id>gr_multiply_const_vxx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gr_multiply_const_vxx_0</source_block_id>
<sink_block_id>blks2_pfb_arb_resampler_ccf_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>