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 single-carrier 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 200-sample 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 signal-to-noise 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 single-carrier 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 variable-size scalar or column vector that has the same data type as the input. For an input with dimensions of Nsamp-by-1, the output at Sym has dimensions of Nsym-by-1. Nsym is approximately equal to Nsamp divided by the Nsps. Nsps is equal to the Samples per symbol parameter value. The output length is truncated if it exceeds the maximum output size of .
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
Zero-Crossing
(decision-directed)
(default) | Gardner (non-data-aided)
| Early-Late (non-data-aided)
| Mueller-Muller (decision-directed)
Type of timing error detector, specified as Zero-Crossing
(decision-directed)
, Gardner
(non-data-aided)
, Early-Late
(non-data-aided)
, or Mueller-Muller
(decision-directed)
. 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 Nsps 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 (Bn) is normalized by the symbol rate (Ts) of the input signal. For more information, see BnTs 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 Kp 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 Interpreted Execution vs. Code Generation (Simulink).
Block Characteristics
Data Types |
|
Multidimensional Signals |
|
Variable-Size Signals |
|
Tips
Demodulate symbol-timing synchronized, OQPSK-modulated signals by using the QPSK Demodulator Baseband block. You can not OQPSK demodulate the output of the Symbol Synchronizer block because, for an OQPSK-modulated input signal, the block outputs a symbol-rate QPSK-modulated signal. The OQPSK Demodulator Baseband block requires an OQPSK-modulated 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 in-phase 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, , after correcting for the clock skew between the transmitter and receiver.
Timing Error Detection (TED)
The symbol timing synchronizer supports non-data-aided TED and decision-directed TED methods. This table shows the timing estimate expressions for the TED method options.
TED Method | Expression |
---|---|
Zero-crossing (decision-directed) | |
Gardner (non-data-aided) | |
Early-late (non-data-aided) | |
Mueller-Muller (decision-directed) |
The non-data-aided TED (Gardner and early-late) methods use received samples without any knowledge of the transmitted signal or the results of the channel estimation. Non-data-aided TED is used to estimate the timing error for signals with modulation schemes that have constellation points aligned with the in-phase or quadrature axis. Examples of signals suitable for the Gardner or early-late methods include QPSK-modulated signals with a zero phase offset that has points at {1+0i, 0+1i, -1+0i, 0−1i} and BPSK-modulated signals with a zero phase offset.
The early-late 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 early-late method.
Gardner method — The Gardner method is a non-data-aided 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 early-late gate method.
Early-late method — The early-late method is a non-data-aided 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 decision-directed TED (zero-crossing and Mueller-Muller) methods use the sign
function to estimate the
in-phase and quadrature components of received samples, which results in lower
computational complexity than the non-data-aided TED methods.
Zero-crossing method — The zero-crossing method is a decision-directed technique that requires 2 samples per symbol at the input to the synchronizer. It is used in low-SNR conditions for all values of excess bandwidth and in moderate-SNR conditions for moderate excess bandwidth factors in the approximate range [0.4, 0.6].
Mueller-Muller method — The Mueller-Muller method is a decision-directed 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 Mueller-Muller method has no self noise. For narrowband signaling in the presence of noise, the performance of the Mueller-Muller method improves as the excess bandwidth factor of the pulse decreases.
Because the decision-directed methods (zero-crossing and Mueller-Muller) estimate
timing error based on the sign of the in-phase and quadrature components of signals
passed to the synchronizer, they are not recommended for constellations that have
points with either a zero in-phase or a quadrature component. and are the in-phase and quadrature components of the input signals to
the timing error detector, where is the estimated timing error. The Mueller-Muller method
coefficients and are the estimates of and . The timing estimates are made by applying the sign
function to the in-phase
and quadrature components and are used for only the decision-directed TED
methods.
Interpolator
The time delay is estimated from the fixed-rate 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 Discrete-Time 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 modulo-1 counter interpolation control to provide the strobe and the fractional interval for use with the interpolator.
Loop Filter
The synchronizer uses a proportional-plus integrator (PI) loop filter. The proportional gain, K1, and the integrator gain, K2, are calculated by
and
The interim term, θ, is given by
where:
Nsps is the number of samples per symbol.
ζ is the damping factor.
BnTs is the loop bandwidth (Bn) normalized to the symbol rate (Ts).
Kp is the detector gain.
References
[1] Rice, Michael. Digital Communications: A Discrete-Time 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)