Theoretical BER vs SNR for Amplitude Shift Keying (ASK)
The theoretical Bit Error Rate (BER) for binary ASK depends on how binary bits are mapped to signal amplitudes. For typical cases:
If bits are mapped to 1 and -1, the BER is:
BER = Q(√(2 × SNR))
If bits are mapped to 0 and 1, the BER becomes:
BER = Q(√(SNR / 2))
Where:
- Q(x) is the Q-function:
Q(x) = 0.5 × erfc(x / √2)
- SNR: Signal-to-Noise Ratio
- N₀: Noise Power Spectral Density
Understanding the Q-Function and BER for ASK
- Bit '0' transmits noise only
- Bit '1' transmits signal (1 + noise)
- Receiver decision threshold is 0.5
BER is given by:
Pb = Q(0.5 / σ), where σ = √(N₀ / 2)
Using SNR = (0.5)² / N₀, we get:
BER = Q(√(SNR / 2))
Theoretical BER vs SNR for Frequency Shift Keying (FSK)
For binary FSK, the theoretical BER is:
BER = Q(√(SNR))
The Q-function is defined as:
Q(x) = 0.5 × erfc(x / √2)
Similarities Between ASK and FSK
- Both BERs decrease as SNR increases
- Both use the Q-function for analytical BER calculation
- FSK generally performs better under noisy conditions
MATLAB Code for Theoretical BER vs SNR
Binary ASK (BASK)
% The code is written by SalimWireless.Com
clc;
clear all;
close all;
SNRdB = 0:20;
SNR = 10.^(SNRdB/10);
BER_th = (1/2) * erfc(0.5 * sqrt(SNR));
semilogy(SNRdB, BER_th, '-rh', 'linewidth', 2.5);
grid on;
title('Theoretical Bit Error Rate vs. SNR for Binary ASK Modulation');
xlabel('SNR (dB)');
ylabel('BER');
legend('Theoretical');
axis([0 20 1e-5 1]);
Binary FSK (BFSK)
% The code is written by SalimWireless.Com
clc;
clear;
close all;
SNRdB = 0:1:10;
SNR = 10.^(SNRdB/10);
BER_th = (1/2) * erfc(sqrt(SNR / 2));
disp('SNR (dB) Theoretical BER');
disp([SNRdB', BER_th']);
figure;
semilogy(SNRdB, BER_th, '-kh', 'LineWidth', 2);
xlabel('SNR (dB)');
ylabel('Bit Error Rate (BER)');
title('Theoretical BER vs SNR for BFSK');
grid on;