Está en la página 1de 6

AGUIRRE ZUÑIGA GEAN ARTURO

CURVAS SEÑAL A RUIDO (SNR vs BER)

En esta experiencia se evaluará experimentalmente la tasa de error binaria (BER) de un


esquema de transmisión digital simplificado, transmitiendo señales binarias en banda base
(NRZ) sin y con codificación (convolucional), y contaminadas con ruido Gaussiano blanco. Los
objetivos generales de esta experiencia son conocer las técnicas de medición de ruido,
generación de secuencias pseudoaleatorias, conteo de errores de forma experimental y por
simulación de un esquema básico de transmisión digital, como el experimentado en este caso.
Los objetivos específicos son obtener las curvas de BER versus la relación de potencias de señal
y ruido (SNR), evaluar la ganancia de codificación, y comparar con la curva de BER teórica para
el caso sin codificación.

Esta curvase representa generalmente en un gráfico de dos dimensiones, la ordenada es la


relación señal-ruido (SNR) expresada como Eb / N0: la energía por bit dividida por la densidad
de potencia de un solo lado espectral del ruido, expresado en decibelios (dB). La abscisa es la
tasa de bit error, generalmente se expresa en potencias de diez. Para crear un gráfico BER vs
SNR, se trazan una serie de puntos. Cada uno de estos puntos ejecuta una simulación en un
valor de SNR. A continuación se muestran las curvas BER vs SNR para los formatos de
modulación: PSK, QPSK, 8PSK, 16QAM,64QAM y una comparativa entre los formatos de
modulación PSK y QAM utilizando la herramienta Bertool incluida en Matlab.
AGUIRRE ZUÑIGA GEAN ARTURO

PROGRAMACIÓN EN MATLAB
A continuación, se muestran los formatos de modulación PSK, QPSK, 8PSK, 16QAM Y64QAM
con sus respectivas curvas BER vs Eb/No empleando las funciones deprogramación de Matlab

Formato de Modulación PSK


M=4;//

x = randi([0 M-1],5000,1); % Random symbols

%x = randint(100, 1, 2); % genera una entrada de bits

snr= [4:20];

num_bits=100000;

hMod = modem.pskmod(4); % crea un objeto con sus propiedades por defecto.

hDemod = modem.pskdemod(hMod);

% Create a scatter plot and show constellation

scatterPlot = commscope.ScatterPlot('SamplesPerSymbol',1,...

'Constellation',hMod.Constellation);

scatterPlot.PlotSettings.Constellation = 'on';

y = modulate(hMod, x); % modulación de X

for j= 1:length(snr)

ynoisy = awgn(y,snr

(j),'measured'); % Transmit signal through an AWGN

channel.

% Create scatter plot from noisy data.


update(scatterPlot,ynoisy);

z=demodulate(hDemod,ynoisy);% Demodulate ynoisy to recover the message.

[num,ratio] = symerr(x,z)% Check symbol error rate.

ber=num/num_bits;

Ber(j)=ber;

End

%hold on;

semilogy(snr,Ber,'b*-');

legend('Curva Ber vs SNR');

title('Empirical Error Rates QPSK');

%hold off;
AGUIRRE ZUÑIGA GEAN ARTURO

Formato de Modulación QPSK


M=4;
x = randi([0 M-1],5000,1);
% Random symbols
%x = randint(100, 1, 2);
% genera una entrada de bits
snr= [4:20];
num_bits=100000;
hMod = modem.pskmod(4);
% crea un objeto con sus propiedades por defecto.
hDemod = modem.
pskdemod(hMod);
% Create a scatter plot and show constellation
scatterPlot = commscope.
ScatterPlot('SamplesPerSymbol',1,...
'Constellation',
hMod.Constellation);
scatterPlot.PlotSettings.Constellation = 'on';
y = modulate(hMod, x);
% modulación de X
for
j= 1:
length(snr)ynoisy = awgn(y,snr(j),
'measured');
% Transmit signal through an AWGN channel.
% Create scatter plot from noisy data.update(scatterPlot,ynoisy);
z=demodulate(hDemod,ynoisy);
% Demodulate ynoisy to recover the message.
[num,ratio] = symerr(x,z)
% Check symbol error rate.
ber=num/num_bits;
Ber(j)=ber;
End
AGUIRRE ZUÑIGA GEAN ARTURO

%hold on;
semilogy(snr,Ber,'b*-');
legend('Curva Ber vs SNR');
title('Empirical Error Rates QPSK');
%hold off;

Formato de Modulación 8PSK


M=8
;x = randi([0 M-1],5000,1); % Random symbols%
x = randint(100, 1, 2); % genera una entrada de bits
snr= [4:20];
num_bits=100000;
hMod = modem.pskmod(8); % crea un objeto con sus propiedades por defecto.
% crea un objeto con sus propiedades por defecto.
hDemod = modem.
pskdemod(hMod);
% Create a scatter plot and show constellation
scatterPlot = commscope.
ScatterPlot('SamplesPerSymbol',1,...
'Constellation',
hMod.Constellation);
scatterPlot.PlotSettings.Constellation = 'on';
y = modulate(hMod, x);
% modulación de X
for
j= 1:
length(snr)ynoisy = awgn(y,snr(j),
'measured');
% Transmit signal through an AWGN channel.
% Create scatter plot from noisy data.update(scatterPlot,ynoisy);
z=demodulate(hDemod,ynoisy);
% Demodulate ynoisy to recover the message.
[num,ratio] = symerr(x,z)
AGUIRRE ZUÑIGA GEAN ARTURO

% Check symbol error rate.


ber=num/num_bits;
Ber(j)=ber;
End
%hold on;
semilogy(snr,Ber,'b*-');
legend('Curva Ber vs SNR');
title('Empirical Error Rates 8PSK');
%hold off;

Formato de Modulación 12PSK

clear all
clc
r=randint(1,10000);
for i=1:10000
if r(i)==0
s(i)=-1;
else
s(i)=1;
end
end
k=1;
for snrdb=1:1:10;
v=1/(10^(snrdb/10));
x=awgn(s,snrdb,'measured');
%n1=sqrt(v/2)*randn(1,10000);
AGUIRRE ZUÑIGA GEAN ARTURO

%n2=sqrt(1/2)*randn(1,10000);
%n=sqrt(n1.*n1+n2.*n2);
y=x;
for j=1:10000
if y(j)>0
z(j)=1;
else
z(j)=0;
end
end
error=length(find(z~=r));
ber(k)=error/10000;
k=k+1;
end
snrdb=1:1:10;
snrlin=10.^(snrdb./10);
tber=0.5.*erfc(sqrt(snrlin));
semilogy(snrdb,ber,'-bo',snrdb,tber,'-mh')
grid on
title('BPSK with AWGN');
xlabel('Signal to noise ratio');
ylabel('Bit error rate');

También podría gustarte