5.2 Arquitectura software:
La figura 5-7 muestra la arquitectura software del sistema de modulación/demodulación FSK implementado en esta práctica:
Figura 5-11. Arquitectura software del modulador/demodulador FSK.
Se ha modificado la arquitectura utilizada en lab4 añadiendo la parte de demodulación.
Modificaciones:
En el ejecutivo cíclico, se incluye una llamada a la función
lab5()que implementa el algoritmo de demodulación FSK. La llamada se produce solo si hay muestras disponibles en el buffer circular de recepcióng_rx_buffer.En la rutina de servicio de interrupción del puerto I2S, se incluye el código que se encarga de enviar al buffer las muestras obtenidas por el códec WM8731.
5.2.1 Comunicación bucle principal - ISR:
La comunicación entre el bucle principal y la rutina de servicio de
interrupción del puerto I2S se realiza mediante dos buffers circulares de 8
muestras: g_tx_buffer y g_rx_buffer. Se trata de dos instancias de la clase
CIRC_BUF definida en lab4.
Figura 5-12. Clase CIRC_BUF para gestión de buffers circulares.
Modulador:
El funcionamiento es el siguiente:
El bucle principal genera las muestras de la señal FSK y las almacena en el buffer circular
g_tx_buffer.La ISR del puerto I2S extrae las muestras del buffer circular
g_rx_buffery las envía al códec WM8731.
Demodulador:
El funcionamiento es el siguiente:
La ISR del puerto I2S obtiene muestras del codec WM8731 y las almacena en el buffer circular
g_rx_buffer.El bucle principal extrae las muestras del buffer circular
g_rx_buffery ejecuta el algoritmo de demodulación FSK.
Nota
Para evitar condiciones de carrera en los accesos al buffer circular, se deshabilitan las interrupciones al acceder al buffer desde el bucle principal.