[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r7388 - gnuradio/branches/developers/trondeau/receiver
From: |
trondeau |
Subject: |
[Commit-gnuradio] r7388 - gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general |
Date: |
Wed, 9 Jan 2008 15:55:58 -0700 (MST) |
Author: trondeau
Date: 2008-01-09 15:55:57 -0700 (Wed, 09 Jan 2008)
New Revision: 7388
Modified:
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
Log:
using branchless clipping in clock recovery blocks
Modified:
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
===================================================================
---
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
2008-01-09 14:33:44 UTC (rev 7387)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
2008-01-09 22:55:57 UTC (rev 7388)
@@ -151,30 +151,14 @@
out[oo++] = d_p_0T;
// limit mm_val
-#if 0
- if (mm_val > 1.0)
- mm_val = 1.0;
- else if (mm_val < -1.0)
- mm_val = -1.0;
-#endif
gr_branchless_clip(mm_val,1.0);
d_omega = d_omega + d_gain_omega * mm_val;
-#if 0
- if (d_omega > d_max_omega)
- d_omega = d_max_omega;
- else if (d_omega < d_min_omega)
- d_omega = d_min_omega;
-#endif
- d_omega = 1.0+gr_branchless_clip(d_omega,d_omega_relative_limit);
+ d_omega = d_omega_mid + gr_branchless_clip(d_omega-d_omega_mid,
d_omega_relative_limit); // make sure we don't walk away
d_mu = d_mu + d_omega + d_gain_mu * mm_val;
ii += (int)floor(d_mu);
d_mu -= floor(d_mu);
-
- #if 0
- printf("%f\t%f\n", d_omega, d_mu);
- #endif
-
+
// write the error signal to the second output
foptr[oo-1] = gr_complex(d_mu,0);
@@ -200,16 +184,10 @@
out[oo++] = d_p_0T;
// limit mm_val
- if (mm_val > 1.0)
- mm_val = 1.0;
- else if (mm_val < -1.0)
- mm_val = -1.0;
+ gr_branchless_clip(mm_val,1.0);
d_omega = d_omega + d_gain_omega * mm_val;
- if (d_omega > d_max_omega)
- d_omega = d_max_omega;
- else if (d_omega < d_min_omega)
- d_omega = d_min_omega;
+ d_omega = d_omega_mid + gr_branchless_clip(d_omega-d_omega_mid,
d_omega_relative_limit); // make sure we don't walk away
d_mu = d_mu + d_omega + d_gain_mu * mm_val;
ii += (int)floor(d_mu);
Modified:
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
===================================================================
---
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
2008-01-09 14:33:44 UTC (rev 7387)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
2008-01-09 22:55:57 UTC (rev 7388)
@@ -70,6 +70,7 @@
d_omega = omega;
d_min_omega = omega*(1.0 - d_omega_relative_limit);
d_max_omega = omega*(1.0 + d_omega_relative_limit);
+ d_omega_mid = 0.5*(d_min_omega+d_max_omega);
}
protected:
@@ -83,6 +84,7 @@
float d_min_omega; // minimum
allowed omega
float d_max_omega; // maximum
allowed omeg
float d_omega_relative_limit; // used to
compute min and max omega
+ float d_omega_mid;
float d_gain_mu;
gr_complex d_last_sample;
gri_mmse_fir_interpolator_cc *d_interp;
Modified:
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
===================================================================
---
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
2008-01-09 14:33:44 UTC (rev 7387)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
2008-01-09 22:55:57 UTC (rev 7388)
@@ -118,13 +118,7 @@
d_last_sample = out[oo];
d_omega = d_omega + d_gain_omega * mm_val;
-#if 0
- if (d_omega > d_max_omega)
- d_omega = d_max_omega;
- else if (d_omega < d_min_omega)
- d_omega = d_min_omega;
-#endif
- d_omega = gr_branchless_clip(d_omega-d_omega_mid,d_omega_relative_limit);
+ d_omega = d_omega_mid + gr_branchless_clip(d_omega-d_omega_mid,
d_omega_relative_limit); // make sure we don't walk away
d_mu = d_mu + d_omega + d_gain_mu * mm_val;
ii += (int) floor(d_mu);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7388 - gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general,
trondeau <=