EECS 690:
Carrier Phase Recovery for QPSK
Objective
The goal of this exercise is to correctly demodulate the noisy
received signals
in RxCRQPSKUW.mat and RxCRQPSKDE.mat.
Signal Constellation
The
transmitted data points are taken from the signal space constellation
below. The four points are equally spaced on a circle with radius
A and are simply the four possible ordered pairs [ ±A/sqrt(2),
±A/sqrt(2) ]. Each transmitted signal carries two
information bits, as shown below.
You should be
aware of the
relationship between A and the average symbol energy.
After being corrupted by noise, the received signal is demodulated by
the system below, which detects the transmitted signal space points and
outputs the estimated values.
Design Exercise
Part I: QPSK Detector with Decision Directed Carrier Phase Recovery
Your design should begin with your final result from the QPSK Exercise.
Using blocks from the SIMULINK Block Library, the Signal Processing
Blockset, and the Communications Blockset, you must add a ROTATE block, a
phase error detector, a loop
filter, and a loop DDS. You want the phase locked loop (PLL) to
be second-order with a proportional-plus-integral loop filter.
These new components are highlighted in red in the diagram below.
Design your detector to be compatible with a QPSK transmitter with the
following specifications:
Number
of samples per symbol: 8
Normalized carrier frequency: 0.30 cycles/sample
Carrier
Phase:
UNKNOWN
Pulse shape:
square-root raised cosine (SRRC) with roll-off = 0.5 and Lp = 8 symbols
Average symbol
energy:
2 Joules
In order to resolve the 90-degree phase ambiguity, we will use the two
techniques we discussed in class: the unique word method and
differential encoding. You already have some experience with the
unique word method from the previous exercise.
Here, you must search the received decision sequence for each of the 4
rotated versions of the unique word [11 10 10 11 10 01 00 00].
When one of the rotated versions of the unique word is found, the phase
ambiguity is known and can be corrected. The data packet format
for the unique word is shown below. This packet is repeated 4
times to allow sufficient time for your PLL to lock.
For the case of differential encoding, the transmitter encodes the
information bits with the following phase shifts:
Bits Phase Shift
00 0º
01
90º
10
-90º
11
180º
You must design a differential
decoder to obtain the information sequence from the detector
decisions. The differential decoder requires the current and
previous detector decisions. This operation be done using a
Matlab script. Although the differential decoding technique is
able to resolve the carrier phase ambiguity, you will still have the
problem of finding the start of the data sequence in the stream of
detected symbols. Therefore, the differential encoded data uses
the data packet format shown below, where the SYNC pattern is [00 00 00
00 00 00 00 00]. This packet is repeated 4
times to allow sufficient time for your PLL to lock.
Part II: Detecting an
Unknown Data Set using the Unique Word Method
Here are the steps for the next
part of the exercise:
- Connect the input of your detector to a From File
block and set the filename to RxCRQPSKUW.mat
- Set the simulation
parameters to:
Start
Time: 0.0
Stop Time:
(16+1+8+4*(196+8))*8
Solver
options: Type: Fixed-step, Solver: discrete
(no continuous states)
Fixed
step size: 1
Suggested values for the
loop bandwidth and damping coefficient are 0.05 (normalized to the
symbol rate) and 1.0, respectively.
- Run the Simulation.
- The detector produces
842 decisions. The PLL will lock at some point in the middle of
this sequence, which means that there will be a potentially large
number of garbage bits that should be discarded.
- To find the data
symbols,
look for the 8-symbol unique word (or its three rotations). Once
the unique word is found, the following 196 (possibly rotated) symbols
correspond to 56 7-bit ASCII characters.
- Plot the phase error
(the loop filter input), and use this plot to estimate how long (in
symbol times) it took for your PLL to lock. You can attach the
plot to your e-mail message, or turn them in at the beginning of the
next class period after the due date.
- Determine the message
using your own conversion script or an ASCII
table, such as the one found here.
- E-mail your answer AND
your detector model file (.mdl SIMULINK file) plus any additional
Matlab code to esp "at" eecs.ku.edu.
Part III: Detecting an
Unknown Differentially Encoded Data Set
Here are the steps for the final
part of the exercise:
- Connect the input of your detector to a From File
block and set the filename to RxCRQPSKDE.mat.
Note: the detector is essentially unchaged from Part III. The
only different part is the differential decoding operation.
- Set the simulation
parameters to:
Start
Time: 0.0
Stop Time:
(16+1+8+4*(259+8))*8
Solver
options: Type: Fixed-step, Solver: discrete
(no continuous states)
Fixed
step size: 1
Suggested values for the
loop bandwidth and damping coefficient are 0.05 (normalized to the
symbol rate) and 1.0, respectively.
- Run the Simulation.
- The detector produces
1094 decisions. The PLL will lock at some point in the middle of
this sequence, which means that there will be a potentially large
number of garbage bits that should be discarded.
- To find the
differentially encoded symbols,
look for the 8-symbol sync word (or its three rotations). Once
the sync word is found, the following 259 (possibly inverted) bits
correspond to 74 7-bit ASCII characters.
- Determine the message
using your own conversion script or an ASCII
table, such as the one found here.
- E-mail your answer
plus any additional
Matlab code to esp "at" eecs.ku.edu.
Back to the Simulink
Exercises Page