Main Content

CORDIC-Based QPSK Carrier Synchronization

This model shows the use of a CORDIC (COordinate Rotation DIgital Computer) rotation algorithm in a digital PLL (Phase Locked Loop) implementation for QPSK carrier synchronization. Fixed-Point Designer™ is needed to run this model.

Introduction

The structure of a digital PLL is essentially equivalent to that of a continuous-time PLL. A PLL has the following components: a phase error detector (PED), a loop filter, and a controlled oscillator.

In the case of QPSK carrier (phase and frequency) synchronization, implementing the loop filter as a digital P+I (proportional-plus-integrator) filter produces a second order PLL. The controlled oscillator (Phase Accumulator) adjusts the angle of the received QPSK signal via a complex rotation.

You can implement the complex rotation using a variety of approaches, including direct complex multiplication by exp(j*theta). However, such an implementation can be relatively expensive in terms of hardware (e.g., FPGA or ASIC) resources. An alternative approach uses a CORDIC-based rotation algorithm to implement the complex multiplication. This example uses this approach, via the Fixed-Point Designer™ CORDICROTATE function. This results in a multiplier-less complex rotation approximation, where the trade-off is in terms of speed. A small number of CORDIC iterations may often be enough to achieve a good digital PLL response, without the full hardware resource cost of a true complex multiplication.

Structure of the Example

Tx Data Source

The PN Sequence Generator library block from the Communications Toolbox™ is the Tx Data Source, generating unsigned 2-bit integer symbols.

QPSK Modulator

The QPSK Modulator Baseband library block from the Communications Toolbox uses a pi/4 phase offset and binary ordering to compute signed 12-bit fixed-point modulator output values.

Raised Cosine Tx Filter

The Raised Cosine Transmit Filter library block from the Communications Toolbox performs square root FIR filtering with an upsampling factor of 8.

Transmitter Impairments

The Phase/Frequency Offset library block from the Communications Toolbox simulates the associated transmitter impairments. You can tune the Phase offset and Frequency offset parameter values to see the effect on the PLL Phase Error time scope and the receive signal scatter plot displays.

AWGN Channel

The AWGN Channel library block from the Communications Toolbox simulates a noisy channel. You can tune the block Eb/No parameter to see the effect on the PLL Phase Error time scope and the receive signal scatter plot displays.

Raised Cosine Rx Filter

The Raised Cosine Receive Filter library block from the Communications Toolbox performs square root FIR filtering with a downsampling factor of 8.

CORDIC-Based PLL Subsystem

The CORDIC-Based PLL subsystem consists of a Phase Error Detector (PED), P+I Loop Filter, Phase Accumulator, and CORDICROTATE to form the corrected complex signal output values.

CORDIC-Based PLL

Phase Error Detector

The Phase Error Detector is implemented using a MATLAB® function.

P+I Loop Filter

A P+I Loop Filter implements a second order PLL. The loop constants K1 (P gain) and K2 (I gain) are derived from the Normalized loop bandwidth and Damping factor parameters of the masked CORDIC-Based PLL subsystem.

Phase Accumulator

The Phase Accumulator computes the angle Theta.

CORDICROTATE

The MATLAB function CORDICROTATE rotates the complex received signal by Theta using an iterative, multiplier-less, CORDIC-based algorithm.

Results and Displays

Phase Error

Use the Phase Error time scope block to view the time-varying PLL Phase Error Detector output values.

Scatter Plots

Use the Before Carrier Synchronization and After Carrier Synchronization scope blocks to observe the effects of tuning the Transmitter Impairments and AWGN Channel parameters.

Experimenting with the Example

Transmitter Impairments

To see the effects of transmitter phase and frequency offset impairments, change the Phase offset and Frequency offset parameter values while the model is running. Set the model StopTime to inf and use the PLL Enable/Disable switch to observe changes in the transient response.

AWGN Channel

To see the effects of a noisy channel, change the Eb/No parameter value while the model is running. Set the model StopTime to inf and use the PLL Enable/Disable switch to observe changes in the transient response.

CORDIC-Based PLL

Vary the PLL Normalized loop bandwidth and Damping factor parameters to tune the underlying P+I Loop Filter behavior while the model is running. Set the model StopTime to inf and use the PLL Enable/Disable switch to observe changes in the transient response.

Note that the phase-locked QPSK receive signal output contains phase ambiguity. For further analysis (e.g., symbol error rate computations), this phase ambiguity may be resolved using one of a number of well known methods, including known training (preamble) signals, varying demodulator phase offsets, constellation re-ordering, etc.

Selected Bibliography

Rice, Michael, "Discrete-Time Phase Locked Loops", Digital Communications: A Discrete-Time Approach, Appendix C, Sec. C.3, Pearson Prentice Hall, 2008.

Andraka, Ray, "A survey of CORDIC algorithm for FPGA based computers", Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays, 191 - 200, Feb. 22-24, 1998.

Volder, Jack E., "The CORDIC Trigonometric Computing Technique", IRE Transactions on Electronic Computers, Volume EC-8, 330 - 334, September 1959.