QAM Theoretical BER in AWGN

Quadrature Amplitude Modulation (QAM) is an important modulation scheme as it allows for higher data rates and spectral efficiencies. The bit error rate (BER) of QAM can be calculated through Monte Carlo simulations. However this becomes quite complex as the constellation size of the modulation schemes increases. Therefore a theoretical approach is sometimes preferred. The BER for Gray coded QAM, for even number of bits per symbol, is shown below.

BER of 4-QAM, 16-QAM, 64-QAM, 256-QAM in AWGN
BER of 4-QAM, 16-QAM, 64-QAM, 256-QAM in AWGN

Gray coding ensures that a symbol error results in a single bit error. The code for calculating the theoretical QAM BER for k even (even number of bits per symbol) is given below. The formula for calculating the BER for k odd is different, however, the formula given below can be used a first estimate.

EbNodB=-6:2:24
EbNo=10.^(EbNodB/10);
k=8;
M=2^k;
x=sqrt(3*k*EbNo/(M-1));
Pb=(4/k)*(1-1/sqrt(M))*(1/2)*erfc(x/sqrt(2));
semilogy(EbNodB,Pb)

Note:
1. Each additional bit/symbol requires about 2dB extra in SNR to achieve the same BER.
2. 4-QAM is essentially QPSK modulation.

Author: John (YA)

John has over 15 years of Research and Development experience in the field of Wireless Communications. He has worked for a number of companies around the world including Qualcomm Inc. USA. He has an MS in Electrical Engineering from Virginia Tech USA and has published his work in international journals and conferences.

1.00 avg. rating (52% score) - 1 vote

