Main Content

Carrier Synchronizer

Compensate for carrier frequency offset



  • Carrier Synchronizer block


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 real phase error 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:

    ModulationPhase Ambiguity (degrees)
    'BPSK' or 'PAM'0, 180
    'OQPSK', 'QPSK', or 'QAM'0, 90, 180, 270
    '8PSK'0, 45, 90, 135, 180, 225, 270, 315

  • For best results, apply carrier synchronization to non-oversampled signals.



Specify the modulation type as BPSK, QPSK, OQPSK, 8PSK, QAM, or PAM.

Modulation phase offset

Specify the method used to calculate the modulation phase offset as either Auto or Custom.

  • Auto applies the traditional offset for the specified modulation type.

    ModulationPhase Offset (radians)
    BPSK, QAM, or PAM0
    QPSK or OQPSKπ/4
  • Custom enables 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 Custom.

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.

Code generation

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.

Interpreted execution

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.


expand all

Correct for a phase and frequency offset imposed on a noisy 16-QAM channel by using the Carrier Synchronizer block.

The 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

PortSupported Data Types
Signal Input
  • Double-precision floating point

  • Single-precision floating point

Signal Output
  • Double-precision floating point

  • Single-precision floating point

Phase Error Estimate
  • Double-precision floating point

  • Single-precision floating point


[1] Rice, Michael. Digital Communications: A Discrete-Time Approach. Upper Saddle River, NJ: Prentice Hall, 2009, pp. 359–393.

[2] 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.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Version History

Introduced in R2015a