codigos de linea es

8
Práctica 2 Redes de Computadores Códigos de línea Estudio de la distorsión introducida por el medio físico en la transmisión de una señal digital en banda base. Objetivos El análisis espectral es un concepto básico para entender algunos de los efectos que se producen en la transmisión de datos a través de un medio físico, como por ejemplo distintos tipos de cables. En esta práctica se pretende que el alumno entienda el proceso de transmisión de señales digitales en banda base sobre canales guiados, y sea capaz de interpretar el efecto de factores tales como ancho de banda del canal, relación señal- ruido y velocidad de transmisión en la calidad de la señal recibida en el destino. Para ello utilizaremos como herramienta la aplicación Matlab, que ofrece todo el soporte necesario para realizar este estudio. Descripción Teórica En telecomunicaciones, un código en línea (modulación en banda base) es un código elegido para ser usado en un sistema de comunicación como soporte para la transmisión. Los códigos en línea son frecuentemente usados para el transporte digital de datos. Estos códigos consisten en representar la amplitud de la señal digital transportada respecto al tiempo. La representación de la onda se suele realizar mediante un número determinado de impulsos. Estos impulsos representan los 1s y los 0s digitales. Los tipos más comunes de codificación en línea son el NRZ, AMI y Manchester. Las figuras siguientes ilustran un ejemplo de modulación NRZ polar y de modulación AMI. Figura 1. Ejemplo de codificación NRZ polar.

Upload: javier-quintero

Post on 25-Jul-2015

264 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Codigos de Linea ES

Práctica

2 Redes de Computadores

Códigos de línea Estudio de la distorsión introducida por el medio físico en la transmisión de una señal digital en banda base. Objetivos El análisis espectral es un concepto básico para entender algunos de los efectos que se producen en la transmisión de datos a través de un medio físico, como por ejemplo distintos tipos de cables. En esta práctica se pretende que el alumno entienda el proceso de transmisión de señales digitales en banda base sobre canales guiados, y sea capaz de interpretar el efecto de factores tales como ancho de banda del canal, relación señal-ruido y velocidad de transmisión en la calidad de la señal recibida en el destino. Para ello utilizaremos como herramienta la aplicación Matlab, que ofrece todo el soporte necesario para realizar este estudio. Descripción Teórica En telecomunicaciones, un código en línea (modulación en banda base) es un código elegido para ser usado en un sistema de comunicación como soporte para la transmisión. Los códigos en línea son frecuentemente usados para el transporte digital de datos. Estos códigos consisten en representar la amplitud de la señal digital transportada respecto al tiempo. La representación de la onda se suele realizar mediante un número determinado de impulsos. Estos impulsos representan los 1s y los 0s digitales. Los tipos más comunes de codificación en línea son el NRZ, AMI y Manchester. Las figuras siguientes ilustran un ejemplo de modulación NRZ polar y de modulación AMI.

Figura 1. Ejemplo de codificación NRZ polar.

Page 2: Codigos de Linea ES

2

Figura 2. Ejemplo de codificación AMI (bipolar).

Después de la codificación en línea, la señal se manda a través de la capa física. A veces las características de dos canales aparentemente muy diferentes son lo suficientemente parecidas para que el mismo código sea usado por ellos. La señal en línea codificada puede tener las siguientes utilidades en diversos campos:

• Puede ser puesta directamente en una transmisión de línea, en forma de variaciones de voltaje o corriente.

• Está lo bastante modulada para crear una señal de radiofrecuencia que puede ser transmitida libremente al espacio

• Puede ser usada para encender y apagar una luz en Redes Inalámbricas Ópticas (en inglés Free Space Optics – FSO-), más conocidas como infrarrojos.

• Puede convertirse en campos magnéticos en un disco duro. • Puede ser impresa para crear códigos de barras. • Puede ser convertida en puntos en discos ópticos (CD)

