Compensate for carrier frequency offset
The Carrier Synchronizer block compensates for carrier frequency and phase offsets using a closed-loop approach for BPSK, QPSK, OQPSK, 8-PSK, QAM, and PAM modulation schemes. The block accepts a single input port. To obtain an estimate of the phase error in radians, select the Estimated phase error output port check box. The block accepts a sample- or frame-based complex input signal and returns a complex output signal and a an real phase estimate. The block outputs have the same dimensions as the input.
This block does not resolve phase ambiguities created by the synchronization algorithm. As indicated in this table, the potential phase ambiguity introduced by the synchronizer depends on the modulation type:
Modulation Phase Ambiguity (degrees)
0, 90, 180, 270
0, 45, 90, 135, 180, 225, 270, 315
For best results, apply carrier synchronization to non-oversampled signals.
Specify the modulation type as
- Modulation phase offset
Specify the method used to calculate the modulation phase offset as either
Autoapplies the traditional offset for the specified modulation type.
Modulation Phase Offset (radians)
Customenables the Custom phase offset (radians) parameter.
- Custom phase offset (radians)
Specify the phase offset in radians as a real scalar. This parameter is available only when Modulation phase offset is set to
- Samples per symbol
Specify the number of samples per symbol as a positive integer scalar.
- Damping factor
Specify the damping factor of the loop as a positive real finite scalar.
- Normalized loop bandwidth
Specify the normalized loop bandwidth as a real scalar between 0 and 1. The bandwidth is normalized by the sample rate of the carrier synchronizer block.
- Estimated phase error output port
Select this check box to provide the estimated phase error to an output port.
- Simulate using
Select the simulation mode.
On the first model run, simulate and generate code for the block using only MATLAB® functions supported for code generation. If the structure of the block does not change, subsequent model runs do not regenerate the code.
Simulate model using all supported MATLAB functions. Choosing this option can slow simulation performance.
This block implements the algorithm, inputs, and outputs described on the
comm.CarrierSynchronizer reference page. The object properties correspond
to the block parameters.
Correct for Frequency and Phase Offset
Correct for a phase and frequency offset imposed on a noisy 16-QAM channel by using the Carrier Synchronizer block.
doc_qamcarriersync model configures a 16-QAM signal, filters the signal through a noisy AWGN channel, adds phase and frequency offset, and then corrects the offsets by using the Carrier Synchronizer block.
The constellation diagram shows the signal constellation before and after carrier synchronization. Before synchronization, the signal appears as a spiral pattern that results from a phase and frequency offset. After the carrier synchronizer converges to a solution, the signal symbols are grouped around the reference constellation.
Experiment with the parameters in the Phase/Frequency Offset and Carrier Synchronizer blocks. By varying these parameters, you can change how quickly the output conforms to an ideal 16-QAM constellation. If the signal does not converge to the expected constellation, additional measures can be taken to achieve successful recovery.
Supported Data Types
|Port||Supported Data Types|
|Phase Error Estimate||
 Rice, Michael. Digital Communications: A Discrete-Time Approach. Upper Saddle River, NJ: Prentice Hall, 2009, pp. 359–393.
 Huang, Zhijie, Zhiqiang Yi, Ming Zhang, and Kuang Wang. “8PSK Demodulation for New Generation DVB-S2.” International Conference on Communications, Circuits and Systems, 2004. ICCCAS 2004. Vol. 2, 2004, pp. 1447–1450.
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Introduced in R2015a