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.