Estudiante
Lineas de Codificación
2. Objetivo
* Fortalecer los conocimientos aprendidos en clase
* Implementar en software los códigos de línea y multinivel para visualizar su comportamiento.
3. Marco Teórico
Función Round()
La función Round() recibe dos parámetros, el número que se desea redondear y el número de decimales que se desea que tenga:
Round (número,num_decimales)
Devuelve el número, redondeado de manera que tenga tantas posiciones decimales como se envíe en el segundo parámetro. El segundo parámetro es opcional y si no se indica, se entiende que se desea redondear sin decimales.
La función Round() siempre redondea al valor más próximo, con los decimales indicados.
Posibles ejemplos, que nos pueden dar una idea exacta de la manera de funcionar deRound(), son:
* Round (2.2) devuelve 2
* Round (2.6) devuelve 3
* Round (41.2855,3) devuelve 41.286
* Round (41.2009,2) devuelve 41.2
Función RAND
Genera números aleatorios entre cero y uno. Cuando se requiere trabajar con la generación de números aleatorios basados en la distribución de probabilidad gaussiana se trabaja con RANDN.
RAND(n) genera una matriz de n × n conelementos de valor aleatorio entre 0 y 1 (distribución uniforme).
4. Desarrollo
En Matlab Implementar en software los códigos de línea y multinivel tratados en clase.
Instrucciones
* Generar una cadena aleatoria de 50 bits. Usar las funciones round y rand.
* Simular que las tasas de bits (bps) o tasa de símbolos (baudios) sea de 1ms. Escribir un comentario.
* Entre los niveles alto ybajo debe existir 2 voltios de diferencia (Ej: +3V,+1V, -1V, -3V). Cuando sea necesario incluir el nivel off (Ej: 0V).
* Usando la función psd obtener la densidad espectral de potencia de cada código de línea y multinivel. Realizar un análisis comparativo entre todos los códigos generados.
* Recordar circuitos digitales y expresar cada código de línea y multinivel mediante un diagrama demaquinas de estado.
Definición de los formatos de codificación digital de señales.
No retorno a cero (NRZ-L)
0 = nivel alto
1 = nivel bajo
CODIGO
function nrz_l
clc
clf;
a1=rand(50,1); %cadena aleatoria de 50 numeros entre 0 y 1
h=round(a1) %redondeo de numeros aleatorios
j=1;
fprintf('BITS: ');
while j<50 %BARRIDO DEL VECTOR ORIGINAL
fprintf('%d',h(j));j=j+1;
end
fprintf('\nNRZ-L:');
n=1;
i=1;
l=length(h);
h(l+1)=1;
while n<=length(h)-1;
t=n-1:0.001:n; % CREA EL RANGO DE CADA BIT 0-1, 1-2,....49-50
if h(n) == 0 % Si es 0
if h(n+1)==0 % siguiente es 0
y=(t<=n);
else % siguiente es 1
y=(t<n);
end
d=plot(t,y);grid on;
title('UNIPOLAR NRZ');set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
o(i)=1;
fprintf('1')
i=i+1;
else % Si es 1
if h(n+1)==0 % el siguiente es 0
y=(t>n)+1*(t==n);
else % si el siguiente es 1
y=(t>n)+0*(t==n);
end
d=plot(t,y);grid on;
title(' UNIPOLAR NRZ');set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
o(i)=0;
fprintf('0')
i=i+1;
end
n=n+1;
end
end
Figura 1. Bits normales y codificados NRZ-L
Figura 2. Señal de la codificación NRZ-L
No retorno a cero invertido (NRZI)
0 = no hay transición al comienzo del intervalo (un bit cada vez)
1 = transición al comienzo del intervalo
CODIGO
function NRZ_I
clc
clf;a=rand(50,1); %cadena aleatoria de 50 numeros entre 0 y 1
h=round(a) %redondeo de numeros aleatorios
fprintf('BITS: ');
j=1;
while j<51 %BARRIDO DEL VECTOR ORIGINAL
fprintf('%d',h(j));
j=j+1;
end
n=1;
l=length(h);
h(l+1)=1;
an=-1;
fprintf('\nNRZ-I:');
while n<=length(h)-1;
t=n-1:0.001:n;
if h(n) == 0 % si h(n) es 0
if h(n+1)==0 % si h(n+1)...
Regístrate para leer el documento completo.