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).
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
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
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:
- 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).
- 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
- Run the Simulation.
- 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.
- 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."
- 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