I have implemented a Gardner timing error detector with an interpolator and timing recovery in software. I noticed that the error term of the Gardner TED depends on the signal amplitude, which causes problems with the large variations of signal strength my receiver is expected to see.

With bursts (no timing sequence, only CW + sync word over 64 symbols), there are variations of 10 dB from the start of the transmission to after a few (15-20) symbols of frame data. For continuous signals (long CW + long timing sequence), this is less of an issue as the signal level tends to be relatively constant or varying rather slowly.

Is there a way I can make the Gardner error factor not depend on signal amplitude or should I instead focus on making sure the TED always sees a constant power level?

  • $\begingroup$ One option is to just take the sign of the error and ignore the magnitude. These errors tend to be incredibly noisy in practice (i.e. a rather high proportion will have the wrong sign) so it can make sense to just discard the magnitude information and define your own constant "epsilon" to adjust a small amount in roughly the right direction. $\endgroup$ – Harry Mar 23 at 21:57
  • 2
    $\begingroup$ Typically you would have an AGC in your receiver as you want your signal to be at a constant power level anyway for demodulation (constant over the time constant spanning multiple symbols) $\endgroup$ – Dan Boschen Mar 24 at 1:09
  • $\begingroup$ @Harry The problem with this is I need to lock it at some point, so I need to check the error magnitude at some point. $\endgroup$ – TehWan Mar 24 at 13:25
  • $\begingroup$ @DanBoschen While I don't need it for demodulation (QPSK), I'm starting to realize this is the only solution. Thanks. $\endgroup$ – TehWan Mar 24 at 13:25
  • 1
    $\begingroup$ Thanks @DanBoschen, I ended up using an AGC to make the input power constant and tweaked the error loop gain in the TED around the expected power. It makes much more sense to have a constant expected power rather than to try and support a wide range. $\endgroup$ – TehWan Mar 25 at 15:50

The maximum absolute error term is roughly 2 times the input power for the Gardner TED. Having a fixed (or predictable) input power, through the use of an AGC, means you can scale the error term to adjust the speed at which corrections will be performed.

With M-QAM modulations (for M > 4), the input power will vary depending on the symbol, and thus the maximum error term will also vary. This means that symbols with less energy will move the timing corrections more slowly than symbols with more energy. Given a proper initial synchronization sequence, this should not be an issue when maintaining the lock. Proper care should be taken to make sure the lowest energy symbol can still make the timing offset move if necessary.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.