Sunteți pe pagina 1din 10

UNIVERSIDAD DE LAS FUERZAS ARMADAS

ESPE
DEPARTAMENTO DE ELECTRICA Y ELECTRNICA
SISTEMAS DE COMUNICACIONES

MODDULACIN QPSK 4QAM, 16QAM Y 64 QAM

Mnica Tapia
Danilo Len





MODDULACIN QPSK 4QAM, 16QAM Y 64 QAM
La Modulacin es una parte importante de los sistemas de comunicaciones ya que permiten
controlar la cantidad de informacin a transmitir, una de las ms usadas es justamente
modulacin QPSK, en la cual existen varias formas como son 4QAM, 16 QAM, 64QAM entre otras.
ANLISIS
Se ha tomado un nmero de smbolos igual a 100000, y tenemos lo siguiente
Para 4QAM

Tomando en cuenta que la distancia entre cada smbolo es 2 A se tiene que la energa
media del smbolo es:


Programa en Matlab:
%4qam
%transmisor


n_sim=100000;%numero de simbolos
A=((2^0.5)/2);
simbolos=randsrc(1,n_sim,[1 2 3 4;1/4 1/4 1/4 1/4]);
simbolos_originales=simbolos;

c_simbolos=[];
S1=A+1i*A;
S2=-A+1i*A;
S3=-A-1i*A;
S4=A-1i*A;
S=[S1 S2 S3 S4];


c_simbolos(find(simbolos==1))=S(1);
c_simbolos(find(simbolos==2))=S(2);
c_simbolos(find(simbolos==3))=S(3);
c_simbolos(find(simbolos==4))=S(4);
c_simbolos;
[simbolos_originales;c_simbolos];

%canal
ps=[];
pt=[];
EsNo_db=[1:1:50];
for e=EsNo_db
EsNo=10^(e/10);
Es=1;
No=Es/EsNo;
sigma2=No/2;
sigma=sqrt(sigma2);

%sigma=0.3;
ruido=normrnd(0,sigma,1,n_sim)+i*normrnd(0,sigma,1,n_sim);
y=c_simbolos+ruido;
%figure(1)
%plot(y,'bo')

%receptor
x=[];
for k=1:4
x=[x;(abs(y-kron([S(k)],ones(1,n_sim)))).^2]; %ponemos en la
misma matriz
e

end
[u,z]=min(x);%devuelve la posicion del valor mnimo

%calculo de la probabilidad de error
Pe=sum(abs(sign(simbolos-z)))/n_sim
ps=[ps Pe];


%funcion M=QAM para 4 puntos es el mismo qpsk
Es=1;%Energa media del smbolo
M=4;%Representa AQM=MQAM
sigma_t=2*sigma;
pet=(4*(sqrt(M)-1)/(sqrt(M)))*Q(sqrt((3*(Es/No))/((M-1))))
pt=[pt pet];
end
figure(1)
semilogy(EsNo_db,pt);
hold on
semilogy(EsNo_db,ps,'ro');
grid on;
xlabel('E_s/N_0');
ylabel('Probabilidad de error de simbolo 4qam');
legend('teora 4qam QPSK','simulacion 4qam QPSK');
hold on;


Para 16QAM


De igual forma como los puntos son equidistantes, y la distancia entre smbolos es 2 A se
tiene que la energa media del smbolo es:


Programa en Matlab:
%16qam

%transmisor
clear all;
n_simbolos=100000; %simbolos generados

simbolo=randsrc(1,n_simbolos,[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 ; 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16
1/16 1/16 1/16 1/16]);


original=simbolo;

[b]=simbolo;
Es=10;

A=sqrt(Es/10);

s=[A+i*A 3*A+i*A 3*A+i*A*3 A+i*A*3 -A+i*A -3*A+i*A -3*A+i*A*3 -
A+i*A*3 -A-i*A -3*A-i*A -3*A-i*A*3 -A-i*A*3 A-i*A 3*A-i*A 3*A-
i*A*3 A-i*A*3];