21 thoughts on “QAM Theoretical BER in AWGN

  1. Hello all, can someone help me with this problem?
    In a QPSK system, the channel has a combination of AWGN n[k] and interference I[k] which is also AWGN. The average transmit power is Pt, the noise spectral density is 10^(−8) W/Hz, the channel bandwidth B is 10 KHz (receiver noise power is N0B), and the interference power is Pi.

    Question: Please simulate the average Symbol Error Rate vs SINR (signal-to-noise-plus-interference ratio) in Matlab. Please derive the average SER and plot the theoretical average SER vs SINR in the same figure.

    1. Dayn, you need to understand the following to do this assignment:

      Noise or Interference Power: Bandwidth x Noise or Interference PSD
      Total Noise and Interference Power: Noise Power + Interference Power
      Signal to Interference and Noise Ratio (SINR): Signal Power / (Noise Power + Interference Power)

      Since this is an assignment I would like to leave the rest to you. Plus you can take the help from the blog (be careful not to mix up SNR, SINR and EbNo).

  2. Consider the following interference channel
    The channel has a combination of AWGN n[k] and interference I[k]. We model I[k] as AWGN. The average transmit power is Pt, the noise spectral density is 10^(−8) W/Hz, the channel bandwidth B is 10 KHz (receiver noise power is NoB), and the interference power is Pi.
    1. Please simulate the average SER vs SINR in Matlab. Please derive the average SER and plot the theoretical average SER vs SINR in the same figure.
    2. Assume that the interferer is on (i.e. the switch is down) with probability 0.25 and off (i.e. the switch is up) with probability 0.75. Pt=10 mW, and Pi =9 mW.
    Please do the following.
    2.1 What is the Shannon capacity of the channel if neither transmitter nor receiver know when the interferer is on?
    2.2 What is the capacity of the channel if both transmitter and receiver know when the interferer is on?
    2.3 Suppose now that the interferer is a malicious jammer with perfect knowledge of x[k] (so the interferer is no longer modeled as AWGN). Assume that neither transmitter nor receiver have knowledge of the jammer behavior. Assume also that the jammer is always on
    and has an average transmit power of 10 mW. What strategy should the jammer use to minimize the SNR of the received signal?
    3 What insight can you get from the above exercise?

    1. Pt=10mWatt
      Pi=9mWatt
      Pn=10^(-8)*10000=0.1mWatt
      P_ON=0.25
      P_OFF=0.75

      In case it is known when the jammer is on and when its off the capacity would be sum of two capacities.

      C_ON=B*log2(1+SINR)=10000*log2(1+10/(0.1+9))=10000*log2(2.0989)=10696 bits/sec

      C_OFF=B*log2(1+SNR)=10000*log2(1+10/0.1)=10000*log2(101)=66582 bits/sec

      C_Total=P_ON*C_ON+P_OFF*C_OFF=0.25*10696+0.75*66582=52610 bits/sec

      If it is not known when the jammer is on you can adopt one of two strategies.

      1. Always transmit at the lower rate dictated by presence of jammmer.
      2. Always transmit at the higher rate and totally lose the signal for 25% of the time.

      Figure out which one is better!

  3. How are you doing
    I am doing the performance analysis of quasi-orthogonal space-time codes under QAM debugging, using MATLAB simulation, but I do not know the error rate simulation formula How to say, is the same as you write the simulation formula? If not, do you know what it is? I have a piece of code but is under QPSK debugging, its simulation formula is PPQOSTBC (KK) = 0.5*ERFC (sqrt (0.5*SNRQOSTBC)). Can you tell me if you know?
    Thank you so much

  4. I simulate the BER performance of M-ary QAM .
    now I want to check that result with theoretical ber. So, please send to me theoretical BER equation of M-ary QAM
    thank U

  5. Hello, Can someone please help me with the following?
    The source generates equal probable symbols, P(si) = 0.125, i=0,…,7, and Gray mapping is used to map information bits to the PAM signals.
    (a) Create a Matlab program so it can simulate the symbol error performance and the
    bit error rate performance of the 8-PAM communication system for the transmission of packets of 10,000 symbols each.
    (b) Using your program to simulate the symbol error performance and the bit error
    performance of the system with
    Eb/N0 = 0, 2, 4, 6, 8, 10 dB.

    So far, I have the following code.
    N = 10^4; % number of symbols
    >> alpha8pam = [-7 -5 -3 -1 1 3 5 7]; % 8-PAM alphabets
    >> Es_N0_dB = [0:2:4:6:8:10]; % multiple Eb/N0 values
    >> ipHat = zeros(1,N);
    for ii = 1:length(Es_N0_dB)
    ip = randsrc(1,N,alpha8pam);
    s = (1/sqrt(5))*ip; % normalization of energy to 1
    n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % white guassian noise, 0dB variance

    y = s + 10^(-Es_N0_dB(ii)/20)*n; % additive white gaussian noise

    % demodulation
    r = real(y); % taking only the real part
    ipHat(find(r= 2/sqrt(5))) = 3;
    ipHat(find(r>=-2/sqrt(5) & r=0 & r<2/sqrt(5))) = 1;

    I'm not sure how to write the rest of the 'iphat' values.

  6. My Octave version.

    I’m new to Octave and doing this sort of thing so please offer suggestions and corrections.

    function Y=Q(X)
    Y=0.5.*erfc(double(X)./sqrt(2))
    endfunction

    EbNodB=0:2:30
    EbNo=10.^(EbNodB/10)
    K=[2 4 6 8]
    M=2.^K
    KM=double(3*K./(M-1))
    KME=double(KM’*EbNo)
    X=double(sqrt(KME))
    Pb=double((4./K).*(1-1./sqrt(M)))’.*Q(X)
    semilogy(EbNodB,Pb)
    title(“M-QAM BER v SNR”)
    grid on
    grid minor on
    legend(num2str(M’))
    ylim([1e-8 1e0])
    xlabel(“Eb/No (dB)”)
    ylabel(“BER”)
    print -dsvg q.svg

    1. This is the complete code. You should be able to reproduce the above Fig. If you are still unable to do so, please share your code here.

      John

  7. I simulate the BER performance of M-ary QAM over Rayleigh fading channel in Matlab tool, now I want to check that result with theoretical ber. So, please send to me theoretical BER equation of M-ary QAM over Rayleigh fading channel.

    Thanking you.

  8. Hello, it seems that everyone is in need of those codes :). Could you send me the code for matlab also??

    I’ll appreciate it. Thank you!!

  9. Gordon: Frankly speaking I could not figure this out easily and had to do a simulation. It turns out that there is significant difference (2-3 dB) at low EbNo but at higher signal to noise ratios the difference is reduced to a fraction of a dB.

    The simulation considered 64-QAM modulation but similar results are expected for other modulation schemes.

  10. May I know the sensitivity difference between the cases with and without gray coding?

    Best

    Gordon

  11. Hello,
    I tried to do the graphic that you upload to the website in order to calculate the theorical BER of 4-QAM, 16-QAM and 64-QAM.
    I am not able to reproduce that graphic, could you send me the complete matlab code??

    Thank you very much

Leave a Reply

Your email address will not be published. Required fields are marked *