Simulación e implementación de la modulación BPSK en una FPGA Xilinx Spartan 3 xcs200-4ftp256
Enviado por Carlos E. Carrión
- Abstracto
- Descripción
- Implementación del modulador y demodulador en la tarjeta FPGA spartan3 de Xilinx
- Conclusiones
- Referencias
El presente trabajo presenta la simulación de la modulación BPSK usando el programa Simulink de Matlab, así como su implementación en la tarjeta FPGA (Arreglo de compuertas programables por el usuario) Spartan 3 de la compañía Xilinx.
Se muestra los pasos realizados en la simulación tanto de la modulación como de la demodulación y las herramientas necesarias para poder implementar la simulación en la tarjeta. Se indican además pautas para la realización de modulaciones FSK y OOK.
Modulación BPSK
En esta modulación se tiene como resultados posibles dos fases de salida para la portadora con una sola frecuencia. Una fase de salida representa un 1 lógico y la otra un 0 lógico. Conforme la señal digital de entrada cambia de estado, la fase de la portadora de salida se desplaza entre dos ángulos que están 180° fuera de fase.
Transmisor de BPSK
La figura siguiente muestra un diagrama de bloques simplificado de un modulador de BPSK. La señal codificada ingresa a un multiplexor el mismo que conmuta la fase de la señal portadora, dependiendo de la condición lógica de la entrada digital, la portadora se transfiere a la salida, ya sea en fase o 180° fuera de fase, con el oscilador de la portadora de referencia.
El espectro de salida de un modulador de BPSK es, sólo una señal de doble banda lateral con portadora suprimida, donde las frecuencias laterales superiores e inferiores están separadas de la frecuencia de la portadora por un valor igual a la mitad de la razón de bit. En consecuencia, el mínimo ancho de banda requerido, para permitir el peor caso de la señal de salida del BPSK es igual a la razón de bit de entrada. La siguiente figura muestra la fase de salida contra la relación de tiempo para una forma de onda BPSK.
Figura 1: Modulación BPSK
Receptor de BPSK
El esquema siguiente muestra el diagrama de bloques de un receptor de BPSK.
La señal de entrada puede ser +cos(wt) ó –cos(wt). El circuito de recuperación detecta y regenera una señal de portadora, tanto en frecuencia como en fase, con la portadora del transmisor original. El modulador balanceado es un detector de producto; la salida es el producto de las dos entradas (la señal de BPSK y la portadora recuperada). Debido a que se tiene como posibles salidas las señales cos(wt) y –(coswt), entonces al pasar por el detector de producto se tendrá los siguientes resultados:
cos2(wt) = ½ + ½ cos(2wt)
cos2(wt) = – ½ – ½ cos(2wt)
como se necesita solo la parte continua entonces se utiliza un filtro pasa-bajas (LPF) el mismo que separa los datos binarios recuperados de la señal demodulada compleja [1].
Modulador BPSK
Como la simulación se realiza utilizando Simulink y los componentes de System Generator, es necesario conocer las siguientes herramientas necesarias para la simulación e implementación.
Herramientas de Simulink
- Pulse Generator: simula un tren de pulsos.
- Scope: osciloscopio utilizado para visualizar los resultados.
- Sine Wave: Genera funciones senoidales.
Herramientas de System Generator
- Mcode: Hace una llamada a un archivo .m de Matlab y lo ejecuta dentro de la simulación [2].
- Gateway In: Hace una aproximación al comportamiento de una señal en hardware.
- Gateway Out: Regresa una aproximación del comportamiento de una señal en hardware al modo simulación.
- Mult: Realiza la multiplicación una o más entradas.
- FIR: Simula un Filtro FIR, haciendo una llamada a la herramienta FDATool de Matlab.
- System Generador: Provee control del sistema y parámetros de simulación, y es usada para invocar al código generado.
- Resource Estimator: Presenta los recursos de la tarjeta utilizados en la simulación del circuito.
- FDATool: Interfaz que permite configurar las características del filtro
System Generator
Es una herramienta de software que permite crear y verificar diseños de hardware para FPGAS de Xilinx, funciona en conjunto con Simulink y Matlab.
Además permite la inclusión de herramientas DSP para diseñar con FPGAs, generación automática de código HDL a partir de un modelo en Simulink y permite al usuario crear sus propias bibliotecas.
Simulación:
La primera fase es la realización del modulador basándose en el siguiente esquema:
Figura 2: Modulador BPSK
La señal codificada es ingresada en el bloque (Mcode), el mismo que funciona como multiplexor entre las dos señales portadoras (cos(t) y -cos(t)) dependiendo de los valores binarios de la señal a transmitirse.
Este bloque Mcode hace una llamada un archivo .m el cual contiene la programación del multiplexor de la siguiente forma:
function salida = BPSKmultiplex
(ent_codif,porta,porta_despl);
if ent_codif==1;
sal = porta;
else
sal = porta_despl;
end
Este código, permite obtener una señal portadora (porta) de salida cuando la entrada es un nivel de voltaje alto, un coseno en este caso, y una señal coseno desfasado (porta_despl) de salida cuando la entrada es un nivel de voltaje bajo. Este estado alto o bajo lo da la señal que contiene la información.
La señal a la salida del multiplexor es la modulada y está lista para ser lanzada al canal.
En la parte superior de la siguiente gráfica se muestra la señal que contiene la información y en la inferior, la señal modulada.
Figura 3: Señal de información-Señal modulada
Demodulador BPSK
La demodulación se la realiza en base al esquema que se describe a continuación.
Figura 4: Demodulador BPSK
Para demodular la señal proveniente del canal, se utiliza un bloque (Mult), el mismo que multiplica la señal por la portadora recuperada.
El filtro FIR pasa-bajas separa la señal continua de amplitud + ½ recuperada de la señal demodulada compleja y permite seleccionar la señal de frecuencia cero (+1/2 o -1/2).
Este filtro se obtiene haciendo una llamada a la herramienta de Matlab FDATool, interfaz que permite diseñar un filtro pasabajas.
Debido a que a la salida del filtro existen señales con ½ de la amplitud y con rizado en el borde de cada pulso, se colocará un bloque "comparador" que además de proporcionar niveles de voltaje de unos y ceros, evitará el rizado de tales pulsos. El código del archivo .m del comparador se presenta a continuación:
function sal = BPSKcompa (ent)
If ent > 0
sal = 1;
else
sal = 0;
end
Este código, permite obtener a su salida un nivel de voltaje 1, cuando la entrada (ent) es mayor a cierto voltaje de referencia en este caso 0V y un nivel de voltaje 1 cuando la entrada (ent) es menor a dicho voltaje de referencia.
Además se debe mencionar que para la simulación del canal de transmisión se colocará un bloque generador de ruido Gaussiano blanco.
A continuación, se presenta el proceso de demodulación simulado.
Figura 5: Proceso de Modulación-Demodulación. Resultados arrojados por el software
- La primera figura representa la señal codificada contenedora de la información.
- La segunda figura representa señal modulada que se envía al canal.
- La tercera figura muestra la señal modulada con ruido.
- La cuarta figura representa la señal recuperada a la salida del filtro pasabajas.
- Finalmente la quinta figura representa la señal a la salida del comparador, y es la señal contenedora de información recuperada. Se puede observar que ésta señal tiene cierto retrazo debido al procesamiento del computador
Implementación del modulador y demodulador en la tarjeta FPGA spartan3 de Xilinx.
Para poder implementar los moduladores en la tarjeta Sarpatn3 es necesario conocer conceptos básicos sobre cual es su funcionamiento y su estructura interna:
(FPGA) Matriz de compuertas lógicas programables por el usuario
Un FPGA consiste en arreglos de varios bloques programables (bloques lógicos) los cuales están interconectados entre si y con celdas de entrada/salida mediante canales de conexión verticales y horizontales [3].
Una FPGA presenta las siguientes características:
- Consumo medio de Potencia, aunque hay familias especializadas en bajo consumo
- Velocidad intermedia
- Fiabilidad alta
- Tiempo de desarrollo muy bajo.
- Metodología sencilla
- Equipamiento sencillo
- Aumentan la confidencialidad de las placas [4]
Figura 6: Arquitectura Básica de un FPGA
Spartan-3
Las FPGAs Xilinx Spartan™ son ideales para las aplicaciones de bajo costo y alto volumen y son designadas como reemplazos para arreglos de compuertas de lógica fija y para productos estándar de aplicación específica (ASSP), productos como sets de chips para interfase de bus [5].
Figura 7: Foto de la Sapartan-3
La foto muestra la tarjeta que se utilizará en la implementación de las simulaciones. Los dispositivos Spartan se caracterizan por tener una arquitectura flexible y regular que se compone de un arreglo de bloques lógicos configurables (Configurable Logic Blocks o CLBs), rodeados por bloques de entrada/salida programables (programmable Input/Output Blocks o IOBs).
Herramientas del programa para la Implementación
Para la implementación de los moduladores OOK, FSK y BPSK, ya simulados, se utilizará una herramienta ofrecida por Xilinx, denominada JTAG Co-Sim, bloque que permitirá la co-simulación del diseño elaborado en la tarjeta Spartan-3.
Figura 8: Bloque JTAG Cosimulation
En este bloque se puede observar que ya se encuentran listas las salidas y entradas para su uso, de tal forma que nos facilite el trabajo.
Este bloque lo conseguiremos con doble click en el bloque system generator y escogiendo las opciones de simulación más convenientes.
Una vez agregado al diseño, debemos verificar que la tarjeta se encuentre correctamente conectada al computador. Luego ejecute.
Implementación en la Tarjeta Spartan-3
El diseño completo es presentado en la gráfica siguiente [6].
Figura 9: Diagrama de bloques del proceso Modulación-Demodulación
El resultado de la simulación es comparada con los resultados arrojados por la tarjeta lo que nos permite corroborar el acercamiento a la realidad de la simulación. La siguiente grafica presenta los resultados obtenidos de la implementación en la tarjeta:
Figura 10: Proceso de Modulación-Demodulación. Resultados arrojados por la tarjeta.
Se puede observar que prácticamente los resultados obtenidos en la tarjeta son los mismos que se obtuvo en la modulación lo que nos da como referencia que la simulación tiene un gran acercamiento a la realidad.
Así como se ha realizado la simulación e implementación en la tarjeta esta modulación, también es posible realizar cualquier otra simulación. Como incentivo al lector a que conozca mas sobre estas herramientas se da pautas para la realización de las modulaciones FSK y OOK las mismas que guardan un parecido común lo cual facilita su implementación.
Primeramente hay que tener presente que en la modulación FSK lo que varía no es la fase de la señal, sino la frecuencia lo que ase podría realizar utilizando un bloque que no contenga una portadora desfasada sino a una portadora de frecuenta diferente. Del mismo modo en la modulación OOK se puede implementar teniendo en cuenta que para el cambio de valor binario de la señal codificada se utiliza una señal portadora para el valor de 1 y una señal de cero cuando la portadora vale 0. Esta parte se la facilita utilizando programación en Matlab y haciendo una llamada a través de un bloque Mcode.
- Las herramientas de Simulink ofrecen una gran facilidad en lo que es simulaciones de sistemas de comunicación en general.
- Gracias a las herramientas mencionadas en el presente paper se ha simplificado el proceso que comprende el pasar de simulación a implementación de diseños, sin la necesidad de ser un Ingeniero en hardware.
- Se puede observar que el uso de la herramienta Mcode de System Generator, no ofrece ventajas tales como minimizar el uso de recursos de la tarjeta y la simplicidad de diseño.
- Dado que los resultados obtenidos en hardware son dependientes del diseño en software, es mucho más sencillo realizar cambios en estos resultados por medio del software, incluso después de terminado el diseño y su implementación, ítem que es considerado uno de los más importantes en el desarrollo de este tipo de diseños.
[1] SISTEMAS DE COMUNICACIÓN DIGITALES Y ANLALÓGICOS, Leon W. Couch, Quinta Edición.
[2] http://www.xilinx.com/products/software/sysgen/app_docs/user_guide_Chapter_7_Section_3.htm
[3] INTRODUCCIÓN A LOS DISPOSITIVOS FPGA. ANÁLISIS Y EJEMPLOS DE DISEÑO, Bozich Eduardo Carlos
[4] DISPOSITIVOS LÓGICOS PROGRAMABLES, CAPII, Torres Valle Francisco
[5] http://www.xilinx.com/products/silicon_solutions/fpgas/spartan_series/spartan3_fpgas/index.htm
[6] Workshop Xilinx University Program, ISTEC, Pontificia Universidad Javeriana de Cali Colombia (PUJ), University of New México, RedDSP – PUJ-UTPL, Ing. Ferney Amaya, Ing. Alonzo Vera.
Johanna S. Ruque*,
David I. Ruiz*,
Carlos E. Carrión&
Escuela de Electrónica y Telecomunicaciones,
Grupo de Electricidad y Sistemas Electrónicos
Universidad Técnica Particular de Loja