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 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:

    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 using the Carrier Synchronizer block.

Open the doc_qamcarriersync model.

Run the model. The Constellation Diagram Without Sync block shows a spiral pattern that indicates a phase and frequency offset. After the carrier synchronizer converges to a solution, the data displayed on the Constellation Diagram With Sync block 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. For more information, see the Correct Phase and Frequency Offset for 16-QAM Using Coarse and Fine Synchronization example.

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™.

Introduced in R2015a