Está en la página 1de 18

“SIMULACIÓN DE CÓDIGOS DE LÍNEA”

1) . Competencias
Objetivo general
Comprender las características y funcionamiento de la codificación en línea para los sistemas de transmisión de
datos.

Objetivos específicos
 Validar el comportamiento de la CODIFICACION Unipolar NRZ
 Validar el comportamiento de la CODIFICACION Polar NRZ
 Validar el comportamiento de la CODIFICACION BiPolar RZ
 Validar el comportamiento de la CODIFICACION AMI
 Validar el comportamiento de la CODIFICACION Manchester

Material y/o equipos utilizados

 Computadora

 Matlab

2) Fundamento teórico
Introducción
La transmisión de datos en forma digital implica una cierta codificación. A la forma de transmisión donde no se
usa una portadora se la conoce como transmisión en banda base.
Los códigos de línea son usados para este tipo de transmisión. Existen varios tipos de códigos, entre ellos
Unipolar NRZ, Polar NRZ, Unipolar RZ, Bipolar RZ (AMI), Manchester, y otros. Algunos de estos códigos se
muestran en la figura 1
Fig.1. Códigos de línea usuales.

Algunas de las características deseables de los códigos de línea son:


 Autosincronización: contenido suficiente de señal de temporización (reloj) que permita identificar el tiempo
correspondiente a un bit.
 Capacidad de detección de errores: la definición del código incluye el poder de detectar un error.
 Inmunidad al ruido: capacidad de detectar adecuadamente el valor de la señal ante la presencia de ruido
(baja probabilidad de error).
 Densidad espectral de potencia: igualación entre el espectro de frecuencia de la señal y la respuesta en
frecuencia del canal de transmisión.
 Ancho de banda: contenido suficiente de señal de temporización que permita identificar el tiempo
correspondiente a un bit.
 Transparencia: independencia de las características del código en relación a la secuencia de unos y ceros que
transmita.

FUNCIÓN UNRZ(h)
El código Unipolar sin retorno a cero representa un 1 lógico (1L) con un nivel de +V durante todo el periodo de
bit y un cero lógico (0L) con un nivel de 0 V durante todo el periodo de bit.

FUNCIÓN URZ(h)
El código Unipolar con retorno a cero representa un 1 lógico (1L) con un nivel de +V durante la mitad del periodo
de bit y un cero lógico (0L) con un nivel de 0 V durante todo el periodo de bit.

FUNCIÓN PNRZ(h)
El código Polar sin retorno a cero representa un 1 lógico (1L) con un nivel de +V durante todo el periodo de bit y
un cero lógico (0L) con un nivel de - V durante todo el periodo de bit.

FUNCIÓN BRZ(h)
El código Bipolar con retorno a cero representa un 1 lógico (1L) con un nivel de +V durante la mitad del periodo
de bit y un cero lógico (0L) con un nivel de - V durante la mitad del periodo de bit.
FUNCIÓN AMINRZ(h)
El código AMI representa los unos lógico por medio de valores alternadamente positivos (+V) y negativos (-V).
Un cero lógico (0L) se representa con un nivel de 0 V.

FUNCIÓN AMIRZ(h)
El código AMI con retorno a cero representa los unos lógico por medio de valores alternadamente positivos (+V)
y negativos (-V) y un retorno a cero en la mitad del periodo del bit. Un cero lógico (0L) se representa con un nivel
de 0 V.

FUNCIÓN MANCHESTER(h)
El código Manchester representa un 1 lógico (1L) con un nivel de +V durante la mitad del periodo de bit y un
nivel de -V durante la otra mitad. Un cero lógico (0L) se representa con un nivel de - V durante la primera mitad
del periodo de bit y con +V durante la segunda mitad.

3) Procedimiento

4.1. Realizar la simulación y verificar la codificación en línea Unipolar NRZ para los siguientes datos:

a) D = 1010110011
b) D = 0100001111
c) D = 1000010011
Analizando y realizando los cambios pertinentes para obtener lo solicitado en el punto 4.1:

Código proporcionado por nuestro docente:


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
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

Lo proporcionado es una función, por lo que la debemos crear como tal, una vez creada la función, procedemos a
colocar lo siguiente en la ventana de comando:

>> h=[1 1 0 0 1 0 1 1 0 1];


>> UNRZ(h)

Gráfica:
Modificaciones pertinentes, colocamos lo siguiente:

a) D = 1010110011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> UNRZ(h)
Gráfica:

b) D = 0100001111
>> h=[1 0 1 0 1 1 0 0 1 1];
>> UNRZ(h)
Gráfica:
c) D = 1000010011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> UNRZ(h)
Gráfica:

4.2. Trabajar el paso 4.1 para la codificación: Polar NRZ

a) D = 1010110011
b) D = 0100001111
c) D = 1000010011

Analizado y realizando los cambios pertinentes para obtener lo solicitado en el punto 4.2:

Código proporcionado por nuestro docente:


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
Modificaciones pertinentes, colocamos lo siguiente:

a) D = 1010110011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> PNRZ(h)
Gráfica:

b) D = 0100001111
>> h=[1 0 1 0 1 1 0 0 1 1];
>> PNRZ(h)
Gráfica:
c) D = 1000010011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> PNRZ(h)
Gráfica:
4.3. Trabajar el paso 4.1 para la codificación: BiPolar NRZ

a) D = 1010110011
b) D = 0100001111
c) D = 1000010011

Analizado y realizando los cambios pertinentes para obtener lo solicitado en el punto 4.3:

Código proporcionado por nuestro docente:


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
Modificaciones pertinentes, colocamos lo siguiente:

a) D = 1010110011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> BRZ(h)
Gráfica:

b) D = 0100001111
>> h=[1 0 1 0 1 1 0 0 1 1];
>> BRZ(h)
Gráfica:
c) D = 1000010011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> BRZ(h)

Gráfica:
4.4. Trabajar el paso 4.1 para la codificación: AMI

a) D = 1010110011
b) D = 0100001111
c) D = 1000010011

Analizado y realizando los cambios pertinentes para obtener lo solicitado en el punto 4.2:

Código proporcionado por nuestro docente:


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
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');
end
n=n+1;
%pause;
end

Modificaciones pertinentes, colocamos lo siguiente:

a) D = 1010110011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> AMINRZ(h)
Gráfica:
b) D = 0100001111
>> h=[1 0 1 0 1 1 0 0 1 1];
>> AMINRZ(h)
Gráfica:

c) D = 1000010011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> AMINRZ(h)
Gráfica:
4.5. Trabajar el paso 4.1 para la codificación: Manchester

d) D = 1010110011
e) D = 0100001111
f) D = 1000010011

Analizado y realizando los cambios pertinentes para obtener lo solicitado en el punto 4.2:

Código proporcionado por nuestro docente:


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<n-0.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);
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');
end
n=n+1;
%pause;
end
Modificaciones pertinentes, colocamos lo siguiente:

a) D = 1010110011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> MANCHESTER(h)
Gráfica:

b) D = 0100001111
>> h=[1 0 1 0 1 1 0 0 1 1];
>> MANCHESTER(h)
Gráfica:
c) D = 1000010011
>> h=[1 0 1 0 1 1 0 0 1 1];
>> MANCHESTER(h)
Gráfica:

4) Conclusiones
Fueron posibles gracias a la orientación de nuestro docente la simulación de los distintos tipos de codificación,
también pudimos observar su comportamiento de acuerdo al patrón que nos propuso el docente.

También podría gustarte