Você está na página 1de 7

www.matpic.

com
www.youtube.com/diegokillemall

SIMULACIN DE CDIGOS DE LNEA EN MATLAB


Diego Orlando Barragn Guerrero
Loja - Ecuador
diegokillemall@yahoo.com
RESUMEN
El presente artculo tiene como fin
simular algunos cdigos de lnea en Matlab.
Asimismo, programar una interfaz grfica que
genere bits aleatorios para su posterior
codificacin.
INTRODUCCIN
La transmisin de datos en forma
digital implica una cierta codificacin. A la
forma de transmisin donde no se usa una
portadora se la conoce como transmisin en
banda base.
Los cdigos de lnea son usados para
este tipo de transmisin. Existen varios tipos
de cdigos, entre ellos Unipolar NRZ, Polar
NRZ, Unipolar RZ, Bipolar RZ (AMI),
Manchester, CMI, etc. Algunos de estos
cdigos se muestran en la figura 1.

Fig.1. Cdigos de lnea usuales.


Algunas
de
las
caractersticas
deseables de los cdigos de lnea son:
Autosincronizacin:
contenido
suficiente de seal de temporizacin
(reloj) que permita identificar el tiempo
correspondiente a un bit.

Capacidad de deteccin de errores: la


definicin del cdigo incluye el poder de
detectar un error.
Inmunidad al ruido: capacidad de
detectar adecuadamente el valor de la
seal ante la presencia de ruido (baja
probabilidad de error).
Densidad espectral de potencia:
igualacin entre el espectro de frecuencia
de la seal y la respuesta en frecuencia
del canal de transmisin.
Ancho de banda: contenido suficiente
de seal de temporizacin que permita
identificar el tiempo correspondiente a
un bit.
Transparencia: independencia de las
caractersticas del cdigo en relacin a la
secuencia de unos y ceros que transmita.
FUNCIN UNRZ(h)
El cdigo Unipolar sin retorno a cero
representa un 1 lgico (1L) con un nivel de
+V durante todo el periodo de bit y un cero
lgico (0L) con un nivel de 0 V durante todo
el periodo de bit. La funcin siguiente simula
esta codificacin:
function UNRZ(h)
clf;
n=1;
l=length(h);
h(l+1)=1;
while n<=length(h)-1;
t=n-1:0.001:n;
if h(n) == 0
if h(n+1)==0
y=(t>n);
else
y=(t==n);
end
d=plot(t,y);grid on;
title('Line code UNIPOLAR NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
else

13

www.matpic.com
www.youtube.com/diegokillemall
if h(n+1)==0
y=(t<n)-0*(t==n);
else
y=(t<n)+1*(t==n);
end
d=plot(t,y);grid on;
title('Line code UNIPOLAR NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');

end
n=n+1;
%pause;
end

Como ejemplo, ejecutamos lo que


muestra la figura 2:

y=(t==n);
end
d=plot(t,y);grid on
title('Line code UNIPOLAR RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
%Graficacin de los UNOS (1)
else
if h(n+1)==0
y=(t<n-0.5);
else
y=(t<n-0.5)+1*(t==n);
end
d=plot(t,y);grid on;
title('Line code UNIPOLAR RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
end
n=n+1;
%pause;
end
end

Como ejemplo, ejecutamos lo que


muestra la figura 3:

Fig. 2. Funcin UNRZ(h).


FUNCIN URZ(h)
El cdigo Unipolar con retorno a cero
representa un 1 lgico (1L) con un nivel de
+V durante la mitad del periodo de bit y un
cero lgico (0L) con un nivel de 0 V durante
todo el periodo de bit. La funcin siguiente
simula esta codificacin:
function URZ(h)
%Example:
%h=[1 0 0 1 1 0 1 0 1 0];
%URZ(h)
clf;
n=1;
l=length(h);
h(l+1)=1;
while n<=length(h)-1;
t=n-1:0.001:n;
%Graficacin de los CEROS (0)
if h(n) == 0
if h(n+1)==0
y=(t>n);
else

Fig. 3. Funcin URZ(h).


FUNCIN PNRZ(h)
El cdigo Polar sin retorno a cero
representa un 1 lgico (1L) con un nivel de
+V durante todo el periodo de bit y un cero
lgico (0L) con un nivel de - V durante todo
el periodo de bit. La funcin siguiente simula
esta codificacin:
14

www.matpic.com
www.youtube.com/diegokillemall

function PNRZ(h)
%Example:
%h=[1 0 0 1 1 0 1 0 1 0];
%PNRZ(h)
clf;
n=1;
l=length(h);
h(l+1)=1;
while n<=length(h)-1;
t=n-1:0.001:n;
if h(n) == 0
if h(n+1)==0
y=-(t<n)-(t==n);
else
y=-(t<n)+(t==n);
end
d=plot(t,y);grid on;
title('Line code POLAR NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
else
if h(n+1)==0
y=(t<n)-1*(t==n);
else
y=(t<n)+1*(t==n);
end
d=plot(t,y);grid on;
title('Line code POLAR NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
end
n=n+1;
%pause;
End

Como ejemplo, ejecutamos lo que


muestra la figura 4:

El cdigo Bipolar con retorno a cero


representa un 1 lgico (1L) con un nivel de
+V durante la mitad del periodo de bit y un
cero lgico (0L) con un nivel de - V durante
la mitad del periodo de bit. La funcin
siguiente simula esta codificacin:
function BRZ(h)
%Example:
%h=[1 0 0 1 1 0 1 0 1 0];
%BRZ(h)
clf;
n=1;
l=length(h);
h(l+1)=1;
while n<=length(h)-1;
t=n-1:0.001:n;
if h(n) == 0
if h(n+1)==0
y=-(t<n-0.5)-(t==n);
else
y=-(t<n-0.5)+(t==n);
end
d=plot(t,y);grid on;
title('Line code BIPOLAR RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
else
if h(n+1)==0
y=(t<n-0.5)-1*(t==n);
else
y=(t<n-0.5)+1*(t==n);
end
d=plot(t,y);grid on;
title('Line code BIPOLAR RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
end
n=n+1;
%pause;
end

Como ejemplo, ejecutamos lo que


muestra la figura 5:

Fig. 4. Funcin PNRZ(h).


FUNCIN BRZ(h)
15

www.matpic.com
www.youtube.com/diegokillemall
y=-(t<n);
end
else
if ami==1
y=(t<n)-(t==n);
else
y=-(t<n)+(t==n);
end
end
d=plot(t,y);grid on;
title('Line code AMI NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');

Fig. 5. Funcin BRZ(h).

end
n=n+1;
%pause;
end

FUNCIN AMINRZ(h)
El cdigo AMI representa los unos
lgico por medio de valores alternadamente
positivos (+V) y negativos (-V). Un cero
lgico (0L) se representa con un nivel de 0 V.
La funcin siguiente simula esta codificacin:
function AMINRZ(h)
%Example:
%h=[1 0 0 1 1 0 1 0 1 0];
%AMINRZ(h)
clf;
n=1;
l=length(h);
h(l+1)=1;
ami=-1;
while n<=length(h)-1;
t=n-1:0.001:n;
if h(n) == 0
if h(n+1)==0
y=(t>n);
else
if ami==1
y=-(t==n);
else
y=(t==n);
end
end
d=plot(t,y);grid on;
title('Line code AMI NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
else
ami=ami*-1;
if h(n+1)==0
if ami==1
y=(t<n);
else

Como ejemplo, ejecutamos lo que


muestra la figura 6:

Fig. 6. Funcin AMINRZ(h).


FUNCIN AMIRZ(h)
El cdigo AMI con retorno a cero
representa los unos lgico por medio de
valores alternadamente positivos (+V) y
negativos (-V) y un retorno a cero en la mitad
del periodo del bit. Un cero lgico (0L) se
representa con un nivel de 0 V. La funcin
siguiente simula esta codificacin:
function AMIRZ(h)
%Example:
%h=[1 0 0 1 1 0 1 0 1 0];
%AMIRZ(h)
clf;

16

www.matpic.com
www.youtube.com/diegokillemall
n=1;
l=length(h);
h(l+1)=1;
ami=-1;
while n<=length(h)-1;
t=n-1:0.001:n;
if h(n) == 0
if h(n+1)==0
y=(t>n);
else
if ami==1
y=-(t==n);
else
y=(t==n);
end
end
d=plot(t,y);grid on;
title('Line code AMI RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
else
ami=ami*-1;
if h(n+1)==0
if ami==1
y=(t<n-0.5);
else
y=-(t<n-0.5);
end
else
if ami==1
y=(t<n-0.5)-(t==n);
else
y=-(t<n-0.5)+(t==n);
end
end
d=plot(t,y);grid on;
title('Line code AMI RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');

end
n=n+1;
%pause;
end

Como ejemplo, ejecutamos lo que


muestra la figura 7:

Fig. 7. Funcin AMINRZ(h).


FUNCIN MANCHESTER(h)
El cdigo Manchester representa un 1
lgico (1L) con un nivel de +V durante la
mitad del periodo de bit y un nivel de -V
durante la otra mitad. Un cero lgico (0L) se
representa con un nivel de - V durante la
primera mitad del periodo de bit y con +V
durante la segunda mitad. La funcin
siguiente simula esta codificacin:
function MANCHESTER(h)
%Example:
%h=[1 0 0 1 1 0 1 0 1 0];
%MANCHESTER(h)
clf;
n=1;
h=~h;
l=length(h);
h(l+1)=1;
while n<=length(h)-1;
t=n-1:0.001:n;
if h(n) == 0
if h(n+1)==0
y=-(t<n)+2*(t<n0.5)+1*(t==n);
else
y=-(t<n)+2*(t<n-0.5)1*(t==n);
end
d=plot(t,y);grid on;
title('Line code MANCHESTER');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
else
if h(n+1)==0
y=(t<n)-2*(t<n-0.5)+1*(t==n);

17

www.matpic.com
www.youtube.com/diegokillemall
else
y=(t<n)-2*(t<n-0.5)-1*(t==n);
end
d=plot(t,y);grid on;
title('Line code MANCHESTER');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');

Esta interfaz trabaja de dos maneras.


La primera es generando secuencias de bits
aleatorios al presionar el botn Random y la
segunda ingresando el propios usuario los bits
a codificar. En caso de que se ingrese un valor
no binario, el programa informa de ese error,
como lo muestra la figura 10:

end
n=n+1;
%pause;
end

Como ejemplo, ejecutamos lo que


muestra la figura 8:

Fig. 10. Correccin de errores al ingresar un


valor no binario.
Asimismo, la interfaz permite ver el
espectro de algunos cdigos de lnea al
presiona el botn Ver Espectros. Vase la
figura 11:

Fig. 8. Funcin MANCHESTER(h).


INTERFAZ GRFICA DE USUARIO
La figura 9 muestra el entorno de la
interfaz grfica de usuario que simula varios
cdigos de lnea.
Fig. 11. Espectro de cdigos de lnea.
CONCLUSIONES

Fig. 9. Programa line_code.

La simulacin de los diferentes


cdigos de lnea en MATLAB es
relativamente sencilla. Sin embargo,
cabe decir que an es necesario
simular el resto de cdigos.
Los cdigos con retorno a cero poseen
mayor ancho de banda debido al
mayor nmero de transiciones que
presentan.

18

www.matpic.com
www.youtube.com/diegokillemall

REFERENCIAS
COUCH,
L:
Sistemas
de
Comunicacin Anlogos y Digitales.

19

Você também pode gostar