Practica G38kruh 06-07

9
Práctica 1 Experimentos con un MODEM banda base

description

Practica G38kruh 06-07

Transcript of Practica G38kruh 06-07

Generacin de la seal digital

Prctica 1

Experimentos con un MODEM banda base

Laboratorio de Procesado de Seal en Comunicaciones

Inmaculada Hernez

En esta prctica trabajaremos en una sesin de Linux. Antes de comenzar con la prctica, lee atentamente el Manual para utilizar el mdem G38KRUH en Linux. Ten este manual a mano durante toda la prctica y utilzalo para consultar el funcionamiento de los programas.

1. Generacin de seales digitales NRZ

Objetivo: familizarse con el manejo de seales digitales y secuencias binarias.

Utilizaremos el programa m_b2w (bits to wave) y el programa m_bgen (bits generator). El objetivo es generar una seal digital con codificacin polar NRZ. La seal responder a la expresin en donde p(t) es un pulso rectangular de anchura T, 1/T es la velocidad de smbolo r (que en este caso es tambin la velocidad binaria), y ak ={1,0} son los bits a transmitir. La entrada al mdulo es por tanto un fichero con la secuencia de 1s y 0s que deseamos transmitir, y la salida ser un fichero de seal conteniendo la seal de datos, con una determinada frecuencia de muestreo.

a) Escribe en un fichero de texto una secuencia de 5 bits 10101 y nombra el fichero 5bits.txt. Genera la seal digital 5bits.wav correspondiente al fichero 5bits.txt. Activa el parmetro CLShow=Y para obtener adems los valores de los parmetros que se utilizan por defecto en el programa.

$ m_b2w CLShow=Y 5bits.wav < 5bits.txt

En una sesin de windows, con el programa CoolEdit observa la seal obtenida. Comprueba que se ha generado el nmero de muestras adecuado, y que el resto de los datos coinciden con lo indicado en los valores de los parmetros (frecuencia de muestreo, nmero de muestras por bit). Dibuja la seal obtenida de forma esquemtica, indicando sobre ella dichos parmetros.

b) Realiza diversas pruebas variando los valores de los parmetros, con el mismo fichero de entrada anterior (cambie los nombres de los ficheros de salida en cada ejecucin). Representa y explica grficamente al menos dos de los resultados. Cuando la frecuencia de muestreo es 48000m/s y se generan 5 muestras por cada bit, cul es la velocidad binaria de salida?

c) Cambia la secuencia binaria de entrada, y realiza algunas pruebas para familiarizarte con la seal obtenida. Manteniendo la frecuencia de muestreo de 48000m/s, puedes generar secuencias a la velocidad de 19200bits/s?

d) Con el programa m_bgen puedes generar ciertas secuencias binarias en un fichero de texto sin necesidad de teclear la secuencia a mano. Practica con este programa, te har falta ms adelante en esta prctica. Describe al menos dos pruebas diferentes de entre las pruebas realizadas.

2. Scrambler

a) Genera una secuencia aleatoria de 1000 bits y la seal NRZ correspondiente a 9600bps, con frecuencia de muestreo 48000Hz. Observa la densidad espectral de potencia de esta seal. Indica en un grfico sus caractersticas ms importantes. Repite el ejercicio para una velocidad de 2400bps.

b) En la secuencia aleatoria anterior, inserta una secuencia de unos 200 bits en la que aparezcan determinados patrones, por ejemplo una en la que aparezca una secuencia larga unos y ceros alternados del tipo 101010 110011001100, 111000111000111 etc. Estudia su espectro utilizando la vista del espectrograma. Explica lo que ocurre.

c) Utiliza el scrambler de la funcin m_scr para eliminar los patrones de la secuencia anterior. Observa el espectro de la nueva secuencia. Se ha producido el efecto deseado?.

3. Pulso de Nyquist

El filtro de transmisin del mdem es un filtro en raz de coseno alzado. En combinacin con el filtro de recepcin forma un filtro con respuesta de Nyquist. Los factores de roll-off posibles son de 0.2 0.3.

a) Utilizando m_txfil, genera la seal modulada correspondiente a la transmisin de un solo bit a 9k6bps. Con el programa CoolEdit observa la seal generada. Realiza esta operacin para factor de roll-off=0,2 y 0,3 y compare la respuesta obtenida. Comprueba que efectivamente se han aplicado dichos factores, y explica grficamente los resultados.

b) Aplica ahora la seal anterior al filtro de recepcin utilizando m_rxfil. Observa ahora los pulsos obtenidos para los dos valores del factor de roll-off. Compara estos pulsos con los obtenidos en el apartado anterior. Recuerda que esta seal presenta nicamente 2 muestras/bit -muestra de borde y muestra central del bit. Cul es la frecuencia de muestreo que observas en la seal recibida?

