EECS 690: Carrier Phase Recovery for BPSK




Objective
The goal of this exercise is to correctly demodulate the noisy received signal in RxCRBPSK.mat.


Signal Constellation

The transmitted data points are taken from the signal space constellation below.  Notice the relationship between bits (0, 1) and symbols (-A, +A).  You should be aware of the relationship between A and the average symbol energy. 

Signal Space Constellation for BPSK

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: BPSK Detector with Decision Directed Carrier Phase Recovery

Your design should begin with your final result from the BPSK Exercise. 
Using blocks from the SIMULINK Block Library, the Signal Processing Blockset, and the Communications Blockset, you must add a quadrature arm to the detector, and also 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.

Block Diagram of BPSK Detector with Carrier Phase Recovery

Design your detector to be compatible with a BPSK transmitter with the following specifications:
Number of samples per symbol: 8
Normalized carrier frequency:    0.20 cycles/sample
Carrier Phase:                         UNKNOWN
Pulse shape:                            square-root raised cosine (SRRC) with roll-off = 0.5 and Lp = 8 symbols
Average symbol energy:            1 Joules

In addition to the above specifications, the transmitter sends data according to the following format:

Data Format for the BPSK Transmitter

The 8-bit unique word used by the transmitter is [0 1 0 1 1 0 0 1].  The purpose of the unique word is to provide a method of resolving the 180-degree phase ambiguity introduced by the decision-directed phase error detector.  To accomplish this, you must search the detector output for two versions of the unique word that correspond to the two possible constellation rotations.  Once the unique word has been found, the phase ambiguity is known and can be corrected.

Since a certain period of time must pass before the loop locks onto the carrier phase, the transmitter will repeat the above packet four times.






Part II: Detecting an Unknown Data Set

Here are the steps for the final part of the exercise:
  1. Connect the input of your detector to a From File block and set the filename to RxCRBPSK.mat
  2. Set the simulation parameters to:
    Start Time:         0.0
    Stop Time:          (16+1+8+4*(189+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.
  3. Run the Simulation.
  4. The detector produces 814 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.
  5. To find the data bits, look for the 8-bit unique word (or its logical complement).  Once the unique word is found, the following 189 (possibly inverted) bits correspond to 27 7-bit ASCII characters.
  6. 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.
  7. Determine the message using your own conversion script or an ASCII table, such as the one found here.
  8. E-mail your answer AND your detector model file (.mdl SIMULINK file) plus any additional Matlab code to esp "at" eecs.ku.edu.

Back to the Simulink Exercises Page