A generic simulation technique to simulate all M-PSK modulation techniques (for upto (M=32)) is given here. The given simulation code is very generic, and it plots both simulated and theoretical symbol error rates for all M-PSK modulation techniques (upto (M=32)).

### M-PSK Modulation and simulation methodology:

The general expression for a M-PSK signal set is given by

$$ s_i \left( t \right)=V cos \left[ 2 \pi f_c t – \frac{ \left( i – 1 \right) 2 \pi }{M}\right] \;\;\; \text{ where i = 1,2,…,M} \;\; \rightarrow (1) $$

Here M defines the number of constellation points in the constellation diagram and essentially the M-PSK type. For example (M=4) implies 4-PSK or QPSK, (M=8) implies 8-PSK. The value of M depends on another parameter (k) – the number of bits we wish to squeeze into a single M-PSK symbol. For example if we wish to squeeze in 3 bits ((k=3)) in one transmit symbol, (M = 2^k = 2^3 = 8). This gives us 8-PSK configuration.

Equation (1) can be separated into cos and sin terms as follows

$$ s_i(t) = V cos \left[ \frac{(i-1)2\pi}{M} \right] cos(2 \pi f_c t) \; + \; V sin \left[ \frac{(i-1)2\pi}{M} \right] sin(2 \pi f_c t) \rightarrow \;\;\;(2) $$

This can be written as

$$ \begin{matrix}

s_i(t) = s_{i1}\phi_{1}(t) + s_{i2}\phi_{2}(t) \;\; \rightarrow (3)\

where,\

\

s_{i1} = \sqrt{E_s}\; cos \left[ \frac{(i-1)2\pi}{M} \right] \;,\; s_{i2} = \sqrt{E_s}\; sin \left[ \frac{(i-1)2\pi}{M} \right]\

\

\phi_{1}(t) = \frac{V cos(2\pi f_c t)}{\sqrt{E_s}},\phi_{2}(t) = \frac{V sin(2\pi f_c t)}{\sqrt{E_s}}\end{matrix}$$

Here (\phi_{1}(t)) and (\phi_{2}(t)) are orthonormal basis functions that follows from Gram-Schmidt orthogonalization procedure and (s_{i1}) and (s_{i2}) are the coefficients of each signaling point in the M-PSK constellation. (E_s) is the symbol energy usually normalized to (1/\sqrt{2}) The constellation points on the M-PSK constellation lie (2 \pi /M \;) radians apart and are placed on a circle of radius (\sqrt{E_s}). The coefficients (s_{i1}) and (s_{i2}) are termed as inphase (I) and quadrature-phase (Q) components respectively.

The ideal constellation diagram for M-PSK contains M equally spaced signaling points that are located at the distance (\sqrt{E_s}) from the origin. Figure 1 illustrates the ideal constellation diagram for 8-PSK constellation.

The generated I and Q components are then added with AWGN noise of required variance depending on the required E_{s}/N_{0}. The received signal’s constellation is corrupted with noise and the detection is based on comparing the received symbols with the ideal signaling points and making a decision based on the minimum distance.

Finally the simulated and theoretical symbol error rates are computed.

The theoretical symbol error rate ^{[1]} for M-PSK modulation is given by

### Matlab Simulation:

Check this book for full Matlab code.

Digital Modulations using Matlab: Build Simulation Models from Scratch – by Mathuranathan Viswanathan

### Simulation Result:

### Reference

[1] John G. Proakis, “Digital Communciations”, McGraw-Hill; 5th edition

### See Also

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

[2] BER Vs Eb/N0 for QPSK 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

### Recommended Books

Pingback: Symbol Timing Recovery for QPSK (digital modulations) – GaussianWaves()

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

Pingback: BPSK modulation and Demodulation | GaussianWaves()

Pingback: BER Vs Eb/N0 for BPSK modulation over AWGN – GaussianWaves()

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

Pingback: Channel Capacity & Shannon’s theorem – demystified | GaussianWaves()

Pingback: QPSK modulation and Demodulation | GaussianWaves()

Pingback: BER Vs Eb/N0 for QPSK modulation over AWGN | GaussianWaves()

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

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

Pingback: Non-central Chi-squared Distribution | GaussianWaves()

Pingback: Chi-Squared Distribution | GaussianWaves()

Pingback: Procedure for plotting any PDF in Matlab | GaussianWaves()