File Exchange

image thumbnail

Carrier & Symbol Timing Recovery for N QAM

version (77.2 KB) by Dick Benson
This model implements a contemporary symbol timing and carrier recovery scheme for 2-256 QAM.


Updated 01 Sep 2016

View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

Timing recovery is a critical aspect of Digital Communications Receivers. This model uses a fractional sample delay implemented with a Farrow filter to create a symbol rate timing recovery subsystem. This is combined with a decision aided Carrier Recovery PLL. For testing, a transmitter with continuosly variable carrier frequency error and symbol rate error is included. Two versions of the transmitter are provided. One version uses Simulink's variable step solver to create a continuous time signal for re-sampling by the receiver. The other version uses the same fractional sample delay as in the receiver to implement the transmitter entirely in discrete time.
The updated version of these files supports QAM modulation of order 2 to 256 inclusive. It therefore supports PSK (2 QAM) and QPSK (4 QAM) as well.
References are cited in the models.

Cite As

Dick Benson (2020). Carrier & Symbol Timing Recovery for N QAM (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (15)

Yawen Hu

Excellent Job! But say I want to change the the oversampling rate (OSR) to something different from 4. I know the effect of this on the Oerder & Meyer (squaring) TED. What would the loop filter coefficients and TCU scaling be? Is their dependency on the OSR explained clearly and succinctly anywhere? Could anyone give a brief explanation on that?

Thanks a lot!

how to make optical carrier recovery for access network with simple ASK modulation in m file? i'm confused about what parameter involves and what is the output of the simulation

Helen Chen

@Yang - Have you tried clicking on the "Download all" button at the top right of this page?

yang lin

how to download?

Wongi Seo

afshin sh

mohamad razavy

Philip Secker

Well done, this is a tricky subject but is an integral part of modern modems.

viswanath pothuraju

student telecom

Can I get it for matlab R13 please. Need it to see wether it is better then my approch or the same

saifudeen a r

Sander Stepanov

now it is good
only what is about fading and AGC joint working with synchronization, if it is added, it will be real channel simulation

Sander Stepanov

looks good, but I can not run it, the error is
Failed to find 'Direct-Form II Transpose Filter' in library 'dspobslib' referenced by 'timing_recovery_1/Timing Error Detector + Loop Filter. Requires 4 samples per symbol. /Timing Error Detector/Loop Filter /Direct-Form II Transpose Filter2'


Updated license

Updated for R2014b.

Models updated for compliance with changes in R2013B.

This update generalizes the previous QPSK models to support N QAM, QPSK being a subset of N QAM. It is also compliant with R2012a,R2012b,R2013a.

Updated for R2009B

New discrete time TX model added and files updated for r2007b and are compatible with 2008a and 2008b as well.

MATLAB Release Compatibility
Created with R2014b
Compatible with any release
Platform Compatibility
Windows macOS Linux