EECS 700: Binary Phase Shift Keying (BPSK)




Objective
The goal of this exercise is to correctly demodulate the noisy received signal in RxBPSK.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).
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 Transmitter

Block Diagram of BPSK Modulator

Using blocks from the SIMULINK Block Library, the Signal Processing Blockset, and the Communications Blockset, design a BPSK modulator, patterned after the one shown above, to meet the following specifications:
Number of samples per bit:        8
Normalized carrier frequency:    0.25 cycles/sample
Pulse shape:                            NRZ
Average energy:                      9

You might find a couple of options for generating the cosine, but the "Sine Wave Function," which is found in Simulink >> Math Functions, will definitely do the job.




Part II: BPSK Detector

Block Diagram of BPSK Detector

Using blocks from the SIMULINK Block Library, the Signal Processing Blockset, and the Communications Blockset, design a BPSK detector, patterned after the one shown above, that is compatible with the modulator from Part I.


[ Sanity Check ]
You can test your designs from Parts I and II by connecting the output of your modulator to the input of your detector.  Use the same data source as in the Binary PAM exercise (the Signal from Workspace block with the data pattern [1 -1 -1 1]').  In your project window, go to the menu Simulation --> Configuration Parameters and set the parameters to:
Start Time:         0.0
Stop Time:          (4+1)*8
Solver options:    Type: Fixed-step, Solver: discrete (no continuous states)
Fixed step size:    1                 
Note: The 4 corresponds to the number of transmitted bits, the 1 corresponds to the delay of the matched filter, and the 8 is the number of samples per symbol (bit). 

Remember, it is very important that your Downsample block is sampling at the correct "phase".  This may require some adjustment/experimentation on your part.  You want to sample the matched filter output when the value is exactly +A or -A.  You may need to run the simulation to a stop time of 6*8, depending on the sampling offset you use.  When you have successfully debugged your system, you are ready for the final part of the exercise.




Part III: 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 RxBPSK.mat (If you have problems with that file, here is a ZIP version).
  2. Set the simulation parameters to:
    Start Time:         0.0
    Stop Time:          8*(91+1)
    Solver options:    Type: Fixed-step, Solver: discrete (no continuous states)
    Fixed step size:    1                 
  3. Run the Simulation.
  4. The last 91 values of the detector output (you will have to convert +/-1s to 1s and 0s) represent 13 ASCII characters, with 7 bits per character.  Determine the message using your own conversion script or an ASCII table, such as the one found here.
  5. Submit your answer AND your detector model file (.mdl SIMULINK file) to the class TA via the Digital Drop Box in Blackboard (you may submit via e-mail only if you have problems with Blackboard).  You should organize your files into a folder, and then ZIP the folder and submit the ZIP file.  The naming convention for the ZIP file is "Lab#_YourLastName.zip."
  6. Plot the eye diagram and signal space projections.  You may submit these electronically, or turn them in at the beginning of the next class period after the due date.


Back to the Lab Exercises Page