Codigos de Linea LAB1a

17
LABORATORIO Nº 01 BANDA BASE Y CODIGOS DE LINEA 1. INTRODUCCIÓN En el presente laboratorio se desarrollan distintos códigos de línea existentes como son HDB3, CMI, AMINRZ, AMIRZ, Manchester, URZ, URNZ, etc. 2. OBJETIVOS • Analizar el comportamiento de los códigos de línea. • Aplicaciones de los códigos de línea en los diversos sistemas de comunicaciones 3. MARCO TEÓRICO a. Definición Matemática de Ruido Blanco El ruido blanco es un caso particular de proceso estocástico WSS en el que las variables aleatorias que lo forman no están correlacionadas. Es decir, si se tiene un proceso estocástico w(k) WSS (lo supondremos de tiempo discreto y real, equivalentemente para procesos de tiempo continuo), debe ocurrir que Si en lugar de tener la distribución de probabilidad del proceso lo que tenemos es una realización temporal del mismo en forma de vector columna (lo más usual), entonces las ecuaciones anteriores se expresan normalmente en forma matricial Como el proceso no está correlacionado, su función de autocorrelación es una delta y su densidad espectral de potencia (PSD, Power Spectral Density) S xx (f) es una constante

Transcript of Codigos de Linea LAB1a

Page 1: Codigos de Linea LAB1a

LABORATORIO Nº 01BANDA BASE Y CODIGOS DE LINEA

1. INTRODUCCIÓNEn el presente laboratorio se desarrollan distintos códigos de línea existentes como son HDB3, CMI, AMINRZ, AMIRZ, Manchester, URZ, URNZ, etc.

2. OBJETIVOS

• Analizar el comportamiento de los códigos de línea.• Aplicaciones de los códigos de línea en los diversos sistemas de comunicaciones

3. MARCO TEÓRICO

a. Definición Matemática de Ruido Blanco

El ruido blanco es un caso particular de proceso estocástico WSS en el que las variables aleatorias que lo forman no están correlacionadas. Es decir, si se tiene un proceso estocástico w(k) WSS (lo supondremos de tiempo discreto y real, equivalentemente para procesos de tiempo continuo), debe ocurrir que

Si en lugar de tener la distribución de probabilidad del proceso lo que tenemos es una realización temporal del mismo en forma de vector columna (lo más usual), entonces las ecuaciones anteriores se expresan normalmente en forma matricial

Como el proceso no está correlacionado, su función de autocorrelación es una delta y su densidad espectral de potencia (PSD, Power Spectral Density) Sxx(f) es una constante

Sxx(f) = TF{Rww(Δ)} = TF{σ2δ(Δ)} = σ2

Como la PSD es constante, la señal no está limitada en banda y su potencia es -teóricamente- infinita. En la práctica, se considera que una señal es blanca si su PSD es constante en la banda de frecuencia de interés en la aplicación. Por ejemplo: si se trata de una aplicación de audio, el ruido será blanco si su espectro es plano entre 20Hz y 20KHz que es la banda de frecuencia audible por el oído humano.

En cualquier proceso estocástico existen siempre dos componentes:

Page 2: Codigos de Linea LAB1a

Una componente innovadora, que no se puede predecir mediante predicción lineal y que representa la entropía, la incertidumbre, el caos, lo que no se puede predecir de ninguna manera

Una componente redundante que es posible predecir y, por tanto, eliminar. En esto se basan las técnicas de compresión sin pérdidas de la señal como, por ejemplo, ADPCM o más específicamente para señales de voz la norma G.721

La PSD es la transformada de Fourier de la función de auto correlación, y como esta es una transformación matemática unívoca, se ve que la función de auto correlación y la PSD contienen básicamente la misma información acerca de una señal. Son dos formas distintas de ver lo mismo: el grado de entropía de una señal. La entropía de una señal en este caso puede verse como una medida de lo plano que es su espectro. Una señal cuyo espectro no sea plano se dice que está "coloreada" (auto correlacionada o que tiene redundancia). El ruido blanco es un proceso completamente innovador, caótico, no tiene redundancia y por tanto no se puede comprimir.

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.

b. CODIGOS DE LINEA

Figura 1 Códigos de Línea

Page 3: Codigos de Linea LAB1a

Los códigos de línea son usados para este tipo de transmisión.

4. CARACTERISTICAS

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.

5. SIMULACIÓN

• Guarde las funciones AMINRZ(h), AMIRZ(h), MANCHESTER(h), URZ(h), UNRZ(h), PNRZ(h),BRZ(h) en la carpeta Matlab de mis documentos si tiene la versión de Matlab 2009, si tiene otra versión buscar la carpeta Matlab y la subcarpeta WORK.

• Escriba el nombre de la función en la ventana de comandos de MATLAB.

