Source_Error_Detect

Anuncio
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.
Descargar