Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Desarrollo
Sistema básico de comunicaciones digitales usando BPSK Como preparación para realizar el
sistema 16-QAM usted debe realizar un sistema básico BPSK con ruido gaussiano blanco (AWGN),
como se muestra en la Figura 1. Para esto, debe considerar el siguiente procedimiento:
1. Genere por lo menos 1000 datos (binarios) aleatorios. Puede emplear la función randi de
Matlab o la función randint de Octave.
2. Module en BPSK. Transforme los datos binarios a cadenas de −1s y 1s. No emplee
funciones propias de Matlab u Octave para este paso.
Fig. 2 Conversión de datos Modulación en BPSK
3. Grafique los 50 primeros símbolos luego de modular. Puede emplear la función stem.
5. Adicione ruido gaussiano blanco a la señal modulada considerando relación señal a ruido
igual a: SNR = 5, 10, 15 y 20. En esta ocasión no emplee funciones de matlab u octave para
el efecto. Describa el método empleado para generarlo.
Para agregar ruido se utilizo la potencia de señal en banda base para luego calcular la
varianza de ruido, en dicha varianza se establece la diferencia entre la potencia de la señal
y el nivel de señal a ruido.
6. Grafique el diagrama de constelación, luego de agregar el ruido, para cada uno de los
valores establecidos de SNR.
Fig. 6 Diagrama de constelación con ruido para valores de SNR=5, 10, 15, 20 dB
9. Calcule el BER para los cuatro casos propuestos en relación al valor del SNR.
SNR BER Bits
(dB) errados
0 0.1610 161
5 0.0020 2
10 0 0
15 0 0
20 0 0
Tabla 1. BER para valores de SNR: 0, 5, 10, 15, 20 dB
En la realización de la práctica se puede apreciar el sistema BPSK es un sistema confiable, pues como se
observa en la Tabla 1., el BER es prácticamente 0 a partir de valores de SNR igual a 10 dB, el valor mayor
de bits errados está dado cuando el nivel de potencia de la señal es igual al nivel del SNR o sea en 0dB;
es decir en un sistema BPSK mientras mayor es el nivel de SNR menor será el nivel de ruido en la
transmisión (Ver Figura 6).
2. Convierta la cadena de bits a símbolos. Para esto, puede usar la función bi2de en Matlab u
Octave.
3. Module los símbolos usando 16-QAM rectangular. Puede emplear la función qammod
para realizarlo.
Fig. 10 Modulación función Modulator
En este sistema se requiere una relación señal a ruido igual o superior a 20 para que el BER sea
igual a cero, esto se debe a que en este se transmiten más bits por símbolo, en este caso de
16QAM 4 bits por símbolo.
10. Grafique una curva de desempeño para el sistema relacionando el BER y E b /No. Emplee
valores de Eb /No entre 0 y 16 dB y la cantidad de símbolos necesaria para obtener curvas
de desempeño precisas para probabilidad de error de 10 -3 (voz) y 10-6 (datos).
M = 1; % BPSK
K = 1000; % Datos binarios
% Pregunta 3
stem(s(1:50,1)); title('50 primeros símbolos')
axis([-Inf Inf -2 2])
grid on
% Pregunta 4
scatterplot(s,1,0,'r*')
title('Diagrama de constelación');
axis ([-1.5 1.5 -1.5 1.5]);
grid on
% Pregunta 5 y 6
% SNR in dB
SNRdB = 10; %se dar valor SNR de 5 a 20 conforme lo solicitado
SNR = 10.^(SNRdB/10);
noise = N0*complex(randn(size(s)),randn(size(s)));
% Pregunta 6
% SNR in dB
SNRdB = 5;
SNR = 10.^(SNRdB/10);
noise = N0*complex(randn(size(s)),randn(size(s)));
% SNR in dB
SNRdB = 10;
SNR = 10.^(SNRdB/10);
noise = N0*complex(randn(size(s)),randn(size(s)));
% SNR in dB
SNRdB = 15;
SNR = 10.^(SNRdB/10);
noise = N0*complex(randn(size(s)),randn(size(s)));
% SNR in dB
SNRdB = 20;
SNR = 10.^(SNRdB/10);
noise = N0*complex(randn(size(s)),randn(size(s)));
% Pregunta 7
r = zeros(K,1);
for i = 1:K
if y(i,1) > 0
r(i,1) = 1;
else
r(i,1) = 0;
end
end
% Pregunta 8
stem(rs(1:50,1)); title('50 primeros símbolos recibidos')
axis([-Inf Inf -2 2])
grid on
% Pregunta 9
% Bit error rate
numBits = length(inputBits);
nErrors = biterr(inputBits,r);
close all
clear all
clc
M = 16; % 16-QAM
% Pregunta 4
scatterplot(qam, log2(M))
title('Diagrama de constelación');
grid on
% Pregunta 5
SNRdB = 10;
SNR = 10.^(SNRdB/10);
rx = AWGNChannel(qam, N0);
sPlotFig1 = scatterplot(rx,1,0,'b.');
hold on
scatterplot(qam,1,0,'r*',sPlotFig1);
grid on;
SNRdB = 10;
SNR = 10.^(SNRdB/10);
sPlotFig1 = scatterplot(rx10,1,0,'b.');
hold on
scatterplot(qam,1,0,'r*',sPlotFig1);
grid on;
SNRdB = 15;
SNR = 10.^(SNRdB/10);
sPlotFig1 = scatterplot(rx15,1,0,'b.');
hold on
scatterplot(qam,1,0,'r*',sPlotFig1);
grid on;
SNRdB = 10;
SNR = 10.^(SNRdB/10);
sPlotFig1 = scatterplot(rx10,1,0,'b.');
hold on
scatterplot(qam,1,0,'r*',sPlotFig1);
grid on;
% Pregunta 6 & 8
yd = DemodulatorHard(rx, M);
N0dB = 0:23;
N0 = db2pow(-N0dB);
ber = zeros(size(N0));
for i = 1:size(N0,2)
rx = AWGNChannel(qam, N0(1,i));
yd = DemodulatorHard(rx, M);
% Pregunta 9
% Bit error rate
numBits = length(inputBits);
nErrors = biterr(inputBits,yd);
end
figure
semilogy(EbNoVec,berTheory)
hold on
plot(1:length(ber), ber, 'r-*');
hold on
set(gca, 'YScale', 'log')
legend('Teorico','Simulado')
ylabel('BER');
xlabel('E_b/N_0 (dBm)');
grid on