Sie sind auf Seite 1von 6

Bit Error Rate para modulacin QPSK, simulacin en MatLab

Ing. Guillermo Adrin Rodrguez Barragn guillermoarb@hotmail.com

Resumen El presente reporte describe los resultados obtenidos en una simulacin realizada en el software MatLab para conocer la taza de error de bits en una transmicin QPSK sobre un canal en banda base con la adicin de ruido blanco gaussiano en diferentes niveles de potencia de transmisin. Desarrollo La modulacin QPSK es una combinacin de dos modulaciones BPSK una en cuadratura y otra en fase, por lo cual gracias a este esquema de modulacin es posible transmitir dos bits por smbolo, las distribucin de estos bits se aprecia en la siguiente figura:

igual entre smbolos secuenciales, los desplazamientos son de 90 y usualmente encontramos cada smbolo a 45,135,225 y 315. As mismo se cuida que estn distribuidos de forma tal que guarden una codificacin grey, es decir que entre smbolos secuenciales el cambio de bits sea solo de uno. Es posible obtener la seal modulada a partir de la siguiente ecuacin:

2 cos 2 + 2 1 , 4 = 1,2,3,4.

De aqu podemos obtener las cuatro fases necesarias en representacin 1 = 4, 3 4, 4 o su funciones base 5 4, 7

en

2 cos 2

2 =

2 sen 2

Como se puede apreciar los bits estn distribuidos de forma tal que la distancia mnima entre ellas sea mxima e

Gracias a estas ltimas funciones es posible modular directamente con las transmisiones de bits formados por unos y ceros, haciendo corresponder un valor de 1 para los unos y -1 para los ceros.

Para efectos de simulacin se tuvo una transmisin de 10 000 frames por nivel de Eb/No, cada frame formado por 100 bits generados de manera aleatoria. A continuacin se explica cada transmisin por nivel de Eb/No. Se calcula la desviacin estndar para dicho nivel de Eb/No
Sigma_cuadrada= 1/(2*(10^(Eb_No(1,ii)/10))); %Varianza Sigma=sqrt(Sigma_cuadrada);

Noise= (1/sqrt(2))* Sigma * (randn(1,length(Simbolos))+1i* randn(1,length(Simbolos))); y=Simbolos+Noise;

Para terminar el proceso de simulacin se demodulan los smbolos y se contabiliza el nmero de errores por nivel de Eb/No.
BitsDem=QPSK_Dem(y/(1/sqrt(2))); function [Bits]=QPSK_Dem(Simbolos) Bits=zeros(1,2*length(Simbolos)); for kk=1:length(Simbolos) if( real(Simbolos(kk)) >=0 && imag(Simbolos(kk))>=0)%11 Bits(kk*2-1)=1; Bits(kk*2)=1; elseif(real(Simbolos(kk))<0 && imag(Simbolos(kk))>=0)%01 Bits(kk*2-1)=0; Bits(kk*2)=1; elseif(real(Simbolos(kk))<0 && imag(Simbolos(kk))<0)%00 Bits(kk*2-1)=0; Bits(kk*2)=0; elseif(real(Simbolos(kk))>=0 && imag(Simbolos(kk))<0)%10 Bits(kk*2-1)=1; Bits(kk*2)=0; end end BER(1,ii)= Suma/(Realizaciones*Long_frame);

Dado que este valor solo est en funcin del nivel de Eb/No no cambiara durante cada uno de las 10000 transmisiones de los frames. En cada envi de un frame se sigue el siguiente algoritmo: Se generan 100 bits aleatorios:
Bits=rand(1,100)>0.5;

Se hace la modulacin de dichos bits tomando de dos en dos.


Simbolos=QPSK_Mod(Bits); function [Simbolos]=QPSK_Mod(Bits) BitsImpares = BitsPares = Bits(1:2:end); Bits(2:2:end);

Simbolos=zeros(1,2*length(BitsPares))

Los resultados obtenidos se grafican BER vs Eb/No para comparar resultados contra la curva de VER Terica.

Simbolos = sqrt(1/2)*(1i*(2*BitsPares1)+(2*BitsImpares-1));

Ahora se genera el ruido blanco gaussiano con el nivel de desviacin estndar antes obtenido y se suma a los smbolos modulados

Conclusiones En la siguiente figura se muestra la trasmicion de un frame con un nivel de Eb/No=1

Finalmente tenemos la comparacin entre curvas de VER terico y simulado. Las simulaciones son una potente herramienta para conocer el comportamiento de un sistema conocido en ciertos escenarios, para este caso lo que probo es la efectividad de un esquema de modulacin QPSK frente a diversos niveles de potencia de transmicin.

Ilustracin 2Distribucion de Smbolos generados con Eb/No=1

