bit error rate para modulación qpsk, guillermo arb.pdf
Post on 08-Aug-2015
143 Views
Preview:
TRANSCRIPT
Bit Error Rate para modulación QPSK, simulación en MatLab
Ing. Guillermo Adrián Rodríguez Barragán
guillermoarb@hotmail.com
Resumen
El presente reporte describe los
resultados obtenidos en una simulación
realizada en el software MatLab para
conocer la taza de error de bits en una
transmición QPSK sobre un canal en banda
base con la adición de ruido blanco
gaussiano en diferentes niveles de potencia
de transmisión.
Desarrollo
La modulación QPSK es una
combinación de dos modulaciones BPSK una
en cuadratura y otra en fase, por lo cual
gracias a este esquema de modulación es
posible transmitir dos bits por símbolo, las
distribución de estos bits se aprecia en la
siguiente figura:
Como se puede apreciar los bits
están distribuidos de forma tal que la
distancia mínima entre ellas sea máxima e
igual entre símbolos secuenciales, los
desplazamientos son de 90° y usualmente
encontramos cada símbolo a 45°,135°,225° y
315°. Así mismo se cuida que estén
distribuidos de forma tal que guarden una
codificación grey, es decir que entre
símbolos secuenciales el cambio de bits sea
solo de uno.
Es posible obtener la señal modulada
a partir de la siguiente ecuación:
De aquí podemos obtener las cuatro fases
necesarias en o su
representación en funciones base
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.
𝜋4 , 3𝜋 4 , 5𝜋 4 , 7𝜋 4
𝜙 1 𝑡 =
2
𝑇𝑠cos 2𝜋 𝑓𝑐 𝑡
𝜙 2 𝑡 =
2
𝑇𝑠sen 2𝜋 𝑓𝑐 𝑡
𝑆𝑛 𝑡 = 2𝐸𝑠𝑇𝑠
cos 2𝜋 𝑓𝑐 𝑡 + 2𝑛 − 1 𝜋
4 ,
𝑛 = 1,2,3,4.
Para efectos de simulación se tuvo
una transmisión de 10 000 frames por nivel
de Eb/No, cada frame formado por 100 bits
generados de manera aleatoria. A
continuación se explica cada transmisión por
nivel de Eb/No.
Se calcula la desviación estándar
para dicho nivel de Eb/No
Sigma_cuadrada=
1/(2*(10^(Eb_No(1,ii)/10)));
%Varianza Sigma=sqrt(Sigma_cuadrada);
Dado que este valor solo está en función 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 modulación de dichos bits tomando de dos en dos.
Simbolos=QPSK_Mod(Bits);
function
[Simbolos]=QPSK_Mod(Bits)
BitsImpares = Bits(1:2:end); BitsPares = Bits(2:2:end);
Simbolos=zeros(1,2*length(BitsPares))
Simbolos =
sqrt(1/2)*(1i*(2*BitsPares-
1)+(2*BitsImpares-1));
Ahora se genera el ruido blanco gaussiano con el nivel de desviación estándar antes obtenido y se suma a los símbolos modulados
Noise= (1/sqrt(2))* Sigma *
(randn(1,length(Simbolos))+1i*
randn(1,length(Simbolos))); y=Simbolos+Noise;
Para terminar el proceso de simulación se demodulan los símbolos y se contabiliza el número 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);
Los resultados obtenidos se grafican BER vs Eb/No para comparar resultados contra la curva de VER Teórica.
Conclusiones En la siguiente figura se muestra la trasmicion de un frame con un nivel de Eb/No=1
Se puede apreciar que el efecto del
ruido en la transmisión es muy grande y los
50 símbolos generados se encuentran muy
dispersos.
En cambio con un nivel de Eb/No =20
los símbolos se agrupan de manera uniforme
según la constelación QPSK, esto facilita la
demodulación y se ve reflejado en una
transmisión sin errores.
Finalmente tenemos la comparación entre
curvas de VER teórico 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
modulación QPSK frente a diversos niveles
de potencia de transmición.
Bibliografía 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.
Ilustración 2Distribucion de Símbolos generados con Eb/No=1
Ilustración 3Distribución de símbolos generados con un nivel de Eb/No =20
Ilustración 4Comparación entre BER Teórico y Simulado para trasmisión QPSK
Programa de simulación
%Programa para simulacion de modulacion QPSK % %Consideraciones: %Se asume Es=1, y la variacion sera en el nivel de ruido % %(c) Guillermo Adrián Rodríguez Barragán %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 realización
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))); %Varianza Sigma=sqrt(Sigma_cuadrada);
Suma=0; %Variable de suma de errores for jj=1:Realizaciones
%Generacion de bits Bits=rand(1,100)>0.5; %Generacion de 100 Bits
aleatorios
%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
transmición
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');
Función para Modulación
function [Simbolos]=QPSK_Mod(Bits) %Funcion que recive un conjunto de bits y los modula en simbolos QPSK %(c) Guillermo Adrián Rodríguez Barragán
BitsImpares = Bits(1:2:end); BitsPares = Bits(2:2:end);
Simbolos=zeros(1,2*length(BitsPares));
Simbolos = sqrt(1/2)*(1i*(2*BitsPares-1)+(2*BitsImpares-1));
Función para Demodulación
function [Bits]=QPSK_Dem(Simbolos) %Funcion que recive simbolos en QPSK y regresa un conjunto de bits %(c) Guillermo Adrián Rodríguez Barragán
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
top related