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:

fig11

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ón g_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.

fig12

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_buffer y 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_buffer y 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.