Modos de eliminar la componente continua Desgraciadamente, la mayoría de las canales de comunicaciones a largas distancias no pueden transportar una componente continua. El código de línea más simple, el unipolar, que no tiene límites en lo que respecta a su componente continua, da muchos errores en los sistemas. Por ello, la mayoría de los códigos en línea eliminan la componente continua. Hay dos modos de eliminar la componente continua:

• Diseñar cada código transmitido de tal forma que contenga el mismo número de impulsos positivos que negativos, así se anularía la componente continua. Un ejemplo de este tipo de códigos es el Manchester.

• Usar un código de paridades emparejadas o código alternante. En otras palabras, un código en el que algunos o todos los dígitos o caracteres están representados por dos conjuntos de dígitos, de paridad opuesta, que se utilizan en una secuencia de manera que se minimice la paridad total de una larga cadena de dígitos. Ejemplos de este tipo de códigos es el código AMI, 8B10T, 4B3T, etc.

Page 3: Codigos de Linea ES

3

Sincronismo de la señal Los códigos en línea deberían hacer posible que el receptor se sincronice en fase con la señal recibida. Si la sincronización no es ideal, entonces la señal decodificada no tendrá diferencias óptimas, en amplitud, entre los distintos dígitos o símbolos usados en los códigos en líneas. Esto incrementará la probabilidad de error en los datos recibidos. Para que la recuperación del reloj sea fiable en el receptor, normalmente se impone un número máximo de ceros o unos consecutivos razonables. El periodo de reloj se recupera observando las transiciones en la secuencia recibida, hasta que el número máximo permitido de 0s o 1s seguidos garantice la recuperación del reloj, mientras que las secuencias sin estas restricciones pueden empeorar la calidad del código. También es recomendable que los códigos en línea tengan una estructura de sincronismo para que sea posible detectar errores. Desarrollo de la práctica Esta práctica se llevará a cabo en un entorno Matlab. Matlab es una aplicación ampliamente utilizada en el sector de telecomunicaciones y en muchos otros, y permite realizar estudios bastante detallados de sistemas de comunicaciones, especialmente en lo que se refiere al procesamiento de la señal. La práctica se divide en 3 partes, donde lo que cambia de una parte a la siguiente son esencialmente los objetivos que se persiguen. Así, en la primera parte se busca que el alumno utilice una secuencia de bits muy corta para que observe el impacto del ruido y del ancho de banda del canal en la señal que se recibe en el destino, observando además las variaciones percibidas en el espectro de frecuencias de la señal. En la segunda parte el análisis se centrará en el análisis espectral, y se propone un estudio comparativo entre diferentes códigos de línea. Finalmente, en la tercera parte se trata el proceso de decodificación con el objetivo de observar la variación del Bit Error Rate (BER) a medida que hacemos variar los parámetros del canal. Material necesario Para la realización de esta práctica el alumno deberá descargar una serie de scripts en lenguaje Matlab que están disponibles en la página web de la asignatura:

• http://www.redes.upv.es/rds El material se encuentra en el fichero codigos_linea.zip que se encuentra junto a los boletines de prácticas. Deberá descargar este fichero y extraer los ficheros .m (M-files) en una carpeta local o en el disco W. Scripts principales (modificar cuando así se indique): encoding.m: contiene el script principal para la primera parte spectral_analysis.m: contiene el script principal para la segunda parte ber_calc.m: contiene el script principal para la tercera parte

Page 4: Codigos de Linea ES

4

