Giter Site home page Giter Site logo

symbol_timing_sync's Introduction

Symbol Timing Recovery

Overview

This repository contains MATLAB scripts focusing on symbol timing recovery algorithms. The implementation is based on the material from the book "Digital Communications: A Discrete-Time Approach" by Michael Rice. If you are new to the topic, you can check out chapter 8 from this book or access the introductory tutorial in my blog.

The main script of this repository (file main.m) is a simulator of symbol timing recovery applied to a pulse-shaped PAM/QAM signal under additive white Gaussian noise (AWGN). This script generates the pulse-shaped Tx sequence and feeds it into a receiver with the following blocks:

Symbol Timing Synchronization Loop

The symbol timing recovery loop is implemented by the symbolTimingSync function and combines the timing error detector (TED), interpolator, controller, and loop filter blocks. The adopted loop filter is a proportional-plus-integrator (PI) controller, while the interpolator controller is a modulo-1 counter. Meanwhile, you can choose the TED and interpolator implementation from various alternative methods.

When running the simulation, ensure to tune the parameters of interest at the top of the main.m file. For instance, choose the TED scheme and the interpolation method from the supported options summarized in the table below. Alternatively, experiment with filter parameters such as the loop bandwidth and damping factor, or play with plotting and debugging options by enabling the debug_tl_static and debug_tl_runtime flags at the top of main.m.

Supported TEDs Supported Interpolators
Maximum-likelihood TED (MLTED) Polyphase filterbank interpolator
Early-late TED (ELTED) Linear polynomial interpolator
Zero-crossing TED (ZCTED) Quadratic polynomial interpolator
Gardner TED (GTED) Cubic polynomial interpolator
Mueller and Müller TED (MMTED)

Code Organization

File Description
calcSCurve.m Function to compute the TED's S-curve analytically.
calcTedKp.m Function to compute the timing error detector gain.
derivativeMf.m Function to compute the derivative matched filter.
genTestVector.m Function to generate input/output test vectors.
main.m Main simulation.
piLoopConstants.m Function to compute the PI controller constants.
plotTedGain.m Function to plot the TED gain vs. the rolloff factor.
polyDecomp.m Function to decompose a filter into a polyphase bank.
polyInterpFilt.m Function to design a polyphase interpolator.
sCurveDemo.mlx A demonstration of TED S-curve and gain evaluations.
simSCurve.m Function to simulate the TED's S-curve.
symbolTimingSync.m Function implementing the symbol timing recovery loop.

Experiments

Please refer to the documentation page covering relevant experiments with the symbol timing recovery simulator.

Contact

If you have any questions or comments, please feel free to e-mail me or open an issue.

symbol_timing_sync's People

Contributors

igorauad avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.