Articles

# Comparing 16PSK vs 16QAM for symbol error rate

In two previous posts, we have derived theoretical symbol error rate for 16-QAM and 16-PSK modulation schemes. The links are:

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 $\frac{E_s}{N_0}$, 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 $s_0$ and $s_1$ can be approximated as,
$d_{16psk}=2\sqrt{E_s}sin(\frac{\pi}{M})$, where $M=16$.

## 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,

$d_{16qam}=2\sqrt{\frac{E_s}{10}}$.

Comparing both,
$ratio=\frac{d_{16qam}}{d_{16psk}}=\frac{2\sqrt{\frac{E_s}{10}}}{2\sqrt{E_s}sin(\frac{\pi}{16})}=1.62$.

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 $ratio_{dB} = 20\log(1.62)=4.19dB$.

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 $\frac{E_s}{N_0}$, 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 $10^{-4}$, 16QAM requires only arond 19dB whereas 16PSK requires around 23dB of $\frac{E_s}{N_0}$.

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

## 56 thoughts on “Comparing 16PSK vs 16QAM for symbol error rate”

1. oluseye says:

Any one got the MATLAB code to simulate cooperative communication using R-S codes? Please I need it for my research.

Thanks

2. dema says:

Hi i am working on 16 QAM transmitter using DSP my section is to simulate it using matlab i am not using existing function for modulate and demodulate i built it by myself and i use RRC in my code but what i really want to know is the relationship between distance (between adjacent symbols) and the energy per bit Eb please give me the equations please

i need 8psk matlab code in Rayleigh channel.

1. dedy says:

just change M=16 into M=8, correct me if i am wrong….

4. eca says:

dear sir..
I am a EEPIS college student who was working on the final task of power control for rain attenuation … I’m confused with the usage for m-PSK tresshold what is the value of SNR tresshol for example 16 PSK, and from which the empirical calculation?

1. @eca: How do you set the threshold? Is it based on BER constraint?

5. R B Patil says:

dear sir \
can you tell me ……………comparison 16QAM and 64 QAM with respect to bandwidth and power requirement

6. Hi krishan sankar
I work Qouds university, please send me your simulation code for pre-fft and post fft at frequency selective fading and comparison pre fft and post fft
in ofdm .
thank a lot

7. BusyWasp says:

Hi Krishna,
I wanna thanku inadvance for great articles you’ve done and I wonder if you could compare the bit error probabilities of the 64-QAM nd a 64-PSK? Also, i’d be greatful if you have any matlab scripts for comparing.

8. ahmed says:

Hi Krishna, when use normalization the system performance get worst is that correct am using 16qam and 64qam

9. Rahul says:

Hi, i see that you have used a manual check for the recieved signal elements to deocde them to the nearest point in case of 16 QAM ser simulation.
But if i use the matlab QAMmod and QAM demod tool I am getting a different curve why?

1. @Rahul: Since I do not use matlab for blogging, I do not have the functions QAMMOD and QAMDEMOD. However just one q which might help you debug:
1/ Are you getting a BER curve with a similar slope, but shifted to either right or left of the theoretical curve? Then it might be some normalization error.

10. @busybee:
The parameter called rate in coding (1/2, rate 3/4 etc) convey the level of redundancy added. For eg rate 1/2 means we send out 2 coded bits for every 1 data bit.

To answer the question on ‘8psk vs 16qam’ – one need to check the average distance between the modulation schemes. Using the similar analysis as we did in 16psk vs 16qam post,
average distance in 16qam case is 2*sqrt(Es/10).
Average distance in 8psk is 2*sin(pi/8)*sqrt(Es).

We can see that 2*sin(pi/8)*sqrt(Es) > 2*sqrt(Es/10), hence 8psk provides better performance.

Hope this helps.

11. busybee says:

krishna can you please explain me the meaning of rate 1/2 ,rate 3/4 etc coders?Why BPSK is best?why 8psk better than 16 QAM?

12. Krishna Pillai says:

@skhan:
If I understand your requirement correctly, you want to place your constellation points at arbitrary points. Am assuming that magnitude is 1. If you want to plot a constellation at 40degrees, the following simple matlab code snippet might be helpful.
x = exp(j*2*pi*40/360);
plot(real(x),imag(x),’bd’);
axis([-1 1 -1 1]); grid on;

And just to add, we cannot define a constellation point on the IQ plane by knowing the angle alone. We need both angle and magnitude and angle to define a point in the plane.

13. skhan says:

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

14. Ming Chan says:

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.

Dear ming,

i work on IEEE802.16e,please send me your simulation cod for me .plz help me.pllllllllllllleaseeeeeeeeeeee….
tanx alot

1. @mohammad: Sorry, I do not have simulation code for 802.16e. Good luck.

15. Krishna Pillai says:

@MingChan: Yes, you are right. The gain at 10^-5 BER point is around 3dB.
Thanks for pointing this out, and sorry for the error.

16. Ming Chan says:

