This post is a part of the ebook : Simulation of digital communication systems using Matlab – available in both PDF and EPUB format.

In the previous article we saw about how QPSK modulation and demodulation can be done. This concept is extended further to simulate the performance of QPSK modulation technique over an AWGN.

### Transmitter:

For the QPSK modulation , a series of binary input message bits are generated. In QPSK, a symbol contains 2 bits. The generated binary bits are combined in terms of two bits and QPSK symbols are generated. From the constellation of QPSK modulation the symbol ’00’ is represented by 1, ’01’ by j (90 degrees phase rotation), ’10’ by -1 (180 degrees phase rotation) and ’11’ by -j (270 degrees phase rotation). In pi/4 QPSK, these phase rotations are offset by 45 degrees. So the effective representation of symbols in pi/4-QPSK is ’00’=1+j (45 degrees), ’01’=-1+j (135 degrees), ’10’ = -1-j (225 degrees) and ’11’= 1-j (315 degrees).

Here we are simulating a pi/4 QPSK system.Once the symbols are mapped, the power of the QPSK modulated signal need to be normalized by \(\frac{1}{\sqrt{2}}\).

### AWGN channel:

For QPSK modulation the channel can be modeled as

$$ y=ax+n $$

where y is the received signal at the input of the QPSK receiver, x is the complex modulated signal transmitted through the channel , a is a channel amplitude scaling factor for the transmitted signal usually 1. ‘n’ is the Additive Gaussian White Noise random random variable with zero mean and variance \(\sigma^2 \). For AWGN the noise variance in terms of noise power spectral density \(N_0\) is given by,

$$ \sigma^{2}=\frac{N_{0}}{2} $$

For M-PSK modulation schemes including BPSK, the symbol energy is given by

$$ E_s = R_m R_c E_b $$

where \(E_s\) =Symbol energy per modulated bit (\(x\)), \(Rm = log_2(M)\) , (for BPSK M=2, QPSK M=4, 16 QAM M=16 etc..,). \(R_c\) is the code rate of the system if a coding scheme is used. In our case since no coding scheme is used Rc = 1. Eb is the Energy per information bit.

Assuming \(E_s=1\) for BPSK (Symbol energy normalized to 1) \(\frac{E_b}{N_0}\) can be represented as (using above equations),

$$ \frac{E_b}{N_0} = \frac{E_s}{R_m R_c N_0} $$

$$ \frac{E_b}{N_0} = \frac{E_s}{R_m R_c N_0} = \frac{E_s}{R_m R_c 2 \sigma^{2}} = \frac{1}{2 R_m R_c \sigma^{2}}$$

From the above equation the noise variance for the given \(\frac{E_b}{N_0}\) can be calculated as

$$ \sigma^{2} = \left( 2 R_m R_c \frac{E_b}{N_0}\right) ^{-1} $$

For the channel model randn function in Matlab is used to generate the noise term. This function generates noise with unit variance and zero mean. In order to generate a noise with sigma \(\sigma\) for the given \(\frac{E_b}{N_0}\) ratio , use the above equation , find \(\sigma\), multiply the ‘randn’ generated noise with this sigma , add this final noise term with the transmitted signal to get the received signal. For a pi/4 QPSK system, since the modulated signal is in complex form, the noise should also be also in complex form.

### Receiver:

QPSK receiver employs two threshold detectors that detect real(inphase arm) and imaginary part (quadrature arm). The detected signals are sent through a parallel to serial converter (achieved by “reshape” function in MATLAB).

The Eb/N0 Vs BER Curve for QPSK and BPSK are identical. This is because, QPSK actually consists of two orthogonal BPSK systems. Since the two individual BPSK systems are orthogonal, they don’t interfere with each other. That is why the BER curved for QPSK and BPSK are identical.

### Matlab Code:

Check this book for full Matlab code.

Simulation of Digital Communication Systems Using Matlab – by Mathuranathan Viswanathan

### Simulation Result:

### See also:

[1] BER Vs Eb/N0 for 8-PSK modulation over AWGN

[2] BER Vs Eb/N0 for M-PSK modulation over AWGN

[3]QPSK modulation and Demodulation

[4] Simulation of BER Vs Eb/N0 for BPSK modulation over AWGN in Matlab

[5] Intuitive derivation of Performance of an optimum BPSK receiver in AWGN channel

Pingback: BER Vs Eb/N0 for 8-PSK modulation over AWGN | GaussianWaves()

Pingback: Generating a signal waveform with required SNR in Matlab | GaussianWaves()

Pingback: Channel Capacity | GaussianWaves()

Pingback: Channel Coding | GaussianWaves()

Pingback: Introduction to Digital Communication | GaussianWaves()

Pingback: Uniform Random Variables and Uniform Distribution | GaussianWaves()

Pingback: Random Variables, CDF and PDF | GaussianWaves()

Pingback: Simulation of M-PSK modulation techniques in AWGN channel | GaussianWaves()

Pingback: Chi-Squared Distribution | GaussianWaves()

Pingback: Simulation of Symbol Error Rate Vs SNR performance curve for 16-QAM in AWGN | GaussianWaves()

Pingback: Simulation of Symbol Error Rate Vs SNR performance curve for 64-QAM in AWGN | GaussianWaves()

Pingback: Performance comparison of Digital Modulation techniques | GaussianWaves()

Pingback: Constructing a rectangular constellation for 16-QAM | GaussianWaves()

Pingback: BPSK modulation and Demodulation » GaussianWaves()

Pingback: QPSK modulation and Demodulation | GaussianWaves()