Recover symbol timing phase using Gardner's method
Note: Gardner Timing Recovery will be removed in a future release. Use the Symbol Synchronizer block instead. 
Timing Phase Recovery sublibrary of Synchronization
The Gardner Timing Recovery block recovers the symbol timing phase of the input signal using Gardner's method. This block implements a nondataaided feedback method that is independent of carrier phase recovery. The timing error detector that forms part of this block's algorithm requires at least two samples per symbol, one of which is the point at which the decision can be made.
The recovery method estimates the symbol timing phase offset for each incoming symbol and outputs the signal value corresponding to the estimated symbol sampling instant.
The second output returns the estimated timing phase recovery offset for each symbol, which is a nonnegative real number less than N, where N is the number of samples per symbol.
The error update gain parameter is the step size used for updating the successive phase estimates.
By default, this block has one input port. Typically, the input signal is the output of a receive filter that is matched to the transmitting pulse shape. For best results, the input signal power should be less than 1.
This block accepts a scalarvalued or column vector input signal. The input uses N samples to represent each symbol, where N > 1 is the Samples per symbol parameter.
For a column vector input signal, the block operates in singlerate processing mode. In this mode, the output signal inherits its sample rate from the input signal. The input length must be a multiple of N.
For a scalar input signal, the block operates in multirate processing mode. In this mode, the input and output signals have different sample rates. The output sample rate equals N multiplied by the input sample rate.
This block accepts input signals of type Double or Single
If you set the Reset parameter to On
nonzero input via port
, then the block has a second
input port, labeled Rst
. The Rst
input
determines when the timing estimation process restarts, and must be
a scalar.
If the input signal is a scalar value, the sample
time of the Rst
input equals the symbol period
If the input signal is a column vector, the sample
time of the Rst
input equals the input port sample
time
This block accepts reset signals of type Double or Boolean
The block has two output ports, labeled Sym
and Ph
:
The Sym
output is the result of
applying the estimated phase correction to the input signal. This
output is the signal value for each symbol, which can be used for
decision purposes. The values in the Sym
output
occur at the symbol rate:
For a column vector input signal of length N*R,
the Sym
output is a column vector of length R having
the same sample rate as the input signal.
For a scalar input signal, the sample rate of the Sym
output
equals N multiplied by the input sample rate.
The Ph
output gives the phase estimate
for each symbol in the input.
The Ph
output contains nonnegative real numbers
less than N. Noninteger values for the phase estimate
correspond to interpolated values that lie between two values of the
input signal. The sample time of the Ph
output
is the same as that of the Sym
output.
Note
If the 
The output signal inherits its data type from the input signal.
When the input signal is a vector, this block incurs a delay of two symbols. When the input signal is a scalar, this block incurs a delay of three symbols.
The number of samples, N, that represent each symbol in the input signal. This must be greater than 1.
A positive real number representing the step size that the block uses for updating successive phase estimates. Typically, this number is less than 1/N, which corresponds to a slowly varying phase.
This parameter is tunable in normal mode, Accelerator mode and Rapid Accelerator mode. If you use the Simulink^{®} Coder™ rapid simulation (RSIM) target to build an RSIM executable, then you can tune the parameter without recompiling the model. For more information, see Tunable Parameters (Simulink) in the Simulink User's Guide.
Determines whether and under what circumstances the block restarts
the phase estimation process. Choices are None
, Every
frame
, and On nonzero input via port
.
The last option causes the block to have a second input port, labeled
Rst.
This block uses a timing error detector whose result for the kth symbol is e(k), given by
$$\begin{array}{c}e(k)={a}_{I}(k)+{a}_{Q}(k)\\ {a}_{I}(k)=\left\{{y}_{I}((k1)T+{d}_{k1}){y}_{I}(kT+{d}_{k})\right\}{y}_{I}(kTT/2+{d}_{k1})\\ {a}_{Q}(k)=\left\{{y}_{Q}((k1)T+{d}_{k1}){y}_{Q}(kT+{d}_{k})\right\}{y}_{Q}(kTT/2+{d}_{k1})\end{array}$$
where
y_{I} and y_{Q} are the inphase and quadrature components, respectively, of the block's input signal
T is the symbol period
d_{k} is the phase estimate for the kth symbol
Notice from the expressions in curly braces above that the timing error detector approximates the derivative of y using finite differences.
Port  Supported Data Types 

Input 

Reset 

Output 

[1] Gardner, F. M., "A BPSK/QPSK TimingError Detector for Sampled Receivers", IEEE Transactions on Communications, Vol. COM34, No. 5, May 1986, pp. 423429.
[2] Mengali, Umberto and Aldo N. D'Andrea, Synchronization Techniques for Digital Receivers, New York, Plenum Press, 1997.
[3] Meyr, Heinrich, Marc Moeneclaey, and Stefan A. Fechtel, Digital Communication Receivers, Vol 2, New York, Wiley, 1998.
[4] Oerder, M., "Derivation of Gardner's TimingError Detector from the ML principle", IEEE Transactions on Communications, Vol. COM35, No. 6, June 1987, pp. 684685.