A symbol timing recovery scheme shown below has been successfully implemented in C++. Different TEDs (Mueller & Mueller, Early-Late, Maximum Likelihood, Gardner, Zero-Crossing, etc) are included in the implementation. I use a cubic interpolator I found in Michael Rice's book. The implementation performs sufficiently well, at least in simulations. I have seen that other implementations tend to use the PFB interpolator. Out of curiosity, does it bring any significant performance improvement over the cubic interpolator? The cubic interpolator is quite straightforward to implement and its performance seems to be quite modest.

enter image description here

The cubic interpolator from Michael Rice's book. $m(k)$ and $\mu (k)$ represent basepoint index (ideal sample) and fractional delay (between 0 and 1) respectively. enter image description here

  • $\begingroup$ The main difference will be the computational complexity involved, with the polyphase approach being less complex. $\endgroup$
    – MBaz
    May 19, 2021 at 21:13
  • 1
    $\begingroup$ If you precompute a number of cubic interpolations for various fractional bit delays, the result is a polyphase filter bank. It's just based on the response of a filter defined by cubic interpolation of four points. $\endgroup$
    – TimWescott
    May 19, 2021 at 22:33


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.