Scripts auxiliares (no modificar en el trascurso de la práctica): modulb.m: función que genera los distintos códigos de línea a partir de una secuencia de bits ideal_filter.m: función que modela un filtro ideal de cualquier tipo decode_seq.m: función que permite decodificar códigos de línea isodd.m: función que permite determinar si un número es impar La ejecución e interacción con el programa a desarrollar se hará en modo consola, por lo que deberá arrancar el Matlab y modificar el directorio de trabajo de manera que pueda acceder a estos ficheros descargados. Parte I: Efecto del canal físico sobre la señal modulada Un canal físico se suele caracterizar por un ancho de banda, por la distancia entre emisor y receptor y por el nivel de ruido en él presente. Estos dos últimos factores (distancia y ruido), juntamente con un cierto nivel de potencia de la señal en la fuente, nos permiten calcular la relación señal-ruido (SNR) en el receptor. Por lo tanto, podemos representar nuestro canal físico de la siguiente manera:

Analizando el script encoding.m podemos encontrar las instrucciones que nos permiten seguir esta misma secuencia representada. Pasamos a comentar las principales instrucciones: Inicialmente se definen algunos parámetros básicos, como dr = 1000; % tasa de entrada de datos, en bits/segundo fs = 25*dr; % una vez que en Matlab estamos simulando el proceso, tenemos que definir una tasa de muestreo que sea bastante superior a dr (en este caso 25 veces superior) snr = 5; % relación señal ruido en el destino (suponiendo ruido blanco gaussiano) % Caracterización del canal (frecuencias de corte) fmin = 0; % valor en Hz, 0 significa que es un filtro pasa-bajo fmax = 4000; % valor en Hz, frecuencia máxima de corte Después se procede a definir el código de línea deseado, así como la secuencia binaria usada en las pruebas:

Received signal (encoded)

ynd(t) y(t) yn(t)

Line coding

Noise

Filtering Binary input sequence (seq)

Page 5: Codigos de Linea ES

5

