9.1 Title: Design and Analysis of a Quadrature Amplitude Modulation (QAM) Modulator and its Bit Error Probability
9.2 Aim of the experiment: To design a Quadrature Amplitude Modulation (QAM) modulator using basic digital modulation techniques and analyze its bit error probability for given specifications.
9.3 Theoretical background for the experiment: Quadrature Amplitude Modulation (QAM) is a digital modulation technique that conveys data by varying both the amplitude and phase of the carrier signal. QAM combines amplitude modulation (AM) and phase modulation (PM) to achieve higher data rates. For
M-QAM, there are distinct points in the constellation diagram, representing bits per symbol.
Bit Error Probability Analysis: In an Additive White Gaussian Noise (AWGN) channel, the bit error probability for square M-QAM is approximated by:
Where:
: Q-function.
: Energy per bit to noise power spectral density ratio.
9.4 Design:
Input Data: Random binary sequence.
Mapping: Map groups of bits to one of symbols in the QAM constellation.
Modulation: Generate QAM modulated signal using carrier frequencies.
Demodulation: Recover the binary sequence from the received signal.
BER Calculation: Compare transmitted and received bits to compute BER.
9.5 Step by step procedure to carry out the experiment:
Generate a random binary data stream.
Divide the data into groups of bits and map each group to a symbol in the QAM constellation.
Generate the QAM signal using in-phase (I) and quadrature (Q) components.
Add AWGN noise to the transmitted signal.
Demodulate the noisy signal and recover the binary data.
Calculate BER by comparing the transmitted and received data.
9.6 Code:
Quadrature Amplitude Modulation (QAM)
% Parameters
numBits = 1e6; % Number of bits to transmit
M = 16; % Modulation order (16-QAM)
k = log2(M); % Bits per symbol
snrRange = 0:2:20; % SNR range in dB
ber = zeros(size(snrRange)); % Bit Error Rate array
% Generate random binary data
data = randi([0 1], numBits, 1);
% Map bits to QAM symbols
dataSymbols = reshape(data, [], k); % Group bits into k-bit symbols
symbolIndices = bi2de(dataSymbols, 'left-msb'); % Convert bit groups to decimal
qamSymbols = qammod(symbolIndices, M, 'UnitAveragePower', true); % QAM modulation
% Analyze BEP for each SNR
for idx = 1:length(snrRange)
snr = snrRange(idx);
% Add AWGN
noisySymbols = awgn(qamSymbols, snr, 'measured');
% Demodulate received symbols
receivedIndices = qamdemod(noisySymbols, M, 'UnitAveragePower', true);
receivedBits = de2bi(receivedIndices, k, 'left-msb'); % Convert to bits
receivedBits = receivedBits(:); % Reshape to a column vector
% Calculate BER
ber(idx) = sum(data ~= receivedBits) / numBits;
end
% Plot BEP vs SNR
figure;
semilogy(snrRange, ber, 'b-o', 'LineWidth', 1.5);
grid on;
title('Bit Error Probability (BEP) for 16-QAM');
xlabel('SNR (dB)');
ylabel('Bit Error Probability (BEP)');
legend('16-QAM');
9.7 Observations and results:
The QAM modulated signal showed varying amplitude and phase corresponding to the binary data.
The BER decreased as increased, following the theoretical trend for M-QAM in AWGN channels.
The experimental BER closely matched theoretical predictions for 16-QAM.
9.8 Plotting of the graph:
9.9 Conclusion of the experiment:
The QAM modulator was successfully designed using basic digital modulation techniques, and its bit error probability was analyzed. The results confirm that higher-order QAM achieves efficient spectral utilization at the cost of increased sensitivity to noise, as evident from the BER performance curve.