Demodulación de señales digitales mediante microcontroladores PIC18F4550 by Karel Toledo de la Garza
El presente artículo completo lo puedes encontrar en el siguiente link: Demodulación de señales digitales mediante microcontroladores PIC18F4550
Algunos de los materiales que utilizarán los puedes encontrar en nuestra tiena online Ferrustronix:
RESUMEN
El presente artículo aborda el empleo de un bloque detector de envolvente para demodular señales BFSK (Binary Frequency Shift Keying, modulación digital de dos frecuencias) que pueda ser usado en aplicaciones donde se desconoce el tiempo del símbolo de la fuente. Presenta una estructura interna caracterizada por cuatro filtros del tipo FIR (Finite Impulse Response, respuesta finita al Impulso), que son inherentemente estables y se implementan siempre por una misma ecuación de diferencias genérica. Para validar el demodulador, se implementa en un PIC18F4550 de microchip interconectado con una computadora a través del puerto USB. Para gestionar la operación del sistema, se desarrolla en la computadora un software en Matlab que incluye la estimación de las frecuencias de la modulación a través del algoritmo de la transformada rápida de Fourier, así como el envío y recepción de las señales moduladas y demoduladas. En el microcontrolador se realiza la convolución entre las muestras de entrada a los filtros y sus coeficientes, apoyándose en dos tablas almacenadas en memoria que sustituyen la operación de multiplicación, esto con el objetivo de asegurar la rapidez de respuesta del sistema. La solución final permite demodular señales BFSK a través de la interconexión de Matlab con el PIC18F4550. Se efectúa un análisis costo-beneficio teniendo en cuenta la demora de procesamiento en el PIC, el consumo de memoria de código y de datos y se compara con los resultados obtenidos en la implementación sobre un FPGA (Field Programmable Gate Array, arreglo de compuertas programables) Spartan3E de Xilinx.
INTRODUCCIÓN
La modulación digital es el proceso mediante el cual se incorpora la información que poseen determinados símbolos digitales en forma de onda compatibles con las características del canal; lo que se logra variando la fase, amplitud o frecuencia de una señal denominada portadora. Este proceso se lleva a cabo en el bloque transmisor, que es el encargado de acoplar la señal al canal de comunicaciones para combatir efectos indeseables, tales como la distorsión de amplitud, el ruido, la atenuación y la interferencia. El receptor debe realizar el proceso inverso para así recuperar el mensaje.
FSK (Frequency Shift Keying) es una de las modulaciones digitales con empleo en las comunicaciones satelitales y en los enlaces inalámbricos [1,2]. Entre las modulaciones empleadas se encuentra BFSK en la cual, la información va contenida en la frecuencia instantánea de la portadora [3], que cambia de acuerdo con dos símbolos digitales: 0 y 1; los cuales se asocian cada uno a frecuencias distintas.
A la portadora se le asignan dos frecuencias diferentes, cada una destinada a identificar un símbolo durante el tiempo que dure este en la fuente. En la figura 1 se presenta un ejemplo de la modulación BFSK; la gráfica superior muestra la información binaria o mensaje y la inferior el tono modulado donde la frecuencia cambia para cada símbolo de información.
El tiempo que dura el símbolo en la fuente o el bit coinciden debido a que es una modulación binaria.
Las señales con las cuales se opera, se encuentran almacenadas en formato para archivos de sonido tipo Microsoft WAVE (extensión.wav), de las cuales no se conoce el tiempo de símbolo y esto conlleva utilizar métodos que prescindan de este parámetro para demodular.
CONFORMACIÓN DEL SISTEMA EN EL PIC
El demodulador de la figura 2 es muy sugerente para su implementación en un microcontrolador, con vistas a emplearse en un sistema portable que funcione en tiempo real. La propuesta de sistema que se muestra en la figura 3, con motivos de validación consiste en emplear una computadora que almacene las señales moduladas y reciba las señales demoduladas de un PIC18F4550 de Microchip.
Ambos bloques se comunican entre sí mediante una interfaz USB. En la computadora se desarrolló un programa en Matlab que permite controlar la operación del sistema. Esta aplicación carga la señal de un archivo .wav para luego estimar las frecuencias de trabajo f1 y f2, hallando los máximos de la transformada rápida de Fourier (FFT). Estos valores de frecuencia son utilizados para obtener los coeficientes correspondientes a cada filtro del detector de envolvente.
Los coeficientes de los filtros se calculan mediante el empleo del método de la ventana de Kaiser, la cual requiere de dos parámetros: que define la forma de la ventana y N = M + 1 que es el número de muestras o longitud. Variando estos parámetros se puede ajustar el ancho del lóbulo principal y la amplitud de los lóbulos secundarios, lo cual permite controlar el efecto Gibbs. Este método es superior a los otros de ventana dado que permite, a través de la variación de los parámetros, ajustar sus características para así lograr las especificaciones del filtro deseadas.
El detector de envolvente necesita de la conformación de cuatro filtros FIR, dos para cada rama.
La respuesta del filtro y(n), depende de la suma de productos de las entradas retardadas y los coeficientes wi del filtro en cuestión. En este diseño se supone conocida la amplitud de las señales a demodular, en este caso normalizadas entre -1 y 1. El detector de envolvente está conformado por dos ramas, como se muestra en la figura 2.
La implementación de este esquema permite fijar el umbral de detección a la salida, esto independiente de la amplitud de la señal recibida. No obstante, en los casos en los cuales la amplitud de la señal recibida sea conocida es posible implementar una sola rama del detector, lo cual reduce el consumo de hardware a la mitad.
Para acelerar el procesamiento en el PIC al obtener la respuesta de los filtros utilizando la ecuación (2), se propone emplear datos enteros con precisión de 8 bits con signo en cada una de las operaciones, además de definir la multiplicación y adición por medio de tablas almacenadas en la memoria de datos del PIC. Primero, los coeficientes calculados en Matlab y la señal a demodular se llevan a escala de 42, así por ejemplo, se asocia el 42 con el máximo de la señal de entrada. Esta escala garantiza que no ocurra un desbordamiento al efectuarse la multiplicación del máximo de la señal de entrada por el máximo valor de los coeficientes y por tanto el resultado final no supera 127. Con estos nuevos coeficientes se conforma una matriz que contiene tantas filas como cantidad de coeficientes y 84 columnas que representan todos los posibles valores positivos y negativos que puede tomar la señal modulada. En cada fila se almacenan los resultados de multiplicar el coeficiente correspondiente con cada posible valor a tomar por la señal modulada. Las dos matrices, una para el filtro pasabanda y otra para el pasabajo, son enviadas inicialmente al microcontrolador. Se desea sustituir la operación de multiplicar números con precisión de punto flotante por una búsqueda del valor correspondiente en la tabla almacenada en memoria de código. La envolvente obtenida es enviada a la computadora a través de la interfaz USB.
Para medir el tiempo de procesamiento en el PIC se utiliza a Timer0 como temporizador en modo de 16 bits y trabajando con un oscilador a 48 MHz. Cada vez que se desborda el timer se activa la interrupción y se incrementa una variable que indica cuántas veces se ha ejecutado la subrutina, siendo posible al terminar el procesamiento leer los registros de conteo del Timer0 y el valor de la variable para así estimar la demora de procesamiento de la señal BFSK.
CONFORMACIÓN DEL SISTEMA EN EL FPGA
El diseño consiste en emplear una computadora que almacena las señales moduladas y recibe las señales demoduladas por una tarjeta Xilinx Starter Kit con circuito FPGA Spartan3E. Ambos bloques se comunican entre sí mediante una interfaz serie RS-232 o Ethernet. En la computadora se desarrolló un programa en Matlab, con una interfaz gráfica de usuario que permite controlar la operación del sistema y que presenta además un panel de control donde se seleccionan las opciones de demodulación mediante las funciones propias del Matlab o mediante el empleo del circuito FPGA.
Cuando se activa la acción de efectuar la demodulación por medio del FPGA, el programa calcula de forma automática, los coeficientes de los filtros a partir de la determinación de las frecuencias de trabajo f1 y f2, de la misma manera que en el sistema con PIC. Los coeficientes de cada uno de los filtros se calculan empleando el método de la ventana de Kaiser. Estos coeficientes y la señal a demodular se envían al circuito FPGA mediante la comunicación RS-232 o Ethernet, ambas variantes fueron implementadas. A medida que el demodulador BFSK situado en el circuito FPGA procesa las señales, se envían las envolventes de las mismas hacia la aplicación de Matlab.
Por último, la etapa de decisión puede ejecutarse en Matlab y se determina la señal demodulada.
En el circuito FPGA se implementa un procesador MicroBlaze configurado con varios periféricos conectados al bus PLB: el controlador estándar de interfaz RS-232 xps_uartlite y el de Ethernet xps_ethernetlite, además del módulo IP del demodulador BFSK especialmente diseñado para esta investigación. Para este diseño se consume el 28 % de los Slices del Spartan-3E y 3 de sus 20 multiplicadores de 18 bits.
Microblaze es el que se encarga de realizar en el FPGA, todas las operaciones de convolución entre la señal y los coeficientes del filtro correspondiente, además de gestionar la comunicación con la computadora. Primeramente se cargan los coeficientes de los filtros calculados en Matlab hacia el FPGA. Se comienza por enviar desde Matlab a Microblaze el número de coeficientes de cada uno de los filtros FIR que se emplearán. En Microblaze se crea un arreglo para almacenarlos en la memoria interna del FPGA.
Al término de recibir cada secuencia de coeficientes, el procesador MicroBlaze envía una confirmación al programa Matlab para indicar que está listo para recibir nuevas secuencias. De esta forma se envían todos los coeficientes de cada tipo de filtro. Luego de la recepción de todos los coeficientes solo falta decodificar la dirección apropiada en el módulo IP Detector de Envolvente y enviarle los coeficientes de cada filtro y sus señales correspondientes.
BIBLIOGRAFÍA
de la Garza, K. T., & Gómez, J. T. (2013). Demodulación de señales digitales mediante microcontroladores PIC18F4550. Revista Cubana de Ingeniería, 4(3), 61-66.



Comentarios recientes