% lncds es un vector que contiene los códigos de línea implementados lncds = {'unipolar_nrz'; ... %1 'bipolar_nrz'; ... '4level_nrz'; ... 'bipolar_rz'; ... 'unipolar_rz'; ... %5 'ami'; ... 'manchester'; ... 'miller'; ... 'unipolar_nyquist'; ... 'bipolar_nyquist'; ... % 10 'bipolar_nrzi'; ... 'b8zs'; ... 'hdb3'; ... '2b1q'}; %14 linecode = 1; % mediante esta variable elegiremos qué código de línea queremos probar (en este caso 1 corresponde a NRZ unipolar). seq = [[1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1]; % esta será nuestra secuencia binaria de entrada usada para pruebas Finalmente se obtiene la señal modulada y(t), así como la señal con ruido yn(t) y la señal distorsionada por el filtro que representa el propio canal ynd(t). % % Primero creamos la señal modulada y(t) % [y,t] = modulb(seq,dr,fs,lncds{linecode}); % % Después añadimos ruido según el valor de SNR indicado % sigrms = sqrt(mean(y.^2)); % Signal power in rms % scale power in noise relative to signal npow = sigrms*10^(-snr/20); % Noise power in rms yn = y+npow*randn(size(y)); % Add scaled noise to signal % % Finalmente distorsionamos la señal de acuerdo con el canal definido, en este caso simulado mediante un filtro ideal % ynd = idealfilter(yn,fmin*max(size(seq))/dr,fmax*max(size(seq))/dr); Paso 1: En la línea de comandos de Matlab ejecute la instrucción “encoding”. Deberá obtener 6 figuras, donde las 3 últimas (4,5 y 6) son la representación espectral de las 3 primeras (1,2, y 3). En la figura 1 se muestra la señal modulada generada por el emisor. La figura 2 permite observar el efecto del ruido sobre la señal, y la figura 3 el efecto del ancho de banda. ¿Según la figura 6, cuál es el rango de frecuencias que el canal deja pasar? ____________________________________ Paso 2: Manteniendo el mismo código de línea, haga variar la relación señal ruido (SNR). Pruebe con los valores -10, -3, 0, 3, 10, 20 y 100. ¿A partir de qué valor cree que la tasa de error será elevada? ______________________

Page 6: Codigos de Linea ES

6

¿A partir de qué valor cree que no tiene sentido aumentar la potencia en la fuente? ___________________ Paso 3: Reponga el valor de SNR a 5dB. Haga variar la frecuencia máxima (corte) del canal, probando con los valores 100, 500, 1000, 2000 y 8000. ¿Para este caso, cuál cree que sería la frecuencia de corte óptima? _____________ Parte II: Análisis espectral de diferentes técnicas de modulación En esta segunda parte el objetivo es caracterizar los diferentes códigos de línea en términos de su eficiencia espectral. Para eso el alumno deberá partir del script spectral_analysis.m, y modificarlo cuando sea necesario. Para empezar ejecute una vez la instrucción spectral_analysis desde la línea de comandos de Matlab. Obtendrá una gráfica de la amplitud de la representación de esta señal en el dominio de las frecuencias. A continuación se muestra el espectro de frecuencias para NRZ unipolar después de realizar zoom y translación sobre la figura obtenida.

0 100 200 300 400 500 600 700 800 900 10000

0.2

0.4

0.6

0.8

1

Single-Sided Amplitude Spectrum of y(t)

Frequency (Hz)

|Y(f)

|

Como se puede verificar, este código de línea requiere un ancho de banda de 1000 Hz, y sí tiene una componente continua importante. Repita el mismo análisis para diferentes códigos de línea, y rellene la siguiente tabla.

Técnica de modulación

Ancho de banda ocupado1 (Hz)

Componente DC nula (Si/No)

NRZ unipolar (#1) NRZ bipolar (#2) AMI (#6) Manchester (#7) NRZI bipolar (#11) B8SZ (#12) HDB3 (#13) 2B1Q (#14)

1 Hasta el primer cruce por amplitud cero en el espectro de frecuencias.

Page 7: Codigos de Linea ES

7

Parte III: Efecto del canal sobre la tasa de errores de bit (BER) En este punto vamos a utilizar nuestro simulador para ver gráficamente cómo afecta el ancho de banda y la atenuación introducida por el cable a la señal transmitida. Para este análisis utilizaremos el script ber_calc.m. Para el proceso de decodificación se invoca el script decode_seq.m, que como puede verificar sólo implementa un subconjunto de los códigos de línea listados por el vector lncds. Paso 1: Utilizando los códigos de línea NRZ unipolar (#1) y AMI (#6), calcule la tasa de errores de bit a medida que hacemos variar la relación señal-ruido y complete la siguiente gráfica:

Notas: Hacer pruebas con los valores de SNR: -3, -1, 1, 3, 5 y 10 dB. Colocar ambas líneas en la misma figura. El ancho de banda del canal debe ser [0,4000] Hz. Paso 2: Utilizando los códigos de línea NRZ unipolar (#1) y AMI (#6), calcule la tasa de errores de bit a medida que hacemos variar el ancho de banda de un canal pasa-bajo (modelado en términos de frecuencias por [0,fmax]) y complete la siguiente gráfica:

Nota: Colocar el valor de SNR a 10 dB. Probar con los valores indicados en la figura.

Page 8: Codigos de Linea ES

8

Paso 3: Repita el paso anterior cambiando el tipo de canal a pasa-banda (modelado en términos de frecuencias por [fmin, 1000]) y complete la siguiente gráfica:

Nota: Colocar el valor de SNR a 10 dB y el valor de fmax a 1000 Hz. Probar con los valores indicados en la figura. ¿Cuál de los dos códigos de línea es más adecuado para la transmisión sobre canales pasa-banda? __________________ Ampliaciones opcionales sobre la práctica

1. Implementar nuevos códigos de línea no contemplados y analizar su comportamiento espectral.

2. Comparar los resultados obtenidos con el filtro ideal con otros filtros más “realistas”: Butterworth, Chebychev, etc.

3. Implementar decodificadores para más códigos de línea (ver en decode_seq.m los que quedan por implementar) y caracterizarlos en términos de BER.