[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6842 - gnuradio/branches/developers/trondeau/receiver
From: |
n4hy |
Subject: |
[Commit-gnuradio] r6842 - gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general |
Date: |
Thu, 8 Nov 2007 15:56:07 -0700 (MST) |
Author: n4hy
Date: 2007-11-08 15:56:05 -0700 (Thu, 08 Nov 2007)
New Revision: 6842
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
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_math.h
Log:
branchless clipping tried out in clock recovery
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
2007-11-08 22:53:13 UTC (rev 6841)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.cc
2007-11-08 22:56:05 UTC (rev 6842)
@@ -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/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
2007-11-08 22:53:13 UTC (rev 6841)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_cc.h
2007-11-08 22:56:05 UTC (rev 6842)
@@ -25,6 +25,7 @@
#include <gr_block.h>
#include <gr_complex.h>
+#include <gr_math.h>
class gri_mmse_fir_interpolator_cc;
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
2007-11-08 22:53:13 UTC (rev 6841)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.cc
2007-11-08 22:56:05 UTC (rev 6842)
@@ -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/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
===================================================================
---
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
2007-11-08 22:53:13 UTC (rev 6841)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_clock_recovery_mm_ff.h
2007-11-08 22:56:05 UTC (rev 6842)
@@ -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/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_math.h
===================================================================
---
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_math.h
2007-11-08 22:53:13 UTC (rev 6841)
+++
gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general/gr_math.h
2007-11-08 22:56:05 UTC (rev 6842)
@@ -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] r6842 - gnuradio/branches/developers/trondeau/receiver/gnuradio-core/src/lib/general,
n4hy <=