c) Realiza una tabla que muestre el ancho de banda tericamente ocupado para cada una de las velocidades y factores de roll-off, teniendo en cuenta la expresin B=(1+)r/2, vlida para pulsos de Nyquist.

d) Realiza la transmisin/recepcin de una secuencia aleatoria de gran longitud (>10000 bits). Realiza el anlisis espectral. Compara el resultado con el que obtuviste para la seal NRZ y comenta los resultados.

4. Deteccin

Los filtros de transmisin y recepcin (y el scrambler en caso de utilizarse) introducen bits adicionales en las secuencias de bits transmitidas. Adems, el nmero de bits introducidos vara segn velocidad y factor de roll-off.

Los retardos introducidos por los filtros de transmisin y recepcin dependen de la velocidad de trabajo y del factor de roll-off. Por eso, el primer bit vlido en la secuencia de bits recibida (es decir, aqul que se corresponder con el primer bit transmitido) vara tambin segn estos dos parmetros. El programa ber' realiza la comparacin entre secuencias transmitidas y recibidas, teniendo en cuenta los retardos mencionados.

a) Utilizando el programa 'ber' comprueba que se realiza una transmisin sin error para diferentes velocidades y factores de roll-off. (Utiliza secuencias de al menos 100000 bits).

5. Ruido

En este apartado escribirs una funcin en C que genere ruido gausiano, que nos permitir posteriormente evaluar el comportamiento del mdem. Utilizaremos inicialmente Matlab para asegurarnos de que el algoritmo de generacin de ruido es correcto y despus implementars las funcin en C.

a) A partir de una variable aleatoria con distribucin uniforme, puedes generar ruido blanco utilizando la siguiente funcin:

en donde b es una v.a. uniformemente distribuida entre 0 y 1 y es otra v.a., independiente de la anterior, y uniformemente distribuida entre 0 y 2.

Las variables b y puedes conseguirlas utilizando la funcin rand. K ser la potencia del ruido resultante n.

Comprueba en Matlab que efectivamente la potencia del ruido as generado vale K. Comprueba tambin que el ruido es gausiano. Es blanco? Explica claramente cmo realizas estas comprobaciones y justifica todas tus respuestas.

b) Estudia el fuente addnoise_skel.cpp, en el que debers insertar el clculo de las muestras de ruido. Analiza su funcionamiento cuando la funcin sea llamada con el parmetro details=Y. Describe brevemente el algoritmo.

c) Utilizando la funcin random() realiza el clculo del ruido en la funcin noise. Renombra el fichero addnoise_skel.cpp que se proporciona como addnoise.cpp de forma que puedas utilizar directamente los ficheros de compilacin makefile, make.rul y addnoise.mak. Para compilar el programa, copia en tu directorio de trabajo los ficheros anterioes (addnoise_skel.cpp -que debers renombrar como addnoise.cpp-, addnoise.mak, makefile, make.rul), y despus:

usuario@bops> make addnoise

Comprueba que la potencia de ruido resultante es la potencia deseada introducida como parmetro.

d) Suma ruido a algunas seales generadas mediante m_txfil y comprueba los resultados en las formas de las seales y en sus espectros.

6. Probabilidad de error

En este apartado calcularemos las tpicas curvas Pe-S/N que definen el comporatmiento de un sistema de comunicacin digital. Para ello utilizaremos el script modem_do junto con la aplicacin de windows tableplot.

a) Explica el funcionamiento del script modem_do.

b) Observa que la funcin addnoise es llamada utilizando la opcin details=n. En qu cambia su funcionamiento con respecto a la llamada con details=Y ? Justifica las operaciones realizadas.

c) Ejecuta inicialmente el script para una nica velocidad y factor de roll-off para comprobar que todo funciona correctamente. Recuerda que debes utilizar secuencias de al menos 10000 bits para obtener resultados fiables.

d) Ejecuta el script completo (para todas las velocidades y factores de roll-off) y dibuja los resultados obtenidos con la aplicacin tableplot. Comenta los resultados.

Recuerda que cuanto ms larga sea la secuencia mejores resultados obtendrs. Con 100000 bits puedes obtener resultados aceptables en un tiempo de ejecucin razonable (comprubalo). Para secuencias ms largas (106 bits), puedes ejecutar el script en background con objeto de que puedas recoger los resultados en otra sesin posterior. Para ejecutar el script en backgroud, basta con llamar al programa de la siguiente forma:

usuario@bops> modem_do &

Este comando pone el proceso en ejecucin en background. Para retornar el proceso a foreground, basta con ejecutar:

usuario@bops> fg

Para comprobar que el script se est ejecutando correctamente puedes visualizar el contenido del fichero de salida outtable_modem.txt con el comando tail:

usuario@bops> tail -f outtable_modem.txt

_65161788.unknown

_65100020.unknown