TEEL 4204 – Lab Comunicaciones II Source/Error Detect Nombre(s): Fecha: Objetivo En este laboratorio comenzaremos con un simulador de BPSK y QPSK que nos muestra la constelación de señales y calcula el BER (bit error rate). El usuario puede escoger la potencia del ruido blanco Gaussiano (AWGN) añadido a la señal. Los estudiantes deberán sustituir dos de los VI’s, el source.vi y el error_detect.vi, por sus propios diseños. En futuros laboratorios otros VI dentro de este simulador serán sustituidos por los diseñados por los estudiantes. Procedimiento 1. Bajar de la página de internet del profesor, www.aprende-pr.com, los siguientes VI’s y LLB’s: awgn_simple_sim_work_copy.vi student_source_work_copy.vi student_error_detect_work_copy.vi control_type_defs digital_comm Es importante que todos los anteriores archivos queden ubicados en el mismo directorio de la PC. 2. La Figura1 muestra el diagrama de bloque para el awgn_simple_sim_work_copy.vi. Corra este vi y cerciórese que funciona. 3. Antes de proceder a reemplazar el source.vi por un nuevo vi de su propio diseño es importante tener en cuenta cuáles son los inputs y cuáles son los outputs. Inputs En el diagrama de bloque podemos observar que el source.vi tiene como input el output de un cluster formado por packet length (bits) con formato I32 (i.e. entero de 32 bits), y modulation type, con formato alfanumérico. Outputs 2 En el diagrama de bloque podemos observar que el source.vi tiene como output un array de unsigned bytes representando los bits transmitidos. Figura 1: Diagrama de bloque del awgn_simple_sim_work_copy.vi 4. Antes de proceder a reemplazar el source.vi por un nuevo vi de su propio diseño también es importante tener en cuenta que la función del source.vi es generar una secuencia aleatoria de bits (i.e. 0’s y 1’s). 5. Teniendo en mente los puntos 3 y 4, ahora procederemos a diseñar un nuevo vi que reemplazará al source.vi. Usted no empezará de cero diseñando este nuevo vi. Use como punto de partida un template, student_source_work_copy.vi. La Figura 2 muestra el diagrama de bloque para el student_source_work_copy.vi. 3 Figura 2: Diagrama de bloque para student_source_work_copy.vi 6. Le vamos a proveer una serie de hints para completar su diseño. Haga una búsqueda de generadores aleatorios de bits (i.e. generate bits). En dicho generador aleatorio de bits será necesario especificar el número total de bits (i.e. packet lenght), y una semilla para alimentar el generador aleatorio. Lo importante de dicha semilla es que cada vez que se ejecute dicha porción del programa, la semilla sea distinta. Un random number generator capaz de generar un entero distinto cada vez que se ejecute podría proveer dicha semilla. Recuerde que si un random number generator genera números entre 0 y 1 con distribución uniforme, es posible convertir dichos números de decimales a enteros multiplicando por un número entero que sea grande y luego haciendo una conversión de número real a entero. Cerciórese que el número de posibles enteros sea grande. En caso de duda, consulte con su profesor. 7. Una vez tenga su nuevo vi que reemplazará el source.vi en el programa awgn_simple_sim_work_copy.vi, haga un click right en el diagrama de bloque del awgn_simple_work_copy.vi para buscar en el disco duro de su PC el nuevo vi, escoja la opción “Select a VI”, desconecte el antiguo source.vi y conecte el nuevo vi que lo reemplazará. Corra el awgn_simple_work_copy.vi 4 y cerciórese que funciona. De ser así, proceda con el próximo paso. De lo contrario, haga un debugging, identifique y corrija los errores. 8. Ahora procederemos con el diseño del vi que reemplazará al error_detect.vi. 9. El error_detect.vi ejecuta las siguientes tareas: Compara la secuencia original de bits (sin ruido) enviada por el transmisor con la secuencia de bits detectados por el bloque “decode” en el receiver que a su vez recibió los bits con errores pues el canal añadió ruido. Suma todos los errores detectados y divide dicha suma por el total del número de bits para así calcular el BER (bit error rate). 10. Usted no empezará de cero a diseñar el error_detect.vi. Use como punto de student_error_detect_work_copy.vi. El diagrama de bloque de dicho vi se muestra en la Figura 3. Figura 3: Diagrama de bloque para student_error_detect_work_copy.vi partida un template, 5 11. Le vamos a proveer una serie de hints para completar su diseño. Tanto el “key bit sequence” como el “input bit sequence” son arrays que contienen N bits, pero el programa no sabe de antemano el valor de N. Por suerte, dentro de la paleta de arrays hay un bloque que es capaz de identificar el número de elementos en un array. Para detectar errores es necesario comparar cada bit del “key bit sequence” con cada bit del “input bit sequence”. Esto es, será necesario en forma ordenada extraer cada bit de cada uno de los dos arrays para hacer la comparación de bit por bit. Cuando la salida de un array hace contacto con el “for loop”, el usuario puede escoger un “auto-indexed tunnel” para que con cada iteración del “for loop” se escoja un elemento de dicho array. Dentro de la paleta “comparison” hay un bloque que compara sus dos inputs. Si coinciden, genera un output lógico (Booleano) que con otro bloque que se encuentra en la paleta “Boolean” puede ser convertido a entero con valores 0 ó 1. Esto es, cada vez que los inputs difieran, se puede generar un “1”, los cuales, mediante otro bloque en la paleta “Numeric” pueden ser sumados. Si dividimos el número total de bits con error entre el número total de bits, obtenemos el BER. 12. Sería muy conveniente poder observar como varía el BER en función de la potencia del ruido. Para ello, siga las siguientes instrucciones: En su nuevo programa que reemplaza al awgn_simple_sim_work_copy.vi pero que incluye el nuevo source.vi y el nuevo error_detect.vi, asigne 10,000 al número de iteraciones. Cuando la potencia del ruido es baja, necesitamos muchas iteraciones para que ocurran los errores, de lo contrario, no los observamos. Comenzando en -10 dB y en incrementos de 1 dB hasta llegar a 0 dB, para cada valor de la potencia del ruido corra el programa y anote en la siguiente tabla el correspondiente BER. Use modulación BPSK y QPSK. 6 noise power in dB 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 BER - BPSK BER - QPSK 13. Dada una potencia de ruido, ¿cuál de las dos modulaciones, BPSK o QPSK, sufre de un peor BER? ¿A qué se debe esto? Explique. 14. Envíe el nuevo vi que reemplaza al awgn_simple_sim_work_copy.vi pero que incluye el nuevo source.vi y el nuevo error_detect.vi a ricardo.mediavilla@upr.edu. En su correo electrónico incluya el nombre de todos los participantes en su estación de trabajo.