The objective of this
lab is to learn about BPSK and QPSK by building a QPSK modulator and
the QPSK Modulator and Demodulator
Open up your final model from Lab 6. The essential elements
in this model are:
In this lab, we want to build a QPSK modulator.
Use the "Save as..." option in the file menu to create a new
copy of your linear receiver model. Use the new copy as the starting point
in this lab to create your QPSK modulator and demodulator. Starting
in this way, you will already have most of the blocks that you need for
Replace the Bernoulli Binary Generator in your model with a
Random Integer Generator
Look up table for converting bits to symbols
Impulse generator (upsample block)
Pulse generator (transmitter pulse filter)
Additive white Gaussian noise channel
Delay block (implemented by a filter)
The linear receiver (implemented by a matched filter and a downsample
Set the M-ary Number in the Random Integer Generator parameter
dialog to 4 as shown below.
Comm Blockset -> Comm Sources -> Data Sources -> Random
Change the Look-Up Table to reflect the QPSK symbols as shown below.
The Random Integer Generagor block is now configured to output the numbers
0, 1, 2, and 3 at random. Think of this block as the source. Instead
of generating pairs of bits (00), (01), (10), and (11) it generates the
integers 0, 1, 2, and 3. We can use 0, 1, 2, and 3 in a look table
to generate symbols as easily as we can the bit patterns. Let's define
the look up table next.
Why is there a scaling involving the sqare root of 2?
Now build the rest of the modulator, the AWGN channel and the demodulator.
An example follows.
This figure is color coded as follows.
Use a bit rate of 20,000 bits per second.
What is the symbol rate? Use this rate to set the sample
time in the Random Integer Generator.
After the look-up table, upsample by a factor of 100 as shown in
the above figure.
After upsampling, what is the sample rate? Use this sample
rate to set the sample time in the Gaussian Noise Generator and the four
Sine Wave blocks.
In the Gaussian Noise Generator, set the mean value to zero and
the variance to a very small number (like 10^(-7)).
Generate a square-root Nyquist pulse such as a square-root RC pulse
to serve as the impulse response of the transmitter pulse shaping filter
that will be used in the I and Q branches. Use the same filter as the
matched filter at the receiver.
Use a carrier frequency of 100,000 Hz.
Set the frequency and phase in all four Sine Wave blocks.
Design the low-pass filter (using remez) to use at the receiver
to remove the double frequency terms. What frequencies mark the edge
of the transition between pass and stop bands?
Set the impulse response of the delay filters to compensate for
the delay of the low-pass filter.
Insert Eye Diagram blocks before and after the matched filters
in the receiver.
Insert a Sactter Plot block after the downsampler.
Orange - baseband pulse modulation
Red - double balanced modulator used to create the bandpass quadrature
Green - additive white gaussian noise channel
Red - another double balanced modulator to bring the signal back
Magenta - filters to remove the double frequency components
Blue - matched filters followed by symbol rate sampling
Yellow - delay filters to compensate for the delay through the
low-pass filters that removed the double frequency (Delay filters are necessary
in order to make the eye diagram and the scatter plot look right.
Run 0.015 seconds of simulation. This will pass 150 symbols
through the system.
Your eye and scatter plots should look something like this.
Use Signal To Workspace blocks to extract the following signals.
You can see the constellation showing up perfectly. Of course,
I didn't scale my pulses to have unit energy. The eye diagram at
the output of the matched filter is also fully open because we used a square-root
Nyquist (shift-orthogonal) pulse.
The in-phase signal at baseband
The quadrature modulated signal before adding noise
The in-phase signal after modulation by cos at the receiver but
before the low-pass filter
The in-phase signal after modulation by cos and the low-pass filter
at the receiver
Plot the spectra of these signals in Matlab using the sigspec function.
Next add 0.3 radians to the phases of the cos and sin blocks at
the receiver. This simulates demodulating with the wrong carrier
phase. Run the simulation again. The MF output eye diagram
and the scatter plot shold look like this.
Explain the relationship between the eye diagram at the MF output
and the scatter plot. Why is the scatter plot rotated?
Now add some noise to the simulation. Set the variance
in the Gaussian Noise Generator to 1. Run the simulation. They
eye and scatter plots should look something like this.
Describe the effect of noise on the scatter plot and the eye diagram.
How would you modify your model if you were running a BPSK simulation?