GardnerSymbol Timing Recovery

The Gardner Symbol Timing recovery demo illustrates symbol timing recovery for an 8-PSK modulated and filtered signal transmitted over a varying delay channel.

This document highlights the following aspects of the demo:

  • Structure of the demo
  • Key points of the demo
  • Visible results of the demo
  • Experimenting with the demo

Structure of the Demo

The demo uses various blocks from the Communications Blockset, Signal Processing Blockset and Simulink to model an 8-PSK transmitted signal. The demo includes the following blocks:

  • Random Integer Source block that generates uniformly distributed integers in the range [0, M-1], where M is the alphabet size.
  • M-PSK Modulator block followed by a Root-Raised Cosine Transmit filter block that modulates and then up-samples and pulse shapes the signal stream for transmission.
  • The channel consisting of a Variable Integer Delay block and an AWGN Channel block. The Variable Integer Delay block introduces random integer delays less than the up-sampling factor and the AWGN Channel block can vary the SNR level based on user input.
  • At the receiver end, a receive filter matched to the raised cosine pulse shape is followed by the Gardner Symbol Synchronizer subsystem block. After appropriate demodulation, the output is fed to the displays for analysis purposes.

Key points of the Demo

The demo showcases the Gardner Symbol Synchronizer subsystem. This block allows for tracking a static difference in the receiver source symbol frequency from the actual transmitter value (expressed as a percentage of the transmitter source symbol frequency).

The difference in the receiver symbol frequency from that of the transmitter can be adjusted by modifying the “Receiver source symbol frequency” parameter of the Gardner Symbol Synchronizer block.

The block works for over-sampled signals by synchronously sampling the incoming signal. It does not interpolate the received signal and so shows deteriorated performance with fractional sample delays.

Since the block is subsystem-based, it allows for straightforward inspection of the implementation, at the expense of using triggered and enabled subsystems to work with the derived clocks.

Visible results of the Demo

As the introduced delay of the channel is changed for every frame, the error signal shows periodic bursts where the synchronizer has to re-track the signal. One can increase the size of the frame to observe the settling period. The stable value of the error is a measure of the amount of difference (as a percentage)in the transmitter and receiver frequencies that the synchronizer has recovered from.

On running the simulation model, the scatter plot shows the recovered signal points before demodulation and the BER meter shows the error performance for the level of noise selected.

The symbol clock scope shows the recovered clock at the symbol rate. Note the initial jitter and then the gradual settling phase over a frame to indicate the tracking behavior.

Experimenting with the Demo

On loading, the demo initializes a set of variables that control the simulation. The user is encouraged to play with the value of these variables to see their effects on the demo.

Some of the ways to modify the demo include:

  • Vary transmit and receive filter characteristics – rolloff parameter, group delay.
  • Vary the receiver symbol frequency to see if the block can still track the signal and demodulate appropriately.
  • Vary the AWGN noise levels.
  • Vary the simulation frame size. Vary the delay to be constant for the length of the simulation or multiple frames.
  • Use a different modulation scheme – say QPSK or 16QAM, which may require you to change some of the blocks also.