This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

comm.EarlyLateGateTimingSynchronizer System object

Package: comm

Recover symbol timing phase using early-late gate method

comm.EarlyLateGateTimingSynchronizer will be removed in a future release. Use comm.SymbolSynchronizer instead.


The EarlyLateGateTimingSynchronizer object recovers the symbol timing phase of the input signal using the early-late gate method. This object implements a non-data-aided feedback method.

To recover the symbol timing phase of the input signal :

  1. Define and set up your early late gate timing synchronizer object. See Construction.

  2. Call step to recover the symbol timing phase of the input signal according to the properties of comm.EarlyLateGateTimingSynchronizer. 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.


H = comm.EarlyLateGateTimingSynchronizer creates a timing phase synchronizer System object, H. This object recovers the symbol timing phase of the input signal using the early-late gate method.

H = comm.EarlyLateGateTimingSynchronizer(Name,Value) creates an early-late gate timing synchronizer object, H, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).



Number of samples representing each symbol

Specify the number of samples that represent each symbol in the input signal as an integer-valued scalar greater than 1. The default is 4.


Error update step size

Specify the step size for updating successive timing phase estimates as a positive real scalar value. Typically, this number is less than 1/SamplesPerSymbol, which corresponds to a slowly varying timing phase. The default is 0.05. This property is tunable.


Enable synchronization reset input

Set this property to true to enable resetting the timing phase recovery process based on an input argument value. When you set this property to true, you must specify a reset input value to the step method. When the reset input is a nonzero value, the object restarts the timing phase recovery process. When you set this property to false, the object does not restart. The default is false.


Condition for timing phase recovery reset

Specify the conditions to reset the timing phase recovery process as one of Never | Every frame. The default is Never. When you set this property to Never, the phase recovery process never restarts. The object operates continuously, retaining information from one symbol to the next. When you set this property to Every frame, the timing phase recovery restarts at the start of each frame of data. In this case, each time the object calls the step method. This property applies when you set the ResetInputPort property to false.


resetReset states of early-late gate timing phase synchronizer
stepRecover symbol timing phase using early-late gate method
Common to All System Objects

Create System object with same property values


Expected number of inputs to a System object


Expected number of outputs of a System object


Check locked states of a System object (logical)


Allow System object property value changes


Recover timing phase using the early-late gate method.

% Initialize data 
    L = 16; M = 16; numSymb = 100; snrdB = 30;
    R = 25; rollOff = 0.75; filtDelay = 3; g = 0.07; delay = 6.6498;

% Create System objects
    hMod = comm.RectangularQAMModulator(M, ...
        'NormalizationMethod', 'Average power');
    hTxFilter = comm.RaisedCosineTransmitFilter(...
        'RolloffFactor', rollOff, ...
        'FilterSpanInSymbols', 2*filtDelay, ...
        'OutputSamplesPerSymbol', L);
    hDelay = dsp.VariableFractionalDelay('MaximumDelay', L);
    hChan = comm.AWGNChannel('NoiseMethod',  ...
        'Signal to noise ratio (SNR)', 'SNR', snrdB, ...
        'SignalPower', 1/L);
    hRxFilter = comm.RaisedCosineReceiveFilter(...
        'RolloffFactor', rollOff, ...
        'FilterSpanInSymbols', 2*filtDelay, ...
        'InputSamplesPerSymbol', L, ...
        'DecimationFactor', 1);
    hSync = comm.EarlyLateGateTimingSynchronizer(...
        'SamplesPerSymbol', L, ...
        'ErrorUpdateGain', g);

% Generate random data
    data = randi([0 M-1], numSymb, 1);

% Modulate and filter transmitter data
    modData = step(hMod, data);
    filterData = step(hTxFilter, modData);

% Introduce a random delay and add noise
    delayedData = step(hDelay, filterData, delay);
    chData = step(hChan, delayedData);

% Filter receiver data
    rxData = step(hRxFilter, chData);

% Estimate the delay from the received signal
    [~, phase] = step(hSync, rxData);
    fprintf(1, 'Actual Timing Delay: %f\n', delay);
    fprintf(1, 'Estimated Timing Delay: %f\n', phase(end));


This object implements the algorithm, inputs, and outputs described on the Early-Late Gate Timing Recovery block reference page. The object properties correspond to the block parameters, except:

The block Reset parameter corresponds to the ResetInputPort and ResetCondition properties.

Introduced in R2012a

Was this topic helpful?