Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
a)
SEALIZACIN UNIPOLAR.
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)
h=[1 1 0 1 1 0 1 0 1 1];
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 y=(t==n);
end
d=plot(t,y);
grid on
title('Cdigo de lnea UNIPOLAR RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
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('Cdigo de lnea UNIPOLAR RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
end
n=n+1;
end
function UNRZ(h)
h=[1 1 0 1 0 1 1 0 1 0];
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('Cdigo de lnea 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('Cdigo de lnea UNIPOLAR NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
end
n=n+1;
end
Como ejemplo, ejecutamos lo que muestra la siguiente figura:
b) SEALIZACIN POLAR.
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:
function PNRZ(h)
h=[1 1 0 1 1 0 0 0 1];
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('Cdigo de lnea 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('Cdigo de lnea POLAR NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
end
n=n+1;
end
c) SEALIZACIN BIPOLAR.
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)
h=[1 0 1 1 1 0 1 0 1 0];
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('Cdigo de lnea 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('Cdigo de lnea BIPOLAR RZ'); set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
end
n=n+1;
end
d) SEALIZACIN MANCHESTER
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)
%function MANCHESTER %
h=[1 1 0 1 1 0 0 0 1 0];
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('Cdigo de lnea MANCHESTER NRZ');
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('Cdigo de lnea MANCHESTER NRZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
end
n=n+1;
end
b) SEALIZACIN POLAR.
c) SEALIZACIN BIPOLAR.
d) SEALIZACIN MANCHESTER
Las variables definidas dentro de una funcin son variables locales, en el sentido de que son
inaccesibles desde otras partes del programa y en el de que no interfieren con variables del
mismo nombre definidas en otras funciones o partes del programa. Se puede decir que
pertenecen al propio espacio de trabajo de la funcin y no son vistas desde otros espacios
de trabajo. Para que la funcin tenga acceso a variables que no han sido pasadas como
argumentos es necesario declarar dichas variables como variables globales, tanto en el
programa principal como en las distintas funciones que deben acceder a su valor.
Dentro de la funcin, los valores de retorno deben ser calculados en algn sitio.De todas
formas, no hace falta calcular siempre todos los posibles valores de retorno de la funcin,
sino slo los que el usuario espera obtener en la sentencia de llamada a la funcin. En
cualquier funcin existen dos variables definidas de modo automtico, llamadas varargin y
varargout, que representan respectivamente el nmero de argumentos y el nmero de
valores de retorno con los que la funcin ha sido llamada. Dentro de la funcin, estas
variables pueden ser utilizadas como el programador desee.
La ejecucin de una funcin termina cuando se llega a su ltima sentencia ejecutable. Si se
quiere forzar el que una funcin termine de ejecutarse se puede utilizar la sentencia return,
que devuelve inmediatamente el control al entorno de llamada.
Caractersticas Generales de las funciones de librera
El concepto de funcin en SCILAB es semejante al de C y al de otros lenguajes de
programacin, aunque con algunas diferencias importantes. Al igual que en C, una funcin
tiene nombre, valor de retorno y argumentos. Una funcin se llama utilizando su nombre en
una expresin o utilizndolo como un comando ms.
//funcion de prueba para
evaluar function y=prueba(x)
y=x+3;
endfunction
->getf("prueba.sci")
-->prueba(1)
ans = 4.
Podemos ver que esta funcin es solamente la funcin de una recta, cuya pendiente es de 45
y desplazada 3 unidades.
y : es el valor de retorno.
prueba : es el nombre de la
funcin. x : es el argumento de
entrada.
Una caracterstica de SCILAB es que las funciones que no tienen argumentos no llevan
parntesis, por lo que a simple vista no siempre son fciles de distinguir de las simples
variables. La manera de cargar una funcin es mediante el comando getf ,este comando
tiene como entrada el nombre de la funcin, con la direccin que posee en el sistema de
archivos.
Ejemplo:
//function sin argumentos de
entrada function hello
printf("hello, world
\n") endfunction
-->getf("f:\matriz.sci")
-->hello()
hello, world
Otra forma de definir una funcin es hacerlo en la propia lnea de comandos del programa,
de manera que podemos definir rpidamente una funcin que puntualmente vamos a utilizar
es con el comando deff:
-->deff('[x]=mifuncion(y,z)','x=y+z')
-->a=mifuncion(23,43)
a = 66.
De este modo, hemos definido la funcin zyx+= y podemos utilizarla mientras no cerremos
el programa (Nota: las funciones pueden ser redefinidas, as que debemos tener cuidado con
el nombre que le ponemos a la funcin definida con deff).
CONCLUSIONES