I am trying to design the Symbol timing recovery (STR) block of DVBS Receiver.

  • How should I chose the loop bandwidth and damping ratio for determining the loop filter coefficients $k_1$ and $k_2$?

In some literature they are given as $B_nT_s= 0.005$, $\zeta = \frac{1}{\sqrt 2}$, while in others it is given as $B_nT_s= 0.05$, $\zeta = 1$.

  • How should I proceed for choosing the $B_n$ and $\zeta$?

  • Should $B_nT_s$ factor change as we change $T_s$ (say from $0.1$ to $10^{-5}$ sec)?

  • $\begingroup$ The optimal parameters of any control loop depend on what you're trying to control, and on the parameters of what you're using to effect the output. $\endgroup$ Commented May 30, 2016 at 7:07
  • $\begingroup$ So, without knowing a lot more on your receiver, especially what you do to estimate timing offset, and what mechanism you use to correct it, it's impossible to answer this. $\endgroup$ Commented May 30, 2016 at 7:07
  • $\begingroup$ I am using Cubic Interpolator and Gardner TED for error detection. I am considering a roll-off factor of 0.5. Basically I am trying to calculate loop filter coefficients k1 and k2. k1 depends on ζ,Bn, and kp,k0. kp and ko are the gains of TED and NCO respectively. I have calculated kp from s-curve of gardner TED. What factors should I consider for choosing Bn and zeta? Apparently, Choosing Bn = 0.05 is not working correctly for my current design (considering a very high SNR). Should I reduce the Bn more? $\endgroup$
    – avi1987
    Commented May 30, 2016 at 9:25

1 Answer 1


There is an optimum loop BW that maximizes the SNR, and this applies to both Symbol Timing Recovery as you inquire about as well as Carrier Recovery. The specific answer depends on the characteristics of the noise source involved in your system, such as clock jitter and phase noise, and the modulation you are using; specifically how the signal energy is distributed in frequency. Without knowing those an exact answer cannot be determined, but I can at least share some insights from my own experience with it.

To state generally, I have found that the optimum loop BW to usually be somewhere between R/100 and R/20, where R is the symbol clock rate being recovered. I start with a value in this range and then through simulation with a valid noise and waveform model (or lab measurement) determine the actual optimum using SNR metrics vs Loop BW setting.

As for damping factor, I also start with a damping factor of 0.5 and then through evaluation using a step or impulse response test adjust for possible ringing due to parasitic delays that may be present in the loop.

In addition to the SNR considerations given above, there are also acquisition time constraints or possible dynamic noise conditions that would also motivate you to have as fast of a timing loop as possible: The faster the loop, the faster the acquisition time, and recovery time from an interference event, or the ability to track a highly dynamic change if it exists. There may also be waveform specific constraints such as the duration of a header in a packet based waveform used to establish timing. However as the BW for the tracking loops increase beyond a significant fraction of the timing symbol clock rate (such as >R/20), tracking errors will start to dominate the noise in SNR, since the loop will start to track out the modulation of interest.

To explain further from the perspective of a trade of Loop BW and SNR, the Loop BW sets the boundary at which your recovery loop will track timing noise (jitter/phase noise) in your signal. Timing noise has components at all frequencies (such as that viewed with a phase noise spectral density), and the lower frequency components of the timing noise (the change in zero crossing locations that is moving very slowly) will be tracked by the timing loop, and therefore suppressed. However the higher frequency components will not be tracked by the timing loop and therefore remain and contribute to noise as part of SNR. The timing loop can be viewed as a high pass filter on the jitter/phase noise components, passing the higher frequency components (including the modulation signals) and supressing the lower frequencies at a rate depending on the order of the loop. Thus you see the motivation to make the timing loop as fast as possible in the interest of tracking out as much timing jitter as possible. However, some of the signal energy of interest will be part of the "noise" being supressed by the timing loop; and this can be quantified by understanding the spectral characteristics of the modulation used. As the loop BW increases, too much signal energy is also removed, and thus it is clear how there can be an optimum setting for the Loop BW that maximizes SNR.

This hopefully provides insight into the approach and what to look for in the development of the system. In conclusion, I set the Loop BW as fast as possible (typically in the range of R/100 to R/20 where R is the symbol rate) while monitoring through simulation with accurate noise and waveform models the SNR metric; and either choose the point of best SNR, or if other factors such as acquisition time or more stringent dynamic conditions are involved, maximize BW without going below a target SNR metric.

  • $\begingroup$ Welcome to DSP.SE. Great, practical answer; thanks. $\endgroup$
    – Jason R
    Commented Jun 1, 2016 at 2:01
  • $\begingroup$ @Dan Boschen ...Thanks for your elaborate answer. For my design I am right now considering a noise-free channel. With this consideration in mind, from simulations I found that Bn = R/200 best works for my design, but it violates one of the specifications that I have, which is acquisition range(10 % of symbol rate which is 2Mhz). How to resolve this conflict? $\endgroup$
    – avi1987
    Commented Jun 3, 2016 at 18:11
  • $\begingroup$ When you say your design works best with Bn=R/200 in a noise-free channel; what is it about your result that you quantify as "working best"? Acquisition Range (meaning how far off in time you can go and still pull-in to a lock) is dependent on your timing discriminator (TED). I suggest both analyzing and then evaluating (to confirm analysis) what the transfer function of your timing discriminator actually is (you can do this with open loop testing at various static timing offsets, and look at what error signal term results prior to your loop filter. $\endgroup$ Commented Jun 6, 2016 at 11:51
  • 1
    $\begingroup$ Hi @FourierFlux Here when I mention SNR I am referring to the signal to noise in the waveform as measured just prior to detection. The timing loop and resampling process will modify the signal to noise ratio based on the loop bandwidth as described in this post. This SNR measurement would be done once the loop has converged as that is when we would actually be making decisions as to what data was transmitted (and the BER will be directly related to the SNR at that point in the system). Often we are trading acquisition time with this peformance metric or more optimally using dynamic loop BW. $\endgroup$ Commented Mar 14, 2020 at 1:51
  • 1
    $\begingroup$ @FourierFlux One direct measurement of SNR just prior to decision is the Error Vector Magnitude. The average vector length is the signal S and the rms error is the noise N and with such magnitude quantities the SNR is 20Log(S/N). I hope this helps answer your question. $\endgroup$ Commented Mar 14, 2020 at 1:53

Your Answer

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

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