simbolo(find(b==2))=(s(2)); %encontramos la posicion
simbolo(find(b==1))=(s(1));
simbolo(find(b==3))=(s(3));
simbolo(find(b==4))=(s(4));
simbolo(find(b==5))=(s(5));
simbolo(find(b==6))=(s(6));
simbolo(find(b==7))=(s(7));
simbolo(find(b==8))=(s(8));
simbolo(find(b==9))=(s(9));
simbolo(find(b==10))=(s(10));
simbolo(find(b==11))=(s(11));
simbolo(find(b==12))=(s(12));
simbolo(find(b==13))=(s(13));
simbolo(find(b==14))=(s(14));
simbolo(find(b==15))=(s(15));
simbolo(find(b==16))=(s(16));




%canal
ps=[];
pt=[];
EsNo_db=[1:1:50];
for e=EsNo_db
e
EsNo=10^(e/10);
No=Es/EsNo;
sigma2=No/2;
sigma=sqrt(sigma2);


ruido=normrnd(0,sigma,1,n_simbolos)+i*normrnd(0,sigma,1,n_simbolos)
;
y=simbolo+ruido;

%receptor
x=[]; %vector en blanco
for m=1:16

x=[x;(abs(y-kron([s(m)],ones(1,n_simbolos)))).^2];

end

[u,z]=min(x);

pe=sum(abs(sign(original-z)))/n_simbolos;
ps=[ps pe];

E=1; %energia media del simbolo
M=16; %representa modulacion QAM =MQAM
pet=4*((sqrt(M)-1)/sqrt(M))*Q(sqrt(3*EsNo/(M-1))); %error del
simbolo

pt=[pt pet];

end

figure (1)
hold on;
semilogy(EsNo_db,pt,'b');
hold on;
semilogy(EsNo_db,ps,'bo');
grid on;
xlabel('E_s/N_0');
ylabel('Problabilidad de error de simbolo 16qam');
legend('Teora QPSK','Simulacin QPSK')
hold on



Para 64QAM la energa media del smbolo es:


Programa en Matlab:
%para 64qam
%transmisor
clear all;
n_simbolos=100000; %simbolos generados
%prob=[];
%for i=1:16
%prob(i)=1/16;
%end
%simbolo=randsrc(1,n_simbolos,[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 ; 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16
1/16 1/16 1/16 1/16]);
%aa=[1:1:16];
%simbolo=randsrc(1,n_simbolos,[aa ; prob]);

simbolo=randsrc(1,n_simbolos,[1:64 ; 1/64 1/64 1/64 1/64 1/64 1/64
1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64
1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64
1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64
1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64 1/64
1/64 1/64 1/64 1/64 1/64 1/64]);


original=simbolo;

[b]=simbolo;
Es=42;

A=sqrt(Es/42);


s1=A+i*A;
s2=3*A+i*A;
s3=5*A+i*A;
s4=7*A+i*A;
s5=A+i*3*A;
s6=3*A+i*3*A;
s7=5*A+i*3*A;
s8=7*A+i*3*A;
s9=A+i*5*A;
s10=3*A+i*5*A;
s11=5*A+i*5*A;
s12=7*A+i*5*A;
s13=A+i*7*A;
s14=3*A+i*7*A;
s15=5*A+i*7*A;
s16=7*A+i*7*A;

s17=-A+i*A;
s18=-3*A+i*A;
s19=-5*A+i*A;
s20=-7*A+i*A;
s21=-A+i*3*A;
s22=-3*A+i*3*A;
s23=-5*A+i*3*A;
s24=-7*A+i*3*A;
s25=-A+i*5*A;
s26=-3*A+i*5*A;
s27=-5*A+i*5*A;
s28=-7*A+i*5*A;
s29=-A+i*7*A;
s30=-3*A+i*7*A;
s31=-5*A+i*7*A;
s32=-7*A+i*7*A;

