# Gardner timing recovery and constellation diagram

I would like to ask for some guidance regarding 2 issues mainly QPSK and Gardner algorithm for timing recovery.

I am having as input a set of IQ samples (10 samples per symbol) to which I need to provide timing recovery.

Having red Gardner’s landmark paper on that concept (A BPSK/QPSK Timing-Error Detector for Sampled Receivers) I understand that in a simple BPSK case where transition exists (in a pulse always) the two first terms (x[nT]-x[(n-1)T]) of the formula e={x[nT]-x[(n-1)T] }x[nT+T/2] cancel out and the error approaches zero. In cases where no transition exists then we don’t get the desirable cancelation but statistically that is going to be resolved later due to negative symbols inserted. All that above is quite straightforward the complications start with the obscurity behind the input samples I am having and the relation they have with the constellation diagram and the initial pulses.

Above you can see the constellation diagram (of my samples) plotted. The axes are scaled this way because the numbers are represented in 8 bit integers. Now if I choose a smaller chunk of my sample set let say 300 and scale them properly (divide by 256) I get that :(only for clarification purposes to show the samples)

Is apparent by the concept of timing recovery itself that needs to be kept only,a number of samples that fall very close to the 4 constellation points and discard all the rest.

Here I am having two main doubts the first is fundamental related to QPSK. How do I connect the constellation diagram with the actual waveform?

Gardner was explaining his concept utilizing 2 samples only.In my case that 10 samples per symbol are utilised means that for each pulse am sampling 10 times (sorry for the oversimplification) and the I part is the magnitude and Q the angle of each sample?

Is it like splitting the initial wave or pulse in 10 samples (sorry again for that simplifications I know they sound trivial to many but are necessary to clear my doubts) instead of 2 that Gardner was explaining?

If yes then how do I employ the formula,I mean, how do I set the middle (x[n*T+T/2]) term and how the other two x[nT]-x[(n-1)T]?

However, In QPSK things are more complicated due to the fact that both I and Q samples exist.

That introduces a new term in the Gardner’s equation e={x[nT]-x[(n-1)T] }x[nT+T/2]+{y[nT]-y[(n-1)T] }y[nT+T/2] .Where, the second term refers to the Q samples,and introduces a greater difficulty on realizing where and how to used the formula.

Any ideas on how to employ that for QPSK as well?

Thanks a lot

George

Your timing error detector should be run once for each input symbol. As you noted, your signal is far more oversampled than you need to be, so you won't end up using most of them for the purposes of timing error detection. As the paper suggests, the detector uses three samples, each separated by half the symbol period $T$.
So, for the first timing error calculation, you would use $x[0], x[5], x[10]$, for the next you would use $x[10], x[15], x[20]$, and so on. Over time you will develop an estimate of the timing error, which you can use to select the correct sampling phase for the soft symbol decision. This will reduce your signal down to one sample per symbol, giving you a (hopefully) QPSK-looking constellation.