Correct symbol timing clock skew
The Symbol Synchronizer block corrects for symbol timing clock skew for PAM, PSK, or QAM modulation schemes. The block accepts a single input port. To obtain a normalized estimate of the timing error, select the Normalized timing error output port check box. The block accepts a complex input signal and returns a complex output signal and a real timing error estimate. The Sym output is variable-size with maximum dimensions of , where Nsamp is the number of samples and Nsps is the samples per symbol. Output that would exceed this limit is truncated. The Err output has the same dimensions as the input signal.
Specify the modulation type as
OQPSK. The default setting is
Specify the timing error detector as
(decision-directed). The default setting is
Specify the number of samples per symbol as a positive integer scalar greater than or equal to 2. The default setting is 2.
Specify the damping factor of the loop filter as a positive real finite scalar. The default setting is 1. This parameter is tunable.
Specify the normalized loop bandwidth as a real scalar between 0 and 1. The bandwidth is normalized by the sample rate of the symbol synchronizer block. The default setting is 0.01. This parameter is tunable.
Set Normalized loop bandwidth to less than
ensure that the symbol synchronizer locks.
Specify the detector gain as a real positive finite scalar. The default setting is 2.7. This parameter is tunable.
Select this check box to provide the normalized timing error to an output port. The default for this parameter is selected.
Select the type of simulation to run.
Code generation. Simulate model
using generate C code. The first time you run a simulation,
Simulink generates C code for the block. The C code is reused
for subsequent simulations, as long as the model does not
change. This option requires additional startup time but
provides faster simulation speed than
Interpreted execution. Simulate
model using the MATLAB interpreter. This option shortens startup
time but has slower simulation speed than
The default setting is
This block implements the algorithm, inputs, and outputs described
page. The object properties correspond to the block parameters.
For OQPSK, the in-phase and quadrature signal components are first aligned (as in QPSK) using a buffer (state) to cache the last half symbol of the previous input. After initial alignment, the remaining synchronization processing is QPSK.
Correct for a fixed symbol timing offset on a noisy QPSK signal.
Open the doc_symbolsync model.
Run the model. The Variable Fractional Delay block is used to introduce a timing error of 2 samples. As the Raised Cosine Transmit Filter is configured to have 4 Output samples per symbol, the timing delay is 0.5 symbols. The constellation diagram without symbol synchronization shows that the QPSK symbols cannot be successfully resolved.
The constellation diagram for the signal after the synchronizer shows that the QPSK symbols can now be resolved.
Try to experiment with the model by changing the delay and the Timing error detector algorithm.
Recover frame synchronization from a QPSK system suffering from a variable timing error.
Load the doc_symbol_frame_sync model.
Run the model. The Before Sym Sync and After Sym Sync constellation diagram blocks show the effects of a timing error on the transmitted QPSK constellation. This timing error is introduced as a variable delay that ranges from 0 to 0.9 samples. The Symbol Synchronizer block corrects for clock skew between a single-carrier transmitter and receiver. Depending on the size of the timing error, the output dimensions of the symbol synchronizer vary. In this example, the symbol synchronizer returns a vector containing 99, 100, or 101 samples for a 100-sample input vector. To recover the input data, it is necessary to synchronize the output data with a valid clock reference, which requires symbol synchronization. Symbol synchronization aligns the output vector with a stable clock reference. The Frame Synchronizer block restores fixed sized vectors as invalid symbols are discarded. A Unipolar to Bipolar MATLAB function block precedes the Frame Synchronizer block because bipolar signals increase the magnitude of the frame synchronizer’s correlation peaks and, therefore, improve synchronizer performance.
The bit error rate (BER) is calculated by the Data Decoding block. Within that block, the input data is regenerated rather than being taken from the Bit Generation block because the BER is calculated only for valid frames. These frames are indicated by a signal from the frame synchronizer.
For the 20 dB signal-to-noise ratio used, the resultant BER is ≤ 10-5 which shows that the signal is recovered correctly.
The constellation diagram before the symbol synchronizer shows the effects of the variable timing error. Because the timing error varies over time, the constellation oscillates between corrupted and clean states.
The After Sym Sync constellation diagram shows that the synchronizer removes the effects of the variable timing error.
Experiment with the model by commenting through (Ctrl-Shift-Y) the Symbol Synchronizer block and setting the decimation factor of the Raised Cosine Receive Filter block to 2. The BER increases significantly because the timing error corrupts the received signal to the point that bit errors occur.
|Port||Supported Data Types|
|Normalized Timing Error|
 Rice, Michael. Digital Communications: A Discrete-Time Approach. Upper Saddle River, NJ: Prentice Hall, 2009, pp. 434–513.
 Mengali, Umberto and Aldo N. D’Andrea. Synchronization Techniques for Digital Receivers. New York: Plenum Press, 1997.