[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6840 - gnuradio/trunk/gnuradio-core/src/lib/general
From: |
n4hy |
Subject: |
[Commit-gnuradio] r6840 - gnuradio/trunk/gnuradio-core/src/lib/general |
Date: |
Thu, 8 Nov 2007 15:43:29 -0700 (MST) |
Author: n4hy
Date: 2007-11-08 15:43:26 -0700 (Thu, 08 Nov 2007)
New Revision: 6840
Modified:
gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
gnuradio/trunk/gnuradio-core/src/lib/general/gr_math.h
Log:
attempting to use branchless clipping to prevent pipeline dumping, fabs needs
to be intrinsic for speed
Modified:
gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
2007-11-08 20:50:47 UTC (rev 6839)
+++ gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
2007-11-08 22:43:26 UTC (rev 6840)
@@ -151,17 +151,22 @@
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_mu = d_mu + d_omega + d_gain_mu * mm_val;
ii += (int)floor(d_mu);
d_mu -= floor(d_mu);
Modified: gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
2007-11-08 20:50:47 UTC (rev 6839)
+++ gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
2007-11-08 22:43:26 UTC (rev 6840)
@@ -25,6 +25,7 @@
#include <gr_block.h>
#include <gr_complex.h>
+#include <gr_math.h>
class gri_mmse_fir_interpolator_cc;
Modified:
gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
2007-11-08 20:50:47 UTC (rev 6839)
+++ gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
2007-11-08 22:43:26 UTC (rev 6840)
@@ -118,11 +118,13 @@
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_mu = d_mu + d_omega + d_gain_mu * mm_val;
ii += (int) floor(d_mu);
Modified: gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
2007-11-08 20:50:47 UTC (rev 6839)
+++ gnuradio/trunk/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
2007-11-08 22:43:26 UTC (rev 6840)
@@ -24,6 +24,7 @@
#define INCLUDED_GR_CLOCK_RECOVERY_MM_FF_H
#include <gr_block.h>
+#include <gr_math.h>
#include <stdio.h>
class gri_mmse_fir_interpolator;
@@ -67,6 +68,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:
@@ -76,7 +78,8 @@
private:
float d_mu; // fractional sample position
[0.0, 1.0]
float d_omega; // nominal frequency
- float d_min_omega; // minimum allowed omega
+ float d_min_omega; // minimum allowed
omega
+ float d_omega_mid; // average omega
float d_max_omega; // maximum allowed omega
float d_gain_omega; // gain for adjusting omega
float d_gain_mu; // gain for adjusting mu
Modified: gnuradio/trunk/gnuradio-core/src/lib/general/gr_math.h
===================================================================
--- gnuradio/trunk/gnuradio-core/src/lib/general/gr_math.h 2007-11-08
20:50:47 UTC (rev 6839)
+++ gnuradio/trunk/gnuradio-core/src/lib/general/gr_math.h 2007-11-08
22:43:26 UTC (rev 6840)
@@ -64,4 +64,13 @@
return gr_fast_atan2f(z.imag(), z.real());
}
+static inline float gr_branchless_clip(float x, float clip)
+{
+ float x1 = fabs(x+clip);
+ float x2 = fabs(x-clip);
+ x1 -= x2;
+ return 0.5*x1;
+}
+
+
#endif /* _GR_MATH_H_ */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6840 - gnuradio/trunk/gnuradio-core/src/lib/general,
n4hy <=