# Clock Recovery Challenges in DSP-Based Coherent Single-Mode and Multi-Mode Optical Systems
## 2 Clock Recovery in Coherent Optical Receivers
### Feedback Timing Synchronization Method  
In the 1980's, [PERSON] proposed a feedback algorithm that needed only two samples per symbol for timing estimation [24], resulting in low computational complexity. Figure 1 shows the implementation of the method. This algorithm is based on the principle that PSK signals ideally have constant modulus. The signal power is maximal when the signal is sampled at the optimum decision instant, and it loses energy in the transitions between its constellation points. To illustrate it, Figure 2a shows a quadriphase shift keying (QPSK) constellation sampled at the optimum decision instants in red, and the transitions between symbols, in black. Figure 2b shows the eye diagram of the in-phase component, and Figure 2c shows the eye diagram of the power of the QPSK signal. The reader can note that while in the transitions, the signal power is lower on average, compared to the optimum decision instant. Therefore, the algorithm tries to maximize the power of the received signal at the sampling instant by adjusting its timing. To achieve it, the timing error detector block in Figure 1 computes the Gardner timing error function, \(e_{Gardner}\), given by the inflection point by the derivative of the power of the interpolator output, \(b[n]\). Then,  
\[ \begin{split} e_{Gardner}[n]&=P_{b}^{\prime}[n]= \left(\overline{b}[n]b[n]\right)^{\prime}=\overline{b}^{\prime}[n]b[n]+ \overline{b}[n]b^{\prime}[n]\\ &=\left(b_{i}^{\prime}[n]-jb_{q}^{\prime}[n]\right)\left(b_{i}[n ]+jb_{q}[n]\right)+\left(b_{i}[n]-jb_{q}[n]\right)\left(b_{i}^{\prime}[n]+jb_ {q}^{\prime}[n]\right)\\ &=2b_{i}[n]b_{i}^{\prime}[n]+2b_{q}[n]b_{q}^{\prime}[n],\end{split}  \tag{1}\]  
where \(n\) is the discrete index at 2 samples per symbol period, \(P_{b}[n]\) is the power of interpolator output, \(b_{i}[n]\) and \(b_{q}[n]\) are, respectively, the real and imaginary parts of \(b[n]\), the symbol \({}^{\prime}\) indicates the first derivative, and the overbar indicates the complex conjugate. Numerically approximating the signal derivative by  
\[b^{\prime}[n]=\frac{1}{2}\left(b\left[n+1\right]-b\left[n-1\right]\right)\,, \tag{2}\]  
then, adjusting to make the signal causal and averaging through \(N\) symbols, the timing error function in average, \(\delta_{Gardner}\), is defined by  
Figure 1: Timing recovery implementation. Figure 2: (a) QPSK constellation, in red, with its intersymbol transitions, in black; (b) In-phase component eye-diagram; (c) Power eye-diagram; (d) S-curve, in red, and all values \(e_{Gardner}\) can assume in a QPSK signal, in black. \[ \begin{split}\hat{e}_{Gardner}&=\frac{1}{N}\sum_{n=0}^{N-1} \left\{b_{i}[2n-1]\left(b_{i}[2n]-b_{i}[2n-2]\right)+b_{q}[2n-1]\left(b_{q}[2n]- b_{q}[2n-2]\right)\right\}\\ &=\frac{1}{N}\Re\bigg{\{}\sum_{n=0}^{N-1}\left[b^{*}[2n-1]\left( b[2n]-b[2n-2]\right)\right]\bigg{\}}.\end{split}  \tag{3}\]  
where \(\Re\) indicates the real part. Figure 2d shows all the possible values \(e_{Gardner}[n]\) can assume, in black, and \(\hat{e}_{Gardner}\), in red. This last curve is known in the literature as the S-curve and can be used to indicate if the signal is late or in advance compared to the optimum decision instant. The timing error function is then passed through a proportional-plus-integral controller (P + I) that filters and controls the clock frequency and phase of a numeric controlled oscillator (NCO) that will therefore drive the timing of the signal interpolators, locking when the timing error function is zero (in the middle of the S-curve). Using Fourier transform properties, one can show that the Gardner's timing error function, can be computed in frequency domain by [26]  
\[\hat{e}_{[PERSON]}=\frac{2}{K}\sum_{k=1}^{K/2}\bigg{\{}\sin\left(\frac{2\pi k}{ K}\right)\Im(B[k]B[k+K/2])\bigg{\}}, \tag{4}\]  
where \(\Im\) indicates imaginary part, \(B[k]\) is the discrete Fourier transform of \(b[n]\), and \(K\) is the discrete Fourier transform length.