• El valor de h es un vector con la cantidad de datos que ud. estime por conveniente; ejemploh=[1 0 0 1 1 0 1 0 1 0].

CODIGO FUENTE DE LOS CODIGOS DE LINEA

a. CODIGO AMINRZ

En este código, cuando se asigna un impulso positivo al primer “1”, al siguiente "1" se le asigna un impulso negativo, y así sucesivamente. Por lo tanto, se asignan alternativamente impulsos positivos y negativos a los "1" lógicos. Además, al ser del tipo retorno a cero, durante la segunda mitad del intervalo de bit se utiliza tensión cero para representar el “1”.

Características

El espectro de la señal a la frecuencia cero debe ser cero, con lo cual se elimina la componente continua de las señales

Densidad Espectral de PotenciaSe reducen los requerimientos de potencia y se logra una mayor inmunidad a la diafonía.

Page 4: Codigos de Linea LAB1a

Se utiliza un aleatorizador que límite estadísticamente el número de ceros consecutivos, de otra manera se perdería el sincronismo con el reloj. A su vez, si se encuentra dos unos seguidos con la misma polaridad sabemos que se ha producido un error.

Aplicación

• El código AMI fue usado extensamente en la primera generación de redes PCM, su éxito radica en que no hay un gran número seguido de ceros en su código. Esto es lo que asegura la sincronización.

• Forma de este código se aplican en los sistemas troncales T1 (Velocidad máxima 1.544 Mbps), y en la transmisión de canales B.

• En la Red Digital de Servicios Integrados (RDSI) de acuerdo con la Recomendación UIT-T I.430.

Codigo Fuente

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) == 0if h(n+1)==0y=(t>n);elseif ami==1y=-(t==n);elsey=(t==n);endendd=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');elseami=ami*-1;if ami==1y=(t<n);elsey=-(t<n);endelseif ami==1y=(t<n)-(t==n);elsey=-(t<n)+(t==n);endendd=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');endn=n+1;%pause;End

Page 5: Codigos de Linea LAB1a

Figura 2 Simulación de Código AminRZ

b. CÓDIGO AMIRZ

function AMIRZ(h)%Example:%h=[1 0 0 1 1 0 1 0 1 0];%AMIRZ(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) == 0if h(n+1)==0y=(t>n);elseif ami==1y=-(t==n);elsey=(t==n);endendd=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');

elseami=ami*-1;if h(n+1)==0if ami==1y=(t<n-0.5);elsey=-(t<n-0.5);endelseif ami==1y=(t<n-0.5)-(t==n);elsey=-(t<n-0.5)+(t==n);endendd=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');endn=n+1;%pause;End

Page 6: Codigos de Linea LAB1a

Figura 3 Simulación de código AMIRZ

c. CODIGO MANCHESTER

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) == 0if h(n+1)==0y=-(t<n)+2*(t<n-0.5)+1*(t==n);elsey=-(t<n)+2*(t<n-0.5)-1*(t==n);endd=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');elseif h(n+1)==0y=(t<n)-2*(t<n-0.5)+1*(t==n);elsey=(t<n)-2*(t<n-0.5)-1*(t==n);endd=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');endn=n+1;%pause;end

Page 7: Codigos de Linea LAB1a

Figura 4 Simulación de código Manchester

d. Código URZ

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;%Graficación de los CEROS (0)if h(n) == 0if h(n+1)==0y=(t>n);elsey=(t==n);endd=plot(t,y);grid ontitle('Line code 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)elseif h(n+1)==0y=(t<n-0.5);elsey=(t<n-0.5)+1*(t==n);endd=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');endn=n+1;%pause;endend

Page 8: Codigos de Linea LAB1a

Figura 5 Simulación de código URZ

e. Código UNRZ

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) == 0if h(n+1)==0y=(t>n);elsey=(t==n);endd=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');elseif h(n+1)==0y=(t<n)-0*(t==n);elsey=(t<n)+1*(t==n);endd=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');endn=n+1;%pause;end

%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) == 0if h(n+1)==0y=-(t<n)-(t==n);elsey=-(t<n)+(t==n);endd=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');elseif h(n+1)==0y=(t<n)-1*(t==n);elsey=(t<n)+1*(t==n);endd=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');endn=n+1;End

Page 9: Codigos de Linea LAB1a

Figura 6 Simulación de código UNRZ

f. Código BRZ

function BRZ(h)%Ejemplo:%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) == 0if h(n+1)==0y=-(t<n-0.5)-(t==n);elsey=-(t<n-0.5)+(t==n);endd=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');elseif h(n+1)==0y=(t<n-0.5)-1*(t==n);elsey=(t<n-0.5)+1*(t==n);endd=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');endn=n+1;%pause;End

