Symbol Synchronizer
Correct symbol timing clock skew
 Library:
Communications Toolbox / Synchronization
Description
The Symbol Synchronizer block corrects symbol timing clock skew for PAM, PSK, QAM, or OQPSK modulation schemes between a singlecarrier transmitter and receiver. For more information, see Symbol Synchronization Overview.
Note
The input signal operates on a sample rate basis, while the output signal operates on a symbol rate basis.
Ports
Input
samples
— Input samples
scalar (default)  column vector
Input samples, specified as a scalar or column vector of a PAM, PSK, QAM, or OQPSK modulated singlecarrier signal. This port in unnamed on the block.
Data Types: double
 single
Complex Number Support: Yes
Output
Sym
— Output signal symbols
scalar  column vector
Output signal symbols, returned as a variablesize scalar or column vector that has the same data type as the input. For an input with dimensions of N_{samp}by1, the output at Sym has dimensions of N_{sym}by1. N_{sym} is approximately equal to N_{samp} divided by the N_{sps}. N_{sps} is equal to the Samples per symbol parameter. If the output exceeds the maximum output size of $$\lceil \frac{{N}_{\text{samp}}}{{N}_{\text{sps}}}\times 1.1\rceil $$, it is truncated.
This port is unnamed when Normalized timing error output port is not selected.
Err
— Estimated timing error
scalar  column vector
Estimated timing error for each input sample, returned as a scalar or column vector with values in the range [0, 1]. The estimated timing error is normalized by the input sample time. Err has the same data type and size as the input signal.
Dependencies
To enable this port, select Normalized timing error output port.
Parameters
Modulation type
— Modulation type
PAM/PSK/QAM
(default)  OQPSK
Modulation type, specified as PAM/PSK/QAM
, or
OQPSK
.
Timing error detector
— Type of timing error detector
ZeroCrossing
(decisiondirected)
(default)  Gardner (nondataaided)
 EarlyLate (nondataaided)
 MuellerMuller (decisiondirected)
Type of timing error detector, specified as ZeroCrossing
(decisiondirected)
, Gardner
(nondataaided)
, EarlyLate
(nondataaided)
, or MuellerMuller
(decisiondirected)
. This parameter assigns the timing
error detection scheme used in the synchronizer.
For more information, see Timing Error Detection (TED).
Samples per symbol
— Samples per symbol
2
(default)  positive integer greater than 1
Samples per symbol, specified as a positive integer greater than 1.
Data Types: double
Damping factor
— Damping factor of the loop filter
1
(default)  positive scalar
Damping factor of the loop filter, specified as a positive scalar. For more information, see Loop Filter.
Tunable: Yes
Data Types: double
 single
Normalized loop bandwidth
— Normalized bandwidth of loop filter
0.01
(default)  positive scalar less than 1
Normalized bandwidth of the loop filter, specified as a positive scalar less than 1. The loop bandwidth is normalized by the sample rate of the input signal. For more information, see Loop Filter.
Note
To ensure that the symbol synchronizer locks, set the
Normalized loop bandwidth parameter to a value
less than 0.1
.
Tunable: Yes
Data Types: double
 single
Detector gain
— Phase detector gain
2.7
(default)  positive scalar
Phase detector gain, specified as a positive scalar.
Tunable: Yes
Data Types: double
 single
Normalized timing error output port
— Enable normalized timing error output port
on
(default)  off
Select this parameter to output normalized timing error data at the output port Err.
Simulate using
— Type of simulation to run
Code generation
(default)  Interpreted execution
Type of simulation to run, specified as Code generation
or
Interpreted execution
.
Code generation
–– Simulate the model by using generated C code. The first time you run a simulation, Simulink^{®} generates C code for the block. The C code is reused for subsequent simulations unless the model changes. This option requires additional startup time, but the speed of the subsequent simulations is faster thanInterpreted execution
.Interpreted execution
–– Simulate the model by using the MATLAB^{®} interpreter. This option requires less startup time than theCode generation
method, but the speed of subsequent simulations is slower. In this mode, you can debug the source code of the block.
Model Examples
Block Characteristics
Data Types 

Multidimensional Signals 

VariableSize Signals 

