Anda di halaman 1dari 9

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
LABORATORIO DE SISTEMAS DE COMUNICACIONES

Laboratorio de Sistemas
de Comunicaciones
Experiencia Tasa de Error Binaria

Luis Vinnett Peralta


24/10/2010

Laboratorio de Sistemas de Comunicaciones 2010

Tabla de contenido
Nota respecto a la Ejecucin de esta Plantilla.....................................................................3
Transformada de Fourier Discreta.......................................................................................4
Autocovarianza....................................................................................................................7

Laboratorio de Sistemas de Comunicaciones 2010

Nota respecto a la Ejecucin de esta Plantilla


Al abrir esta plantilla se debe abrir Matlab, en caso contrario, significa que est mal
direccionada la plantilla base (M-BOOK.dot). Para solucionar esto se debe ir a
Herramientas, luego a plantillas y finalmente modificar la ruta para acceder a MBOOK.dot. Tpicamente el directorio base es matlab_dir\\notebook\pc, donde matlab_dir
corresponde al directorio en el cual se encuentra instalado Matlab. Por ejemplo:
C:\Archivos de programa\MATLAB\R2010\notebook\pc\M-BOOK.dot
Tras modificar esta ruta, se debe reiniciar Word para que se almacenen los cambios. Es
probable que aparezca una ventana de error al realizarse la comunicacin con Matlab.
Seleccionar Finalizar.
Luego, se puede ejecutar esta plantilla aplicando Ctrl+Enter dentro de cada sentencia
(entre corchetes). Alt+p permite borrar los resultados y Alt+r permite ejecutar todo el
documento.
Los comandos ac presentados deben ser ejecutados en orden de manera que no se
produzcan errores.

Laboratorio de Sistemas de Comunicaciones 2010

Transformada de Fourier Discreta


El mdulo de la Tranformada de Fourier de una funcin o seal es lo que conocemos
como espectro y es lo que usualmente es medido en un laboratorio mediante un
analizador de espectros.
Supongamos que queremos conocer el espectro de una seal cuadrada de corta duracin.
Esto puede realizarse en Matlab mediate la Toolbox de Matemtica Simblica:
clear all
close all
syms t k
y

= symsum((-1)^k*heaviside(t k + 1/2), k, -10, 11);

Py = int(abs(y)^2, t, -inf, inf);


figure(1)
ezplot(y, [-20 20])
hold on

Ahora obtengamos el espectro de esta seal:


Yf = fourier(y);
figure(2)
ezplot(20*log10(abs(Yf)), [-10 10])
hold on

Calculemos ahora la Transformada de Fourier discreta de un conjunto de muestras de esta


seal.
Fs = 5;
% tasa de muestreo
tS = -20:1/Fs:20;
yS = subs(y, t, tS);
figure(1)
plot(tS, yS, 'ro')

Para esto aplicaremos el comando fft de Matlab.


N
= length(yS);
freq = linspace(-Fs/2, Fs/2, N);
YF
= fftshift(fft(yS));
YF
= YF*sqrt(Py/trapz(freq, abs(YF).^2));
figure(2)
plot(2*pi*freq, 20*log10(abs(YF)), 'ro');

Por qu los dos resultados anteriores no son idnticos en las frecuencias evaluadas en el
caso discreto (datos en rojo)? Dnde se us el Teorema de Parseval en la programacin

Laboratorio de Sistemas de Comunicaciones 2010


anterior? Cmo se define el rango de frecuencias al aplicar fft? Prepare estas preguntas
ya que ser consultado al respecto en la experiencia de laboratorio.

Laboratorio de Sistemas de Comunicaciones 2010

Generacin de Seales Pseudoaleatorias


En Matlab es posible generar secuencias Pseudoaleatorias a partir de la Toolbox de
Identificacin de Sistemas. Especficamente se puede utilizar el comando idinput.
clear all
close all
N = 5; % N de estados
L = 2^N 1;
u = idinput(L, 'prbs', [], [0 1]);
stem(u)

