comm.PSKCoarseFrequencyEstimator

(To be removed) Estimate frequency offset for PSK signal

comm.PSKCoarseFrequencyEstimator will be removed in a future release. Use comm.CoarseFrequencyCompensator instead.

Description

The PSKCoarseFrequencyEstimator System object™ estimates frequency offset for a PSK signal.

To estimate frequency offset for a PSK signal:

  1. Define and set up your PSK coarse frequency estimator object. See Construction.

  2. Call step to estimate frequency offset for a PSK signal according to the properties of comm.PSKCoarseFrequencyEstimator. The behavior of step is specific to each object in the toolbox.

Note

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.

Construction

H = comm.PSKCoarseFrequencyEstimator creates a PSK coarse frequency offset estimator object, H. This object uses an open-loop technique to estimate the carrier frequency offset in a received PSK signal.

H = comm.PSKCoarseFrequencyEstimator(Name,Value) creates a PSK coarse frequency offset estimator object, H, with the specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

Properties

ModulationOrder

Modulation order the object uses

Specify the modulation order of the PSK signal as a positive, real scalar of data type double. This value must be a positive power of 2. The default is 4.

Algorithm

Estimation algorithm to object uses

Specify the estimation algorithm as one of FFT-based or Correlation-based. The default is FFT-based.

FrequencyResolution

Desired frequency resolution (Hz)

Specify the desired frequency resolution for offset frequency estimation as a positive, real scalar of data type double. This property establishes the FFT length used to perform spectral analysis, and must be less than or equal to half the SampleRate property. This property applies only if the Algorithm property is FFT-based. The default is 0.001.

MaximumOffset

Maximum measurable frequency offset (Hz)

Specify the maximum measurable frequency offset as a positive, real scalar of data type double. The default is 0.05.

The value of this property must be less than SampleRate/ ModulationOrder. It is recommended that MaximumOffset be less than or equal to SampleRate/(4*ModulationOrder). This property is active only if the Algorithm property is Correlation-based.

SampleRate

Sample rate (Hz)

Specify the sample rate in samples per second as a positive, real scalar of data type double. The default is 1.

Methods

step(To be removed) Estimate frequency offset for PSK signal
Common to All System Objects
release

Allow System object property value changes

reset

Reset internal states of System object

When using reset, note comm.PSKCoarseFrequencyEstimator will be removed in a future release. Use comm.CoarseFrequencyCompensator instead.

Examples

collapse all

Estimate and correct for a frequency offset in a QPSK signal using the recommended comm.CoarseFrequencyCompensator System object. Compare frequency correction results to a workflow using the comm.PSKCoarseFrequencyEstimator System object.

Set example parameters.

nSym = 2048;     % Number of input symbols
M = 4;           % Modulation order
fs = 80000;      % Sampling frequency (Hz)
freqRez = 1;     % Frequency resolution (Hz)
freqOff = -2000; % Frequency offset

Create System objects for these operations:

% Square root raised cosine transmit filter
txfilter = comm.RaisedCosineTransmitFilter;
% Phase frequency offset - one to apply a frequency offset and a second
% that takes the frequency offset estimate as an input to correct the
% offset.
pfo = comm.PhaseFrequencyOffset('FrequencyOffset',freqOff, ...
    'SampleRate',fs);
pfoCorrect = comm.PhaseFrequencyOffset(...
    'FrequencyOffsetSource','Input port', ...
    'SampleRate',fs);
% PSK coarse frequency estimator
frequencyEst = comm.PSKCoarseFrequencyEstimator(...
    'SampleRate',fs,'FrequencyResolution',freqRez);
Warning: comm.PSKCoarseFrequencyEstimator will be removed in a future release.
Use comm.CoarseFrequencyCompensator instead.
% Coarse frequency compensatator
freqComp = comm.CoarseFrequencyCompensator('Modulation','QPSK', ...
    'SampleRate',fs,'FrequencyResolution',freqRez);

Generate a QPSK signal, filter the signal, apply the frequency offset, and pass the signal through the AWGN channel.

data = randi([0 M-1],nSym,1);
modData = pskmod(data,M,pi/4);  % Generate QPSK signal
txFiltData = txfilter(modData); % Apply Tx filter
offsetData = pfo(txFiltData);   % Apply frequency offset
rxData = awgn(offsetData,25);   % Pass through AWGN channel

This example does not apply receive filtering. In general, when the frequency offset is high, it is beneficial to apply coarse frequency compensation prior to receive filtering because filtering suppresses energy in the useful spectrum.

Compare the results for estimating and correcting the frequency offset by:

  • Using the frequencyEst object to estimate the frequency offset and pfoCorrect to compensate for the frequency offset.

  • Using the freqComp object estimate and apply compensation to the signal.

Observe the frequency offset estimate returned by both estimation methods.

estFreqOffset1
estFreqOffset2
estFreqOffset1 =
  -2.0000e+03
estFreqOffset2 =
  -2.0000e+03

Confirm the maximum resulting difference between the two compensation methods is negligible.

max(compensatedData1-compensatedData2)
ans =

  1.4710e-13 + 9.1149e-14i

Selected Bibliography

[1] Luise, M. and R. Regiannini. “Carrier recovery in all-digital modems for burst-mode transmissions”, IEEE® Transactions on Communications, Vol. 43, No. 2, 3, 4, Feb/Mar/April, 1995, pp. 1169–1178.

Compatibility Considerations

expand all

Warns starting in R2020a

Extended Capabilities

Introduced in R2013b