Compensate for carrier frequency offset
The CarrierSynchronizer
System
object™ compensates for carrier frequency and phase offsets
for single carrier modulation schemes.
To compensate for frequency and phase offsets:
Define and set up the CarrierSynchronizer
object.
See Construction.
Call step
to compensate for the
carrier frequency and phase offsets according to the properties of comm.CarrierSynchronizer
.
The behavior of step
is specific to each object in
the toolbox.
The algorithm inherent to the carrier synchronizer is compatible with BPSK, QPSK, OQPSK, 8PSK, QAM, and PAM modulation schemes.
This object does not resolve phase ambiguities created by the synchronization algorithm. See QPSK Transmitter and Receiver for an example of how ambiguities are addressed.
Starting in R2016b, instead of using the step
method
to perform the operation defined by the System
object™, you can
call the object with arguments, as if it were a function. For example, y
= step(obj,x)
and y = obj(x)
perform
equivalent operations.
S = comm.CarrierSynchronizer
creates a
compensator System
object, S
, that compensates
for the carrier frequency and phase offsets.
S = comm.CarrierSynchronizer(
creates
a compensator object with each specified property Name
,Value
)Name
set
to the specified Value
. You can specify additional
namevalue pair arguments in any order as (Name1
,Value1
,...,NameN
,ValueN
).

Modulation type Specify the modulation type as This object supports CPM. It has been tested for a CPM signal having 1 sample per symbol and a modulation index of 0.5.  

Modulation phase offset method Specify the method used to calculate the modulation phase offset
as either
The default value is  

Phase offset Specify the phase offset in radians as a real scalar. This property
is available only when the  

Samples per symbol Specify the number of samples per symbol as a positive integer
scalar. The default value is  

Damping factor of the loop Specify the damping factor of the loop as a positive real finite
scalar. The default value is  

Normalized bandwidth of the loop Specify the normalized loop bandwidth as a real scalar between
0 and 1. The loop bandwidth is normalized by the sample rate of the
synchronizer. The default value is 
info  Characteristic information about carrier synchronizer 
reset  Reset states of the carrier synchronizer object 
step  Compensate for carrier frequency and phase offset 
Common to All System Objects  

clone  Create System object with same property values 
getNumInputs  Expected number of inputs to a System object 
getNumOutputs  Expected number of outputs of a System object 
isLocked  Check locked states of a System object (logical) 
release  Allow System object property value changes 
The CarrierSynchronizer
is a closedloop compensator
that uses the PLLbased algorithm described in [1].
The output of the synchronizer, y_{n},
is a frequency shifted version of the complex input signal, x_{n}.
The synchronizer output is
$${y}_{n}={x}_{n}{e}^{i{\lambda}_{n}}\text{\hspace{0.17em}},$$
To correct for the frequency offset, first the algorithm determines the phase error, e_{n}, for the nth symbol. The value of the phase error depends on the modulation scheme.
Modulation  Phase Error 

QAM or QPSK [1] 
e_{n} = sgn(Re(x_{n})) ✕ Im(x_{n})  sgn(Im(x_{n}) )✕ Re(x_{n}) 
BPSK or PAM [1] 
e_{n} = sgn(Re(x_{n})) ✕ Im(x_{n}) 
8PSK [2]  $${e}_{n}=\{\begin{array}{c}\left(\sqrt{2}1\right)\mathrm{sgn}\left(\mathrm{Re}\left\{{x}_{n}\right\}\right)\times \mathrm{Im}\left\{{x}_{n}\right\}\mathrm{sgn}\left(\mathrm{Im}\left\{{x}_{n}\right\}\right)\times \mathrm{Re}\left\{{x}_{n}\right\};\text{\hspace{1em}}\mathrm{Re}\left\{{x}_{n}\right\}\ge \mathrm{Im}\left\{{x}_{n}\right\}\\ \mathrm{sgn}\left(\mathrm{Re}\left\{{x}_{n}\right\}\right)\times \mathrm{Im}\left\{{x}_{n}\right\}\left(\sqrt{2}1\right)\mathrm{sgn}\left(\mathrm{Im}\left\{{x}_{n}\right\}\right)\times \mathrm{Re}\left\{{x}_{n}\right\};\text{\hspace{1em}}\mathrm{Re}\left\{{x}_{n}\right\}<\mathrm{Im}\left\{{x}_{n}\right\}\end{array}$$ 
OQPSK 
e_{n} = sgn(Re(x_{nSamplesPerSymbol/2})) ✕ Im(x_{nSamplesPerSymbol/2})  sgn(Im(x_{n}) )✕ Re(x_{n}) 
To ensure system stability, the phase error passes through a biquadratic loop filter governed by
$${\psi}_{n}={g}_{I}{e}_{n}+{\psi}_{n1}\text{\hspace{0.17em}},$$
where ψ_{n} is the output of the loop filter at sample n, and g_{I} is the integrator gain. The integrator gain is determined from the expression
$${g}_{I}=\frac{4\left({\theta}^{2}/d\right)}{{K}_{p}{K}_{0}}\text{\hspace{1em}},$$
where θ, d, K_{0}, and K_{P} are determined from the System object properties. Specifically,
$$\begin{array}{c}\theta \text{=}\frac{{B}_{n}}{\left(\zeta +\frac{1}{4\zeta}\right)}\text{\hspace{1em}}\text{and}\\ d=1+2\zeta \theta +{\theta}^{2}\text{\hspace{1em}},\end{array}$$
Modulation  K_{P} 

QAM, QPSK, or OQPSK  2 
BPSK or PAM  2 
8PSK  1 
The output of the loop filter then passes to the DDS. The DDS is implemented as another biquadratic filter whose expression is based on the forward Euler integration rule such that
$${\lambda}_{n}=\left({g}_{P}{e}_{n1}+{\psi}_{n1}\right)+{\lambda}_{n1}\text{\hspace{0.17em}},$$
where g_{P} is the proportional gain that is expressed as
$${g}_{P}=\frac{4\zeta \left(\theta /d\right)}{{K}_{p}{K}_{0}}\text{\hspace{0.17em}}.$$
The info
method of the System object returns
estimates of the normalized pullin range, the maximum frequency lock
delay, and the maximum phase lock delay. The normalized pullin range, (Δf)_{pullin},
expressed in radians, is calculated as
$${\left(\Delta f\right)}_{\text{pullin}}\approx \mathrm{min}\left(1,2\pi \sqrt{2}\zeta {B}_{n}\right)\text{\hspace{0.17em}}.$$
The expression for (Δf)_{pullin} becomes less accurate as $$2\pi \sqrt{2}\zeta {B}_{n}$$ approaches 1.
The maximum frequency and phase lock delays, T_{FL} and T_{PL}, expressed in samples, are given by
$$\begin{array}{l}{T}_{FL}\approx 4\frac{{\left(\Delta f\right)}_{\text{pullin}}^{2}}{{B}_{n}^{3}}\text{\hspace{0.17em}}\text{,}\\ {T}_{PL}\approx \frac{1.3}{{B}_{n}}\text{\hspace{0.17em}}.\end{array}$$
[1] Rice, Michael. Digital Communications: A DiscreteTime 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 DVBS2.” International Conference on Communications, Circuits and Systems, 2004. ICCCAS 2004. Vol. 2, 2004, pp. 1447–1450.