Una de las propiedades de estas seales es que su funcin de autocorrelacin tiende a (k)
(Funcin Delta de Kronecker), en la medida que el nmero de estados tiende a infinito.
Calculemos la funcin de autocorrelacin:
autocorr(u)

Consideremos ahora la funcin de autocorrelacin de una secuencia generada a partir de


un registro de 15 bits.
clear all
close all
N = 15; % N de estados
L = 2^N 1;
u = idinput(L, 'prbs', [], [0 1]);
autocorr(u)

De donde se observa que la PRBS tiene un comportamiento similar al ruido blanco.


NOTA: La PRBS empleada en esta experiencia no es igual a la entregada por Matlab
mediante la funcin idinput.
A continuacin se muestra una implementacin digital de una PRBS generada a partir de
un registro de 15 estados con semilla '1'.
close all
clear all
R = 15;
L = 2^R - 1;
out = zeros(L, 1);
conn
shift_reg

= [1 1 zeros(1, 13)];
= [1 zeros(1, 14)];

Laboratorio de Sistemas de Comunicaciones 2010


for i = 1:L
tmp
out(i, 1)
shift_reg
end

= rem(shift_reg*conn', 2);
= tmp;
= [shift_reg(2:R), tmp];

subplot(2, 1, 1)
stem(out(1:50));
subplot(2,1,2)
autocorr(out)

Nota: Modifique el cdigo anterior para obtener la PRBS que necesitar en la


experiencia.

Laboratorio de Sistemas de Comunicaciones 2010

Codificacin Convolucional
Las siguientes lneas permiten obtener la codificacin convolucional de una trama.
close all
X = out;
clear out
L = 8;
SR = L - 1;
X = [X(:); zeros(L, 1)];
N = length(X);
state = zeros(L, 1);
con1 = [0 1 1 1 0 0 0 1]; % G0 = 561
con2 = [1 1 1 0 1 0 1 1]; % G1 = 753
out = zeros(N, 1);
cnt = 1;
for i = 1:N
out(cnt,1) = rem(con1*state + X(i), 2);
cnt = cnt + 1;
out(cnt, 1) = rem(con2*state + X(i), 2);
cnt = cnt + 1;
state = [X(i); state(1:SR)];
end
'Listo'

Se pueden comparar este resultado con el obtenido a partir de la funcin convenc de


Matlab.
t = poly2trellis(9, [561 753]);
out2 = convenc(X, t);
v = isequal(out, out2);
if v==1
fprintf('Datos Codificados Son Iguales\n');
else
fprintf('Datos Codificados No Son Iguales\n');
end

Comparemos los espectros de la seal PRBS y de la seal codificada. Para ello,


consideremos que el adquisidor de datos almacenar 5 muestra por dato codificado (i.e.
10 datos por bit no codificado). Entonces considerando una tasa de muestreo arbitraria de
10MSa/s se tiene

Laboratorio de Sistemas de Comunicaciones 2010

close all
for i=1:5
Y(i:5:5*length(out2)) = out2;
end
Y = 2*(Y mean(Y));
Fs
= 2e6;
N
= length(Y);
freq = linspace(-Fs/2, Fs/2, N);
YF
= fftshift(fft(Y));
YF
= YF/sqrt(trapz(freq, abs(YF).^2));
figure
plot(2*pi*freq, 20*log10(abs(YF)), 'ro');
axis([-4e6 4e6 -80 -40])
hold on
for i=1:10
Z(i:10:10*length(X)) = X;
end
Z
= 2*(Z mean(Z));
N
= length(Z);
freq = linspace(-Fs/2, Fs/2, N);
ZF
= fftshift(fft(Z));
ZF
= ZF/sqrt(trapz(freq, abs(ZF).^2));
plot(2*pi*freq, 20*log10(abs(ZF)), 'b+');
legend('Datos Codificados', 'Seal Original')
hold off

Qu puede decir de los anchos de banda de cada una de las seales? Cmo afecta este
resultado a la relacin seal a ruido? Tiene esto algn impacto en la tasa de error
binaria?

Anda mungkin juga menyukai