Page 10: Codigos de Linea LAB1a

Figura 7 Simulación de código BRZ

CODIGO CMI

El código CMI (Codec Mark Invertion) es un código en línea en banda base, cuyo objetivo al igual que otros códigos de línea es:

Mínima componente continúa. Máximo número de cambios de nivel Mínima frecuencia o ancho de banda para una velocidad de bits. Detección y corrección de errores.

El nombre CMI, proviene de la nomenclatura marca=1 y espacio=0

Funcionamiento

El bit 0:se codifica con un cambio de polaridad negativa a postiva (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 Invertion),

Page 11: Codigos de Linea LAB1a

se utiliza en el múltiplex de 140 Mbps del interfaz G.703 de la JDP (Jerarquía Digital Plesíncrona).

function CMI(h) h=[1 1 0 1 0 0 0 0 0 1]; 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)-2*(t<n-0.5)-1*(t==n); else if AMI==-1 y=(t<n)-2*(t<n-0.5)+1*(t==n); else y=-1*(t==n)+(t<n)-2*(t<n-0.5); end end d=plot(t,y);grid on; title('Line code CMI'); set(d,'LineWidth',2.5); hold on; axis([0 length(h)-1 -1.5 1.5]); disp('one'); else AMI=AMI*-1;

if h(n+1)==0 if AMI==1 y=+(t<n)-1*(t==n); else y=-(t<n)-1*(t==n); end else if AMI==1 y=(t<n)-1*(t==n); else y=-(t<n)+1*(t==n); end end d=plot(t,y);grid on; title('Line code CMI'); set(d,'LineWidth',2.5); hold on; axis([0 length(h)-1 -1.5 1.5]); disp('zero'); end n=n+1; end

Figura 7 Simulación de código CMI

Page 12: Codigos de Linea LAB1a

HDB3(High Density Bipolar of order 3 code) es un código binario de telecomunicaciones principalmente usado en Japón,Europa y Australia y está basado en el código AMI, usando una de sus características principales que es invertir la polaridad de los unos para eliminar la componente continua.

Consiste en sustituir secuencias de bits que provocan niveles de tensión constantes por otras que garantizan la anulación de la componente continua y la sincronización del receptor. La longitud de la secuencia queda inalterada, por lo que la velocidad de transmisión de datos es la misma; además el receptor debe ser capaz de reconocer estas secuencias de datos especiales.

Explicación

El código HDB3 cumple las propiedades que debe reunir un código de línea para codificar señales en banda base:

El espectro de frecuencias carece de componente continua y su ancho de banda esta 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. Coloca 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.

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

Page 13: Codigos de Linea LAB1a

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 de “cero”. Cuando aparecen más de tres ceros consecutivos estos se agrupan de 4 en 4, y se sustituye cada grupo de 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 la ley de alternancia de impulsos, o ley de polaridad, con el resto de los 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.

Detección de errores

La detección elemental de los errores de transmisión típicos del ruido, se realiza simplemente comprobando que los impulsos recibidos por el receptor cumplen las reglas de polaridad establecidas por la codificación HDB3. La figura muestra las consecuencias de dos errores diferentes. La pérdida de un impulso se detecta porque aparecen 4 ceros consecutivos que no permite el HDB3, y también la inserción de un “uno”, porque la dos violaciones positivas quedan con la misma polaridad.

Sin embargo en la figura siguiente se puede ver que hay errores que no se detectan y que incluso se propagan generando aún más errores.

function hdb3(h) clf;h =[1 1 1 0 0 0 0 0 0 0 0 0 1 0 1]; n=1; l=length(h); h(l+1)=1; C=0;f=1;ami=-1; while n<=length(h)-1; t=n-1:0.001:n; if h(n) == 0 C=C+1 if C==4 C=0; f=f*-1; if f==1 y=+(t<n)-(t==n-1); else y=-(t<n)+(t==n-1);

end d=plot(t,y);grid on; title('Line code HDB3'); set(d,'LineWidth',2.5); hold on; axis([0 length(h)-1 -1.5 1.5]); disp('one'); end if C==4 ami=ami*1; f=ami; if ami==1 y=+(t<n)-(t==n-1); else y=-(t<n)+(t==n-1); end d=plot(t,y);grid on;

Page 14: Codigos de Linea LAB1a

title('Line code HDB3'); set(d,'LineWidth',2.5); hold on; axis([0 length(h)-1 -1.5 1.5]); disp('one'); else end if h(n+1)==0 if C==3 if ami==1 y=-(t==n); else y=(t==n); end else end 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 HDB3'); 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 HDB3'); set(d,'LineWidth',2.5); hold on; axis([0 length(h)-1 -1.5 1.5]); disp('one'); end n=n+1; end

Figura 7 Simulación de código HDB3