s33=-A-i*A;
s34=-3*A-i*A;
s35=-5*A-i*A;
s36=-7*A-i*A;
s37=-A-i*3*A;
s38=-3*A-i*3*A;
s39=-5*A-i*3*A;
s40=-7*A-i*3*A;
s41=-A-i*5*A;
s42=-3*A-i*5*A;
s43=-5*A-i*5*A;
s44=-7*A-i*5*A;
s45=-A-i*7*A;
s46=-3*A-i*7*A;
s47=-5*A-i*7*A;
s48=-7*A-i*7*A;

s49=A-i*A;
s50=3*A-i*A;
s51=5*A-i*A;
s52=7*A-i*A;
s53=A-i*3*A;
s54=3*A-i*3*A;
s55=5*A-i*3*A;
s56=7*A-i*3*A;
s57=A-i*5*A;
s58=3*A-i*5*A;
s59=5*A-i*5*A;
s60=7*A-i*5*A;
s61=A-i*7*A;
s62=3*A-i*7*A;
s63=5*A-i*7*A;
s64=7*A-i*7*A;

s=[s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18
s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 s32 s33 s34 s35
s36 s37 s38 s39 s40 s41 s42 s43 s44 s45 s46 s47 s48 s49 s50 s51 s52
s53 s54 s55 s56 s57 s58 s59 s60 s61 s62 s63 s64];

for j=1:64
simbolo(find(b==j))=(s(j)); %encontramos la posicion
end

%canal
ps=[];
pt=[];
EsNo_db=[1:1:50];
for e=EsNo_db
e
EsNo=10^(e/10);
No=Es/EsNo;
sigma2=No/2;
sigma=sqrt(sigma2);


ruido=normrnd(0,sigma,1,n_simbolos)+i*normrnd(0,sigma,1,n_simbolos)
;
y=simbolo+ruido;

%receptor
x=[]; %vector en blanco
for m=1:64

x=[x;(abs(y-kron([s(m)],ones(1,n_simbolos)))).^2];

end

[u,z]=min(x);

pe=sum(abs(sign(original-z)))/n_simbolos;
ps=[ps pe];

E=42; %energia media del simbolo
M=64; %representa modulacion QAM =MQAM
pet=4*((sqrt(M)-1)/sqrt(M))*Q(sqrt(3*EsNo/(M-1))); %error del
simbolo

pt=[pt pet];

end

figure (1)
hold on;
semilogy(EsNo_db,pt,'g');
hold on;
semilogy(EsNo_db,ps,'go');
grid on;
xlabel('E_s/N_0');
ylabel('Problabilidad de error de simbolo 64qam');
legend('Teora QPSK 64qam','Simulacin QPSK 64aqm');
axis([0 30 10^(-5) 1])


Tomando una relacin Seal Ruido que vara entre 1 y 50 se obtienen las siguientes grficas:

Fig. 1. Grficas de la probabilidad de error de smbolo para 4, 16 y 64 qam
En la grfica podemos observar que la probabilidad de error de smbolo para cada modulacin es
diferente, pudiendo rescatar los siguientes aspectos:
En 64 QAM la probabilidad de error de smbolo es mayor que en 16 y 4 QAM, esto se
debe a que como se manejan ms smbolos, implica ms datos, por tanto mayor
probabilidad de error en la transmisin de los datos.
En 4QAM se puede rescatar el hecho de que se puede transmitir a mayor velocidad que en
las otras, mas no con la suficiente precisin que se tendra en otras modulaciones, y
adems se puede observar que se tiene menos error de smbolo por el mismo echo de la
cantidad de informacin manejada.
Si bien las tasas de modulacin de orden superior son capaces de ofrecer velocidades de
datos mucho ms rpidas y mayores niveles de eficiencia espectral para el sistema de
comunicaciones de radio, esto tiene un precio. Los esquemas de modulacin de orden
superior son considerablemente menos resistente a ruidos e interferencias.
Entre mayor es el orden de modulacin ms susceptible es al ruido, por lo tanto, si se
quiere una transmisin con una tasa de errores pequea se requiere una relacin seal a
ruido cada vez ms grande a medida que el orden de modulacin aumenta.

S-ar putea să vă placă și