Informe 6
Informe 6
Codificación
I. Objetivos
Aprender sobre los diferentes tipos de codificación
II. Fundamentación Teórica
2.1. Codificación
La codificación digital consiste en la traducción de los valores de tensión
eléctrica analógicos que ya han sido cuantificados (ponderados) al sistema binario,
mediante códigos preestablecidos. La señal analógica va a quedar transformada en
un tren de impulsos de señal digital (sucesión de ceros y unos).
Este tipo de codificación compara la señal PAM con una forma de onda de rampa,
mientras un contador binario avanza a una velocidad uniforme. Cuando la onda en
rampa es igual o mayor que la muestra PAM, el contador contiene el código PCM
El código HDB3 es un buen ejemplo de las propiedades que debe reunir un código de
línea para codificar en banda base:
-El espectro de frecuencias carece de componente de corriente continua y su ancho
de banda está optimizado.
-El sincronismo de bit se garantiza con la alternancia de polaridad de los "unos", e
insertando impulsos de sincronización en las secuencias de "ceros".
Los códigos HDBN (High Density Bipolar) limitan el número de ceros consecutivos que
se pueden transmitir: -HDB3 no admite más de 3 ceros consecutivos. Colocan un
impulso (positivo o negativo) en el lugar del 4º cero.
-El receptor tiene que interpretar este impulso como un cero. Para ello es preciso
diferenciarlo de los impulsos normales que representan a los "unos".
-El impulso del 4º cero se genera y transmite con la misma polaridad que la del
impulso precedente. Se denomina por ello V "impulso de violación de polaridad" ( el
receptor reconoce esta violación porque detecta 2 impulsos seguidos con la misma
polaridad).
-Para mantener la componente de corriente continua con valor nulo, se han de
transmitir alternativamente tantas violaciones positivas como negativas ( V+ V- V+ V-...
).
-Para mantener siempre alternada la polaridad de las violaciones V, es necesario en
algunos casos insertar un impulso B "de relleno" (cuando la polaridad del impulso que
precede a la violación V, no permite conseguir dicha alternancia). Si no se insertaran
los impulsos B, las violaciones de polaridad V del 4º cero serían obligatoriamente del
mismo signo.
En HDB3 se denomina impulso a los estados eléctricos positivos o negativos, distintos
de "cero". (0 voltios).
Cuando aparecen más de tres ceros consecutivos, estos se agrupan de 4 en 4, y se
sustituye cada grupo 0000 por una de las secuencias siguientes de
impulsos: B00V ó 000V.
-B indica un impulso con distinto signo que el impulso anterior. Por tanto, B mantiene
laley de alternancia de impulsos, o ley de bipolaridad, con el resto de impulsos
transmitidos.
-V indica un impulso del mismo signo que el impulso que le precede, violando por tanto
la ley de bipolaridad.
El grupo 0000 se sustituye por B00V cuando es par el número de impulsos entre la
violación V anterior y la que se va a introducir.
El grupo 0000 se sustituye por 000V cuando es impar el número de impulsos entre la
violación V anterior y la que se va a introducir.
Así se logra mantener la ley de bipolaridad de los impulsos correspondientes a los
"unos", y también la bipolaridad de las "violaciones" mediante los impulsos B y los
impulsos V.
El código CMI (Codec Mark Inversion) es un código en línea en banda base, cuyo
objetivo al igual que otros códigos de línea es:
El bit 0:se codifica con un cambio de polaridad negativa a positiva (V- a V+), en
la mitad del intervalo del bit.
El bit 1:se codifica con polaridad positiva y negativa alternativamente y sin
transición en la mitad del intervalo.
El código CMI, anula la componente continua. La inserción del reloj de sincronismo en
los ceros, mediante la transición de la señal entre dos niveles o estados opuestos,
hace que su velocidad de línea sea el doble del régimen binario(R). Este código
CMI(Code Mark Inversion), se utiliza en el múltiplex de 140 Mbps de la interfaz G.703
de la JDP (Jerarquía Digital Plesíncrona).
Este código emplea para la transición de un uno, una transición en la mitad del
intervalo significativo. Para el caso de un cero, existe una transición al final del
intervalo si el bit siguiente es cero, en caso contrario no habrá transición alguna.
3.1. En primer lugar se debe generar una secuencia de datos digitales de manera
aleatoria para lo cual las instrucciones rand y round son útiles:
data = round(rand(1,50));
UNRZ
h=round(rand(1,50));
n=2;
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('Codificación 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('Codificación 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
URZ
h=round(rand(1,30));
n=1;
l=length(h);
h(l+1)=1;
while n<=length(h)-1;
t=n-1:0.001:n;
%Graficación 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('Codificación UNIPOLAR RZ');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
%Graficación 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('Codificación 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
BNRZ
h=round(rand(1,50));
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('Codificación 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('Codificación 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
BRZ
h=round(rand(1,50));
n=2;
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('Codificaión 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('Codificación 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
b) Codificación AMI
h=round(rand(1,50));
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('Codificación 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('Codificaión 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
c) Codificación HBD-n
xn=round(rand(1,50));
d) Codificación Manchester
h=round(rand(1,50));
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('Codificación 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('Codificación 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
e) Codificación Diferencial
h=round(rand(1,50));
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) == 1
if h(n+1)==1
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('Codificación MANCHESTER DIFERENCIAL');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('one');
else
if h(n+1)==1
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('Codificación MANCHESTER DIFERENCIAL');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero');
end
n=n+1;
%pause;
end
f) Codificación CMI
h=round(rand(1,20));
n=1;
l=length(h); %se obtiene el tamaño de h
h(l+1)=1; %se agrega un elemnto extra a h
m=-1; %para el punto final de cada trama que a continuación le sigue
un 1
r=-1; %para las tramas correspondientes a 1
while n<=length(h)-1;
t=n-1:0.001:n; %se define un intervalo de valores t de longitud l
%con punto inicial y final segun el elemnto
analizado
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)+m*(t==n);
m=-m;
end
d=plot(t,y); %se grafica h de forma repetida
grid on;
title('Codificación CMI')
set(d,'LineWidth',2.5); % establece un acncho de linea
hold on; %mantiene el dibujo actual y propiedades de los ejes
axis([0 length(h)-1 -1.5 1.5]); %escala los ejes x e y
disp('one'); %muestra el texto one
else
if h(n+1)==0
y=r*(t<n)-1*(t==n);
else
y=r*(t<n)-r*(t==n);
m=-m;
end
r=-r;
if n==1
m=-m;
end
d=plot(t,y);grid on;
title('Codificación CMI');
set(d,'LineWidth',2.5);
hold on;
axis([0 length(h)-1 -1.5 1.5]);
disp('zero'); %muestra el tecto zero
end
n=n+1; %se procede a analizar el siguiente elemento
%pause;
end
g) Código Miller
h=round(rand(1,50));%Señal
est_inicial=-1;%Estado inicial
d2=fft(y);
figure(2)
semilogx(10.^d2,d2)
figure(3)
semilogy(10.^d2,d2)
figure(4)
plot(t,d2)
Los resultados obtenidos:
IV. Conclusiones
Con la práctica fue posible aprender todos los tipos de codificación que existen,
además de simularlos en MATLAB.