Symbol Synchronizer
Correct symbol timing clock skew
Libraries:
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.
Examples
Symbol and Frame Synchronization
Recover frame synchronization in a QPSK system impaired by a variable timing error. The example shows the benefit of performing symbol synchronization to assist the frame synchronization.
The cm_ex_symbol_frame_sync
model compares frame synchronization performance with and without symbol synchronization. The Variable Fractional Delay block introduces a varying timing error to a root raised cosine (RRC) filtered QPSK signal. After the AWGN block, the receive path is duplicated to compare performance with and without a Symbol Synchronizer block in the path. The Symbol Synchronizer block corrects for clock skew between the transmitter and receiver, aligning the output signal with a valid clock reference. For the timing error conditions in this example, the symbol synchronizer returns a vector containing 99, 100, or 101 symbols for a 200sample input vector.
The Frame Synchronizer block aligns the symbol stream along correct frame boundaries using the frame header present in the signal. It also provides the valid frame indicator signal to the BER Data Decoding subsystem, which calculates the bit error rate (BER). To avoid calculating the BER on nonvalid frames, the BER Data Decoding subsystem regenerates the input data bits rather than using the Bit Generation block output.
For a 20 dB signaltonoise ratio and variable timing error in the range of [0, 0.9] samples, signal recovery is successful on the receiver path that includes symbol synchronization. The timing error varies over time, causing the constellation to oscillate between corrupted and clean states as seen in the Before Sym Sync signal in the Constellation Diagram block. The After Sym Sync signal in the constellation diagram shows that the symbol synchronizer removes the variable timing error signal impairment.
The BER with and without symbol synchronization show the performance improvement due to the Symbol Synchronizer block.
Error rate with symbol synchronization: 0.000 Error rate without symbol synchronization: 0.010
QPSK Signal Timing Offset Correction
Correct a fixed symbol timing offset on a noisy QPSK signal by using the Symbol Synchronizer block. The number of symbols output by the Symbol Synchronizer block is variable size. If a fixed size signal is required for downstream processing, you can use a Selector (Simulink) block to convert the Symbol Synchronizer output to a fixed size signal.
Explore Model
The Delay block adds a fixed timing error of 2 samples to the signal at the Raised Cosine Transmit Filter block output. Since the Raised Cosine Transmit Filter block configuration outputs 4 samples per symbol, the timing delay is 0.5 symbols. The output of the symbol synchronizer is converted to a fixed size signal by the Selector block.
View Results
To see how the symbol synchronizer improves QPSK symbol resolution, view the constellations of the signal before symbol synchronization, and the variable size and fixed size signals after symbol synchronization.
Ports
Input
Samp — 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 value. The output length is truncated if it exceeds the maximum output size of $$\lceil \frac{{N}_{\text{samp}}}{{N}_{\text{sps}}}\times 1.1\rceil $$.
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
To edit block parameters interactively, use the Property Inspector. From the Simulink^{®} Toolstrip, on the Simulation tab, in the Prepare gallery, select Property Inspector.
Modulation type — Modulation type
PAM/PSK/QAM
(default)  OQPSK
Modulation type, specified as PAM/PSK/QAM
, or
OQPSK
. When using OQPSK modulation, see Tips.
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. For more information, see N_{sps} in Loop Filter.
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 ζ in Loop Filter.
Tunable: Yes
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 (B_{n}) is normalized by the symbol rate (T_{s}) of the input signal. For more information, see B_{n}T_{s} in 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
Detector gain — Phase detector gain
2.7
(default)  positive scalar
Phase detector gain, specified as a positive scalar. For more information, see K_{p} in Loop Filter.
Tunable: Yes
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 model reuses the C code for subsequent simulations unless the model changes. This option requires additional startup time, but the speed of the subsequent simulations is faster than with theInterpreted execution
option.Interpreted execution
— Simulate the model by using the MATLAB^{®} interpreter. This option shortens startup time, but the speed of subsequent simulations is slower than with theCode generation
option. In this mode, you can debug the source code of the block.
For more information, see Simulation Modes (Simulink).
Block Characteristics
Data Types 

Multidimensional Signals 

VariableSize Signals 

Tips
Demodulate symboltiming synchronized, OQPSKmodulated signals by using the QPSK Demodulator Baseband block. You can not OQPSK demodulate the output of the Symbol Synchronizer block because, for an OQPSKmodulated input signal, the block outputs a symbolrate QPSKmodulated signal. The OQPSK Demodulator Baseband block requires an OQPSKmodulated input signal with two samples per symbol.
Algorithms
Symbol Synchronization Overview
The symbol timing synchronizer algorithm is based on a phased lock loop (PLL) algorithm that consists of four components:
Timing error detector (TED)
Interpolator
Interpolation controller
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)$$ 
The nondataaided TED (Gardner and earlylate) methods use 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.
The earlylate method is similar to the Gardner method but the Gardner method performs better in systems with high SNR values because it has lower self noise than the earlylate method.
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 decisiondirected TED (zerocrossing and MuellerMuller) methods use the sign
function to estimate the
inphase and quadrature components of received samples, which results in lower
computational complexity than the nondataaided TED methods.
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}_{\text{n}}{T}_{\text{s}}}{{N}_{\text{sps}}}}}{\zeta +{\scriptscriptstyle \frac{1}{4\zeta}}}\text{\hspace{0.17em}},$$
where:
N_{sps} is the number of samples per symbol.
ζ is the damping factor.
B_{n}T_{s} is the loop bandwidth (B_{n}) normalized to the symbol rate (T_{s}).
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™.
Version History
Introduced in R2015a
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)