What is a correct approach to baud-rate digital timing recovery for self-equalized line code
A good option for timing function for such signal happens to be the canonical $(a_k x_{k-1} - a_{k-1} x_k )$ with additional condition to calculate its value only when $a_k$ equals $a_{k-1}$ (i.e. when &quot;1&quot; is preceded by &quot;1&quot; or &quot;-1&quot; is preceded by &quot;-1&quot;). As a result, no additional digital filter is needed.
The reason for this condition came from observations of S-curve for this timing function (see M. Rice «Chapter 8 Symbol Timing Synchronization» in &quot;Digital communications: a discrete-time approach&quot;). Having timing function (timing error function) $e(k)$ written as
$$e(k)=a(k) x(kT+\tau) - a(k-1) x((k-1)T+\tau),$$
where $T$ - is a symbol period, and $\tau$ - is a phase error,
the S-curve is an expected value of $e(k,\tau)$:
$$g(\tau)=E\{e(k,\tau)\}.$$
For the signal samples the proper S-curve with a single zero crossing was obtained only for &quot;11&quot;, &quot;00&quot;, &quot;1100&quot; and &quot;0011&quot; symbol patterns. The shorter symbol pattern (i.e. $a_k=a_{k-1}$) was selected to simplify further implementation.
Here is an example plot of a signal sample and values of $e(k)$ as a function of a phase (which vaguely represents $g(\tau)$), for different symbol patterns.