Comparing 16PSK vs 16QAM for symbol error rate
If you're new here, please click here to SUBSCRIBE and receive for FREE articles over email. Thanks for visiting! Happy learning.
In two previous posts, we have derived theoretical symbol error rate for 16-QAM and 16-PSK modulation schemes. The links are:
(a) Symbol error rate for 16-PSK
(b) Symbol error rate for 16-QAM
Given that we are transmitting the same number of constellation points in both 16-PSK and 16-QAM, let us try to understand the better modulation scheme among the two, i.e. to answer the following question:
For the same signal to noise ratio , will 16-PSK or 16-QAM give a lower symbol error rate?
Distance between the constellation points for 16-PSK

Figure: Distance between constellation points for 16-PSK modulation
As can be seen from the above figure, the distance between symbols and
can be approximated as,
, where
.
Distance between the constellation points for 16-QAM

Figure: Distance between constellation points for 16-QAM modulation
As can be seen from the above figure, the distance between the constellation points for 16QAM modulation is,
.
Comparing both,
.
The distance between the constellation points fo 16QAM modulation is around 1.6x the value for 16PSK modulation. Expressing in dB’s, this comes to around .
More the distance between the constellation, lesser is the chance of a constellation point getting decoded incorrectly. This implies that for the same symbol error rate, 16QAM modulation requires only 4.19dB lesser signal to noise ratio , when compared with 16PSK modulation.
% Matlab/Octave code for comparing the symbol error rate for 16PSK and 16QAM modulation
clear
M = 16;
Es_N0_dB = [0:25]; % multiple Es/N0 values
theorySer_16PSK = erfc(sqrt(10.^(Es_N0_dB/10))*sin(pi/M));
theorySer_16QAM = 3/2*erfc(sqrt(0.1*(10.^(Es_N0_dB/10))));
close all
figure
semilogy(Es_N0_dB,theorySer_16PSK,’bs-’,'LineWidth’,2);
hold on
semilogy(Es_N0_dB,theorySer_16QAM,’mx-’,'LineWidth’,2);
axis([0 25 10^-5 1])
grid on
legend(’theory-16PSK’, ‘theory-16QAM’);
xlabel(’Es/No, dB’)
ylabel(’Symbol Error Rate’)
title(’Symbol error probability curve for 16-PSK and 16-QAM modulation’)

Figure: Symbol Error Rate for 16PSK and 16QAM modulation
As can be observed, at a symbol error rate of , 16QAM requires only arond 19dB whereas 16PSK requires around 23dB of
.
No wonder we find 16-QAM modulation instead of 16-PSK in typical specifications like IEEE-802.11a, IEEE802.16d etc.
Hope this helps.
Thanks,
Krishna
If you liked this post, you may leave a comment below, or subscribe to the RSS feed.
You may also find these posts relevant...
Comments
Thanks for this article. Some where I read that normally we donot use M-PSK modulation with M more that 8. One reason being it puts higher constraints on VCO phase error requirements since for higher M, constellation points move nearer.
hi,
excellent article. i have a query. i have 16 distinct constellation points. what properties should these points satisfy to form square 16 qam? kindly help me
The 16 distinct points which I have are not {+/-1+/-j, +/-3,+/-3j,+/-3,+/-1j,+/-1,+/-3j} . I do know that the above points form 16 qam. {+/-2+/-2j,+/-6,+/-6j,+/-6,+/-2j,+/-2,+/-6j} also form 16 qam.
My question is given some arbitrary 16 distinct constellation points , what property must they satisfy to form a square constellation.
This is very helpful.
i build two simulink models to watch the curve of BERvsEbN0 try to understand the benifit of convolutional code.
The first one is: Burnoulli bits —– 16QAM —— modulation —- AWGN —– demodulation. The parameter of 16QAM modulation module is: ‘normalizztion method’= average power and ‘average power’=1 watt. The parameter of the AWGN channel module is ‘Eb/N0′=14.55dB and ‘input signal power’=1 watt. The BER is about 1E-6.
Convolutional code and decode module is added to the second model. The same BER (1E-6) is achieved with Eb/N0=14.25dB.
So, The CC only gives 0.3dB coding gain! Is that value correct? Or something wrong with my simulation?
Hello ..
I try to make matlab code for Hybrid ARQ with Chase combining and Incremental redundancy in HSDPA but I face some difficulty
I download code cml from http://www.iterativesolutions.com
and there is file “CreateUmtsImterleaver.dll with C languange
how to make file in .m from that .c file?
thanx for answer
thank you for your reply. I do not consider the scaling issue in my simulation. Does that mean the coding gain should be evaluated by EsN0 but not EbN0?
Thank you! i sent a e-mail to your mailbox. There are some questions i want to discuss with you. Is that OK?
Krishna,
Your explanation help me to clear a lot of confusion. Thank you!
i sent another mail to your gmail address to discuss Rx SNR listed in 802.16e-2005. i hope i can get some help from you.
hi i want to know that how can i get the magnitude of a signal if i only have got the angle of the signal for example i want to place my signal unevenly on a constellation plot : 1 signal point is at 22.5 degree and the other one is at 90 degrees i know it will reduce the BER but i just want to check the results ….how can i get the magnitude for such signal point for example i want to get the magnitude for a signal point of degree 22.5 or 40 degree


i am working om fast hsdpa for wimax, can you help me on matlab code for harq,IR,chase combining retransmissions.
regards
sandanalakshmi