More About
Symbol Synchronization Overview
The symbol timing synchronizer algorithm is based on a phased lock loop (PLL) algorithm that consists of four components:
A timing error detector (TED)
An interpolator
An interpolation controller
A loop filter
For OQPSK modulation, the inphase and quadrature signal components are first aligned (as in QPSK modulation) using a state buffer to cache the last half symbol of the previous input. After initial alignment, the remaining synchronization process is the same as for QPSK modulation.
This block diagram shows an example of a timing synchronizer. In the figure, the symbol timing PLL operates on x(t), the received sample signal after matched filtering. The symbol timing PLL outputs the symbol signal, $$x(k{T}_{\text{s}}+\widehat{\tau})$$, after correcting for the clock skew between the transmitter and receiver.
Timing Error Detection (TED)
The symbol timing synchronizer supports nondataaided TED and decisiondirected TED methods. This table shows the timing estimate expressions for the TED method options.
TED Method  Expression 

Zerocrossing (decisiondirected)  $$e(k)=x\left((k1/2){T}_{s}+\widehat{\tau}\right)\left[{\widehat{a}}_{0}(k1){\widehat{a}}_{0}(k)\right]+y\left((k1/2){T}_{s}+\widehat{\tau}\right)\left[{\widehat{a}}_{1}(k1){\widehat{a}}_{1}(k)\right]$$ 
Gardner (nondataaided)  $$e(k)=x\left((k1/2){T}_{s}+\widehat{\tau}\right)\left[x\left((k1){T}_{s}+\widehat{\tau}\right)x(k{T}_{s}+\widehat{\tau})\right]+y\left((k1/2){T}_{s}+\widehat{\tau}\right)\left[y\left((k1){T}_{s}+\widehat{\tau}\right)y(k{T}_{s}+\widehat{\tau})\right]$$ 
Earlylate (nondataaided)  $$e(k)=x(k{T}_{s}+\widehat{\tau})\left[x\left((k+1/2){T}_{s}+\widehat{\tau}\right)x\left((k1/2){T}_{s}+\widehat{\tau}\right)\right]+y(k{T}_{s}+\widehat{\tau})\left[y\left((k+1/2){T}_{s}+\widehat{\tau}\right)y\left((k1/2){T}_{s}+\widehat{\tau}\right)\right]$$ 
MuellerMuller (decisiondirected)  $$e(k)={\widehat{a}}_{0}(k1)x(k{T}_{s}+\widehat{\tau}){\widehat{a}}_{0}(k)x\left((k1){T}_{s}+\widehat{\tau}\right)+{\widehat{a}}_{1}(k1)y(k{T}_{s}+\widehat{\tau}){\widehat{a}}_{1}(k)y\left((k1){T}_{s}+\widehat{\tau}\right)$$ 
Nondataaided TED uses received samples without any knowledge of the transmitted signal or the results of the channel estimation. Nondataaided TED is used to estimate the timing error for signals with modulation schemes that have constellation points aligned with the inphase or quadrature axis. Examples of signals suitable for the Gardner or earlylate methods include QPSKmodulated signals with a zero phase offset that has points at {1+0i, 0+1i, 1+0i, 0−1i} and BPSKmodulated signals with a zero phase offset.
Gardner method — The Gardner method is a nondataaided feedback method that is independent of carrier phase recovery. It is used for baseband systems and modulated carrier systems. More specifically, this method is used for systems that use a linear modulation type with Nyquist pulses that have an excess bandwidth between approximately 40% and 100%. Examples include systems that use PAM, PSK, QAM, or OQPSK modulation and that shape the signal using raised cosine filters whose rolloff factor is between 0.4 and 1. In the presence of noise, the performance of this timing recovery method improves as the excess bandwidth increases (or rolloff factor increases in the case of a raised cosine filter). The Gardner method is similar to the earlylate gate method.
Earlylate method — The earlylate method is a nondataaided feedback method. It is used for systems that use a linear modulation type such as PAM, PSK, QAM, or OQPSK modulation. For example, systems using a raised cosine filter with Nyquist pulses. In the presence of noise, the performance of this timing recovery method improves as the excess bandwidth of the pulse increases (or rolloff factor increases in the case of a raised cosine filter).
The earlylate method is similar to the Gardner method. The Gardner method performs better in systems with high SNR values because it has lower self noise than the earlylate method.
Decisiondirected TED uses the sign
function to estimate the
inphase and quadrature components of received samples, which result in lower
computational complexity than nondataaided TED.
Zerocrossing method — The zerocrossing method is a decisiondirected technique that requires 2 samples per symbol at the input to the synchronizer. It is used in lowSNR conditions for all values of excess bandwidth and in moderateSNR conditions for moderate excess bandwidth factors in the approximate range [0.4, 0.6].
MuellerMuller method — The MuellerMuller method is a decisiondirected feedback method that requires prior recovery of the carrier phase. When the input signal has Nyquist pulses (for example, when using a raised cosine filter), the MuellerMuller method has no self noise. For narrowband signaling in the presence of noise, the performance of the MuellerMuller method improves as the excess bandwidth factor of the pulse decreases.
Because the decisiondirected methods (zerocrossing and MuellerMuller) estimate
timing error based on the sign of the inphase and quadrature components of signals
passed to the synchronizer, they are not recommended for constellations that have
points with either a zero inphase or a quadrature component. $$x(k{T}_{\text{s}}+\widehat{\tau})$$ and $$y(k{T}_{\text{s}}+\widehat{\tau})$$ are the inphase and quadrature components of the input signals to
the timing error detector, where $$\widehat{\tau}$$ is the estimated timing error. The MuellerMuller method
coefficients $${\widehat{a}}_{0}(k)$$ and $${\widehat{a}}_{1}(k)$$ are the estimates of $$x(k{T}_{\text{s}}+\widehat{\tau})$$ and $$y(k{T}_{\text{s}}+\widehat{\tau})$$. The timing estimates are made by applying the sign
function to the inphase
and quadrature components and are used for only the decisiondirected TED
methods.
Interpolator
The time delay is estimated from the fixedrate samples of the matched filter, which are asynchronous with the symbol rate. Because the resulting samples are not aligned with the symbol boundaries, an interpolator is used to "move" the samples. Because the time delay is unknown, the interpolator must be adaptive. Moreover, because the interpolant is a linear combination of the available samples, it can be thought of as the output of a filter.
The interpolator uses a piecewise parabolic interpolator with a Farrow structure and coefficient α set to 1/2 (see Rice, Michael, Digital Communications: A DiscreteTime Approach).
Interpolation Control
Interpolation control provides the interpolator with the basepoint index and fractional interval. The basepoint index is the sample index nearest to the interpolant. The fractional interval is the ratio of the time between the interpolant and its basepoint index and the interpolation interval.
Interpolation is performed for every sample, and a strobe signal is used to determine if the interpolant is output. The synchronizer uses a modulo1 counter interpolation control to provide the strobe and the fractional interval for use with the interpolator.
Loop Filter
The synchronizer uses a proportionalplus integrator (PI) loop filter. The proportional gain, K_{1}, and the integrator gain, K_{2}, are calculated by
$${K}_{1}=\frac{4\zeta \theta}{\left(1+2\zeta \theta +{\theta}^{2}\right){K}_{p}}$$
and
$${K}_{2}=\frac{4{\theta}^{2}}{\left(1+2\zeta \theta +{\theta}^{2}\right){K}_{p}}\text{\hspace{0.17em}}.$$
The interim term, θ, is given by
$$\theta =\frac{{\scriptscriptstyle \frac{{B}_{n}{T}_{\text{s}}}{N}}}{\zeta +{\scriptscriptstyle \frac{1}{4\zeta}}}\text{\hspace{0.17em}},$$
where:
N is the number of samples per symbol.
ζ is the damping factor.
B_{n}T_{s} is the normalized loop bandwidth.
K_{p} is the detector gain.
References
[1] Rice, Michael. Digital Communications: A DiscreteTime Approach. Upper Saddle River, NJ: Prentice Hall, 2008.
[2] Mengali, Umberto and Aldo N. D’Andrea. Synchronization Techniques for Digital Receivers. New York: Plenum Press, 1997.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 United Kingdom (English)