Design of QPSK Receivers and SER Analysis

Experiment - 3

1 Aim

To design a discrete time QPSK communication receiver, and analyze the SER performance.

2 Theory

constellation for BPSK
Fig.1 Constellation Map

2.1 ML Rule

Since every symbol is equally likely, the ML rule is based on the shortest euclidean distance: $$ arg\:min\:||y-s_{i}||^2,\:i=0,1,2,3 $$

2.1 SER

Let \(E\) be the error bit and \(s_{0}, s_{1}, s_{2}, s_{3}\) be the possible symbols. Let \(s_{i}\) be the \(i^{th}\) symbol and since all symbols are equally likely: $$ P(E=1) = \frac{1}{4}\sum_{i=0}^3 P(E=1 \mid s_{i})\tag{1} $$ Owing to the symmetry of the constellation, $$ P(E=1 \mid s_{0}) = P(E=1 \mid s_{1}) = P(E=1 \mid s_{2}) = P(E=1 \mid s_{3})\tag{2} $$ From (1) and (2), $$ P(E=1) = P(E=1 \mid s_{0}) = P(E=1 \mid s_{1}) = P(E=1 \mid s_{2}) = P(E=1 \mid s_{3})\tag{3} $$ Let \(S_{k} = [S_{1k}, S_{2k}]\) represent the symbol transmitted and \(N_{k} = [N_{1k}, N_{2k}]\) be the noise introudced by the AWGN channel such that \(Y_{k} = [Y_{1k}, Y_{2k}] = N_{k} + S_{k}\). Then, $$ P(E=1) = P(E=1 \mid s_{0}) $$ $$ = P(Y_{1k} < 0, Y_{2k} < 0) $$ $$=1 - P(Y_{1k}> 0, Y_{2k} > 0) $$ $$ = 1 - P(S_{1k} + N_{1k} > 0, S_{2k} + N_{2k} > 0) $$ $$ = 1 - P\Bigg(\frac{\sqrt{E_{s}}}{2} + N_{1k} > 0,\frac{\sqrt{E_{s}}}{2} + N_{2k} > 0\Bigg) $$ $$ = 1 - P\Bigg(N_{1k} > -\sqrt{\frac{E_{s}}{2}}, N_{2k} > -\sqrt{\frac{E_{s}}{2}}\Bigg) $$ $$ = 1 - P\Bigg(N_{1k} > -\sqrt{\frac{E_{s}}{2}}\Bigg)P\Bigg(N_{2k} > -\sqrt{\frac{E_{s}}{2}}\Bigg) $$ $$ = 1 - P\Bigg(\frac{N_{1k}}{\sigma} > -\sqrt{\frac{E_{s}}{2\sigma^2}}\Bigg)P\Bigg(\frac{N_{2k}}{\sigma} > -\sqrt{\frac{E_{s}}{2\sigma^2}}\Bigg) $$ $$ = 1 - Q^2\Bigg(-\sqrt{\frac{E_{s}}{2\sigma^2}}\Bigg) $$ $$ = 1 - \Bigg(1 - Q\Bigg(\sqrt{\frac{E_{s}}{2\sigma^2}}\Bigg)\Bigg)^2 $$ $$ = 2Q\Bigg(\sqrt{\frac{E_{s}}{N_{0}}}\Bigg) - Q^2\Bigg(\sqrt{\frac{E_{s}}{N_{0}}}\Bigg) $$ $$ \therefore \boxed{P_{e} = P(E=1) = 2Q\Bigg(\sqrt{\frac{E_{s}}{N_{0}}}\Bigg) - Q^2\Bigg(\sqrt{\frac{E_{s}}{N_{0}}}\Bigg)}\tag{4} $$

3 Design

Input: NO_OF_BITS, SB_N0_DB
Output: SER

map([bit1, bit2]) = {
    00: [1/sqrt(2), 1/sqrt(2)],
    01: [1/sqrt(2), -1/sqrt(2)],
    10: [-1/sqrt(2), 1/sqrt(2)],
    11: [-1/sqrt(2), -1/sqrt(2)]
}

ML([bit1, bit2]) = {
    00: bit1 > 0 and bit2 > 0
    01: bit1 > 0 and bit2 < 0
    10: bit1 < 0 abd bit2 > 0
    11: bit1 < 0 and bit2 < 0
}

Sk = map(Bk.group(2))

for SB_N0 in SB_N0_DB
    Nk = AWGN(SB_N0, 2D)
    Yk = Sk + Nk
    sHat = ML(Yk)
    unchangedSymbols = count(sHat === Sk)
    SER = 1 - (unchangedSymbols/NO_OF_BITS)

plot(SER, SER_THEORETICAL)
                
The time complexity of the algorithm is \(O(N^2)\).

4 JavaScript Code

5 Results and Inferences

Fig.2 Simulation result for QPSK with \(10^3\) bits
Fig.3 Simulation result for QPSK with \(10^4\) bits
Fig.4 Simulation result for QPSK with \(10^5\) bits
Fig.5 Simulation result for QPSK with \(10^6\) bits

From the above figures, it can be seen that the simulated \(P_{e}\) and theoretical \(P_{e}\) match better with increase in the number of bits. This is because, to get confidence in the simulated results, there must be sufficient number of bit errors. For example, to get a bit error rate of \(10^{-5}\), one needs to send at least \(10^6\) bits. Also, it can be seen that the \(P_{e}\) reduces gradually with increase in \(\frac{E_{s}}{N_{0}}\), the SNR per symbol. This is due to the fact that as the SNR per symbol increases, the signal becomes less affected by the presence of noise, thus reducing errors in ML detection. Finally, another important thing to be noted is that the simulated curve is not only affected by the symbol errors, but is also affected by floating point errors.