Thank you! i sent a e-mail to your mailbox. There are some questions i want to discuss with you. Is that OK?

17. Krishna Pillai says:

@Ming Chan:
#1 I meant coding gain need to be evaluated by Eb/No (and provided that formula for helping you to convert Es/No to Eb/No). Do you have Matlab? If yes, type bertool in the command line. It will open an a GUI. You may use that to compare. From a quick check, for BPSK modulation I can see around 1.5dB gain for 10^-5 BER point with rate 1/2 K=7 convolutional code.

#2: No, OFDM does not improve BER in AWGN channel. One may think of OFDM as upconversion of bits into subcarriers. And as you know, up/down conversion has no effect on BER. You may want to look at the post on BER for BPSK with OFDM modulation.
https://dsplog.com/2008/06/10/ofdm-bpsk-bit-error/

18. Ming Chan says:

Another question is: does OFDM improve BER in AWGN channel?
sorry for so many questions. π

19. Ming Chan says:

forget to say : the code rate is 1/2 in my simulation. No puncture.

20. Ming Chan says:

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?

21. Krishna Pillai says:

@husna: As far as I know, there is no tool which can take in .c code and churnout .m code. Manual conversion? π

22. Krishna Pillai says:

@Ming Chan: I just did a quick check. Bit error rate for 16QAM (assuming Gray coded bit mapping) gives around 10^-6 BER near 14.dB of Eb/No. The gain from convolutional coding employed depends on the coding rate. I do not have the numbers. Further, kindly check to ensure that the scaling is proper.
For example for 16QAM with convoltional coding rate of m (1/2, 1/3 etc), each symbol carries 4*m bits. So, Es/No = 4*m*Eb/No.
Does this help?

23. husna says:

Hello ..
I try to make matlab code for Hybrid ARQ with Chase combining and Incremental redundancy in HSDPA but I face some difficulty
and there is file “CreateUmtsImterleaver.dll with C languange
how to make file in .m from that .c file?

1. Ines says:

Hello Husna,
I m working on the evaluation of HARQ performance over CDMA . And I read you question , did you find anything interesseting? can You send me what you find or some matlab code that you wrote ??? I ‘ll be soooooooooo much gratefull , I need it so quich pleaseeeeeeeeeeeee

2. Syed Abdullah Abbas says:

hi, u can consult me if u have problem with matlab coding,

24. Ming Chan says:

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?

25. Krishna Pillai says:

@rajesh: Well, I would think that you are suggestion is also 16-QAM. The only difference being that the distance between the constellation is not 4 (instead of 2). One may visualize this as the classical 16-QAM with 6dB (20*log10(2)) more power. But, why would you do that?

Another thing to do is rotate this by some arbitrary phase. But, that would make the receiver more complex (she wont be able to decode I and Q arms as independent PAM modulations).

From you questions, I can guess that you are looking for more information (unfortunately, I am unable to figure out what you want). Are you looking for details on constellation design? [DIG-COMM-BARRY-LEE-MESSERSCHMITT] briefly discuss this. Maybe that will help.

26. rajesh says:

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.

27. Krishna Pillai says:

@rajesh: Well, for square QAM, you need to arrange them into {+/-1+/-j, +/-3,+/-3j,+/-3,+/-1j,+/-1,+/-3j} constellation points. Is that what you were looking for? OR
Were you looking for how to map the bits into constellation points?

If the question is latter, one good way is to do Gray mapping and ensure that adjacent constellation points are seperated only by one bit.

Does that help?

28. rajesh says:

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

29. Krishna Pillai says:

@sandeep: Yes, you are right. For modulation order M>=8, M-QAM requires a lower signal to noise than M-PSK for achieving the same error rate in AWGN channel alone.

I do not think that you were precise when you mentioned that VCO phase error is the reason 16QAM being better. Infact, as shown in the above post, 16QAM is better than 16PSK even in an enviroment with no RF impairments. Agree?

Btw, do I know you? Your name sounds familiar π

30. sandeep says:

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.

31. Krishna says:

@sandanalakshmi:
sure, I can help you. However, I should add that I have not yet worked on HARQ and I would need some ramping up…

1. ananta says:

i am finishing my college final project about COMPARING M-PSK and M-QAM in OFDM.
could you help me on matlab code for M-PSK code and M-QAM code.

Thanks

2. Ines says:

Hello,
Please I need help I’m working on the evaluation of performance of HARQ over CDMA and I do face so many problems n matlab could you please help me !!!!

1. @Ines: Though I have not tried modeling HARQ, you can ask queries. I will try answer to the best of my knowledge.

1. Ines says:

Thanks a lots Krishna , The problem is that I have to compre the HARQ throughput in therical and simulation models and When I simulate the two curves are differents. And you should have some knowldge with HARQ model. what should I do? It’s urgent π

2. IK says:

I am also working on HARQ, though using LDPC code. We can still perhaps discuss issues bcoz I am aware slightly of code combining.

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