Se puede apreciar que el efecto del ruido en la transmisin es muy grande y los 50 smbolos generados se encuentran muy dispersos. En cambio con un nivel de Eb/No =20 los smbolos se agrupan de manera uniforme segn la constelacin QPSK, esto facilita la demodulacin y se ve reflejado en una transmisin sin errores.

Ilustracin 4Comparacin entre BER Terico y Simulado para trasmisin QPSK

Bibliografa
Harada, H., & Prasad, R. (s.f.). Simulation and software radio for mobile communications. Artech House. Meghdadi, V. (s.f.). http://perso.ensil.unilim.fr/~meghda di/notes/ber_awgn.pdf. Obtenido de BER calculation.

Ilustracin 3Distribucin de smbolos generados con un nivel de Eb/No =20

Programa de simulacin
%Programa para simulacion de modulacion QPSK % %Consideraciones: %Se asume Es=1, y la variacion sera en el nivel de ruido % %(c) Guillermo Adrin Rodrguez Barragn %11/09/12 clc; clear; % Inicializacion de variables Realizaciones=10000; % Por cada nivel de SNR o Eb/No Long_frame=100; % 100 simbolos QPSK por frame Eb_No= 0:1:20; %Niveles de Eb/No BER=zeros(1,21); %21 Pruebas de BER Bits=zeros(1,100); %Vector de Bits a enviar por realizacin ContadorPB=0; %Contador para progres bar

for ii=1:length(Eb_No) %Diferentes niveles de Eb/No Sigma_cuadrada= 1/(2*(10^(Eb_No(1,ii)/10))); Sigma=sqrt(Sigma_cuadrada); Suma=0; for jj=1:Realizaciones %Generacion de bits Bits=rand(1,100)>0.5; aleatorios %Varianza

%Variable de suma de errores

%Generacion de 100 Bits

%Modulacion Simbolos=QPSK_Mod(Bits);%Generacion de simbolos en QPSK %Ruido Complejo Noise= (1/sqrt(2))* Sigma * (randn(1,length(Simbolos))+1i* randn(1,length(Simbolos))); %Adicion de Ruido Gausiano y=Simbolos+Noise; %Demodular BitsDem=QPSK_Dem(y/(1/sqrt(2))); %Obtencion de bits con normalizacion de energia Es=1 %Deteccion de errores No_bits_erroneos=sum(abs(BitsDem-Bits)); Suma=Suma+No_bits_erroneos; %Acumulacion de errores de transmicin ContadorPB=ContadorPB+1; progressbar(ContadorPB/(Realizaciones*length(Eb_No)),1); end %Grafico de constelacion por nivel de Eb/No figure(2);

scatter(real(y),imag(y)) xlabel('Real'); ylabel('Imaginario'); BER(1,ii)=Suma/(Realizaciones*Long_frame); end

% Calculo del BER de manera teorica BER_Teorico=0.5*erfc(sqrt(10.^(Eb_No/10))); % Graficar el resultado, Eb/No vs BER figure(3); semilogy(Eb_No,BER,'r-d',Eb_No,BER_Teorico,'b--o'); axis([0 10 10^-5 0.5]); xlabel('Eb/No [dBs]'); ylabel('BER'); legend('BER Simulado','BER Teorico','Location', 'NorthWest');

Funcin para Modulacin


function [Simbolos]=QPSK_Mod(Bits) %Funcion que recive un conjunto de bits y los modula en simbolos QPSK %(c) Guillermo Adrin Rodrguez Barragn BitsImpares = BitsPares = Bits(1:2:end); Bits(2:2:end);

Simbolos=zeros(1,2*length(BitsPares)); Simbolos = sqrt(1/2)*(1i*(2*BitsPares-1)+(2*BitsImpares-1));

Funcin para Demodulacin

function [Bits]=QPSK_Dem(Simbolos) %Funcion que recive simbolos en QPSK y regresa un conjunto de bits %(c) Guillermo Adrin Rodrguez Barragn Bits=zeros(1,2*length(Simbolos));

for kk=1:length(Simbolos) if( real(Simbolos(kk)) >=0 && imag(Simbolos(kk))>=0)%11 Bits(kk*2-1)=1; Bits(kk*2)=1; elseif(real(Simbolos(kk))<0 && imag(Simbolos(kk))>=0)%01 Bits(kk*2-1)=0; Bits(kk*2)=1; elseif(real(Simbolos(kk))<0 && imag(Simbolos(kk))<0)%00 Bits(kk*2-1)=0; Bits(kk*2)=0; elseif(real(Simbolos(kk))>=0 && imag(Simbolos(kk))<0)%10 Bits(kk*2-1)=1; Bits(kk*2)=0; end

end

Das könnte Ihnen auch gefallen