Quadrature Phase-shift Keying (QPSK) is a widely used method of transferring digital data by changing or modulating the phase of a carrier signal. In QPSK digital data is represented by 4 points around a circle which correspond to 4 phases of the carrier signal. These points are called symbols. Figure 1 shows this mapping. Gray coding is used in this mapping so that no two adjacent symbols differ by more than 1 bit. This helps in reducing the Bit Error Rate (BER).
To model QPSK, we need:
-Input Data to transmit/modulate with carrier
-Noisy Medium to transfer the data
-Demodulation of transmitted data.
-Comparison of original signal, and the demodulated signal to calculate the Bit Error Rate (BER)
For the input signal we can use the following command:
x_signal = randint(1000,1,4);
To modulate the data against the grey coded constellation, you can use the genqammod matlab function.
y = genqammod(x_signal,constell_gray);
I then made a for loop, each iteration of the loop represents the Signal to Noise Ratio (SNR).
for SNR=0:2:10
y_noisy = awgn(y,SNR,'measured');
From the below graphs, you can see that the higher the SNR, the better the received signal.
SNR = 6
![]()
QPSK is simple and works fine for most applications. To increase bandwidth, you can use more than 4 symbols to represent your data. For instance, digital cable companies such as charter and Comcast, use 256-QAM. 256 QAM looks similar to the constellation above, except there are 64 symbols in each quadrant arranged in a rectangular fashion. The symbols are determined by modulating the Phase, and Amplitude of the carrier signal.
To demonstrate how effective QAM is, I modulated the original data input using 4-QAM instead of QPSK. The graph is shown below:
4-QAM
![]()