ESCUELA SUPERIOR DE INGENIER´IA
MEC ´
ANICA Y EL´
ECTRICA
“Desarrollo e Implementaci´
on de un Sistema de
Localizaci´
on Geogr´
afica en FPGA”
TESIS
QUE PARA OBTENER EL T´
ITULO DE:
“INGENIERO EN COMUNICACIONES Y
ELECTR ´
ONICA”
Presenta:
C´
esar Luis P´
erez Bautista
Asesor:
Ra´
ul Ruiz Meza
´Indice General III
Lista de Figuras VII
Lista de Tablas XI
Objetivos XIII
Introducci´on 1
1. Planteamiento del Problema. 3
2. Teor´ıa Relacionada. 9
2.1. Sistema de Posicionamiento Global. . . 9
2.1.1. Conceptos B´asicos de un Sistema de Posicionamiento. . . 10
2.1.2. Segmento de Control del Sistema GPS . . . 14
2.1.3. C´odigos y Frecuencias . . . 17
2.1.4. Protocolo de Comunicaci´on NMEA . . . 17
2.1.5. M´odulo Receptor GPS RGM-3000. . . 22
2.2. Arreglo de Compuertas Programables en Campo. . . 25
2.2.1. Estructura de un FPGA . . . 25
2.2.2. Configuraci´on de un FPGA. . . 34
2.2.3. Tarjeta de Desarrollo Spartan 3E . . . 36
2.3. Pantallas TFT-LCD. . . 43
2.3.2. Pantalla LQ043T3DX02. . . 45
2.4. SD Card. . . 49
2.4.1. Caracter´ısticas de la Tarjeta SD. . . 49
2.4.2. Protocolo de Comunicaci´on SD. . . 51
2.4.3. Descripci´on del Funcionamiento. . . 63
2.4.4. Sistema de Archivos. . . 68
2.5. Formatos de Imagen. . . 71
2.5.1. Formato de Mapa de Bits (BMP). . . 71
2.6. Herramientas de Software. . . 75
2.6.1. Proceso de Desarrollo de una Aplicaci´on en FPGA. . . 75
2.6.2. Ambiente integrado de Software. . . 79
3. Desarrollo del Sistema de Localizaci´on Geogr´afica. 83 3.1. Control de la pantalla TFT-LCD. . . 84
3.1.1. Interfaz F´ısica. . . 84
3.1.2. Software de control en VHDL. . . 90
3.1.3. Resultados del Control Implementado. . . 92
3.2. Control del Modulo RGM-3000. . . 95
3.2.1. Interfaz F´ısica. . . 95
3.2.2. Software de control en VHDL. . . 96
3.2.3. Resultados del Control Implementado. . . 99
3.3. Control de la Tarjeta SD. . . 103
3.3.1. Interfaz F´ısica. . . 103
3.3.2. Software de control en VHDL. . . 104
3.3.3. Resultados del Control Implementado. . . 116
3.4. Control de la Memoria MT46V32M16. . . 119
3.4.1. Interfaz F´ısica. . . 119
3.4.2. Software de control en VHDL. . . 120
3.4.3. Resultados del Control Implementado. . . 127
3.5. Integraci´on de Elementos Para Implementar el SILOG. . . 128
3.5.2. Obtenci´on, Decodificaci´on y Desplegado de Mapas Digitales. . . 134
4. Implementaci´on Final y Resultados del SILOG. 141
4.1. Implementaci´on del SILOG. . . 141
4.2. Resultados Observados. . . 147
4.3. An´alisis de los Resultados. . . 150
Conclusiones y Lineas Futuras. 153
Ap´endice A C´odigos en VHDL. 155
1.1. Diagrama a Bloque del Sistema Propuesto . . . 5
1.2. Diagrama del Sistema Representando las Conexiones F´ısicas. . . 8
2.1. Posici´on Desconocida (Plano unidimensional) . . . 10
2.2. Localizaci´on de un punto en un espacio bidimensional . . . 11
2.3. Intersecci´on de tres esferas, dos posibilidades de ubicaci´on del puntox. . . 11
2.4. Cuatro sat´elites son al menos necesarios para ubicar al usuario mediante la obtenci´on de la distancia sat´elite-usuario basado en tiempos de transmisi´on y recepci´on. . . 14
2.5. Segmento de Control. Estaciones terrestres: 1. Estaci´on Principal Base de la fuerza a´erea Falcon, Colorado Springs; 2. Estaci´on de Monitoreo Hawaii; 3. Estaci´on de Monitoreo Cabo Ca˜naveral; 4. Es-taci´on de Monitoreo Isla Asunci´on; 5. Estaci´on de Monitoreo Diego Garc´ıa; 6. Estaci´on de Monitoreo Kwajalein . . . 15
2.6. Organizaci´on de ´orbitas satelitales y la separaci´on ente cada sat´elite en una ´ orbita . . . 16
2.7. Modulo receptor RGM-3000 . . . 22
2.8. Estructura de un FPGA, Bloques Internos. . . 26
2.9. (a) CLBs y Slice dentro de un FPGA; (b) Componentes dentro de un Slice. . 27
2.10. Bloque de Entrada/Salida simplificado. . . 29
2.11. Esquema de un Administrador de Reloj. . . 32
2.12. Tarjeta Spartan 3E Starter Kit . . . 37
2.13. Conectores RS-232 en la tarjeta S3E. . . 41
2.14. Ubicaci´on de la memoria DDR SDRAM en la tarjeta Spartan 3E. . . 42
2.16. Panel TFT-LCD . . . 44
2.17. Pantalla TFT-LCD LQ043T3DX02 f´ısicamente. . . 45
2.18. Se˜nales de Sincronizaci´on para el dispositivo LQ043T3DX02. . . 48
2.19. Diferentes tama˜nos de la tarjeta SD. . . 50
2.20. Relaci´on de conexiones para la interfaz f´ısica SD Bus y SPI Bus. . . 51
2.21. Operaci´on COMANDO-RESPUESTA. . . 52
2.22. Lectura de un Bloque de Datos . . . 53
2.23. Formato de un Comando . . . 54
2.24. Generador y Comprobador Binario de CRC7 . . . 55
2.25. Formatos posibles para una respuesta . . . 55
2.26. Paquete de datos com´un. . . 57
2.27. Paquete de datos amplio. . . 58
2.28. Generador y Verificador de CRC16 . . . 58
2.29. Diagrama del proceso de inicializaci´on e identificaci´on. . . 66
2.30. Tareas en el modo de transferencia de datos. . . 69
2.31. Estructura del Volumen FAT. . . 70
2.32. Formato del archivo BMP. . . 72
2.33. Ventana del Navegador de Proyecto. . . 81
3.1. Configuraci´on del MC34063A para un conversor de voltaje de subida. . . 86
3.2. Interfaz f´ısica entre TFT-LCD y FPGA. . . 91
3.3. Placa PCB de Interfaz de la Pantalla TFT-LCD y Spartan 3E. . . 93
3.4. Formas de Onda para el Control de la Pantalla. . . 94
3.5. Gr´afico de Carga Contra Corriente. . . 96
3.6. Conexiones necesarias para el funcionamiento del m´odulo RGM-3000. . . 97
3.7. Imagen Comparativa de Ubicaci´on. . . 101
3.8. RGM-3000 conectado a la tarjeta Spartan 3E. . . 102
3.9. Conexi´on entre FPGA y tarjeta SD. . . 104
3.10. Diagrama de M´aquina de Estados de Control . . . 105
3.11. M´aquina de Estados para el Env´ıo/Recepci´on de Datos . . . 114
3.13. Datos almacenados en la tarjeta SD. . . 117
3.14. Interfaz f´ısica entre FPGA y memoria MT46V32M16. . . 120
3.15. Diagrama del controlador de la memoria DDR-SDRAM. . . 122
3.16. Proceso de Inicializaci´on de la memoria DDR SDRAM. . . 123
3.17. Proceso de escritura en la DDR-SDRAM. . . 125
3.18. Proceso de lectura para la DDR-SDRAM. . . 126
3.19. Conexiones y Flujo de Informaci´on del Sistema Completo. . . 129
3.20. Representaci´on Binaria de Caracteres . . . 131
4.1. Ventana del Navegador de Proyecto con archivos Fuente. . . 142
4.2. Resusmen de Utilizaci´on de Recursos del FPGA XC3S500E . . . 144
4.3. Distribucion de los Componentes L´ogicos en el Dispositivo FPGA. . . 145
4.4. Ventana Principal del Software iMPACT . . . 146
4.5. Sistema en Funcionamiento. . . 148
2.1. Par´ametros de Transmisi´on del Est´andar NMEA-0183 . . . 18
2.2. Caracter´ısticas del M´odulo RGM-3000 . . . 23
2.3. Pines del M´odulo RGM-3000 . . . 24
2.4. Descripci´on de entradas y salidas del bloque IOB. . . 30
2.5. Descripci´on de entradas y salidas del DCM. . . 33
2.6. Descripci´on del conector de 40 pines en la pantalla LQ043T3DX02 . . . 46
2.7. Descripci´on del conector de 4 pines en la pantalla LQ043T3DX02 . . . 46
2.8. Contenido del Registro OCR . . . 59
2.9. Contenido del Registro CID . . . 60
2.10. Contenido del Registro SCR . . . 61
2.11. Contenido del Registro CSD . . . 62
3.1. Conexiones entre FPGA y la pantalla LQ043T3DX02 . . . 85
3.2. Valores para el dise˜no de un circuito convertidor de DC a DC de subida . . . 87
3.3. Valores te´oricos y experimentales del circuito convertidor de DC a DC de subida 94 3.4. Muestra de Valores de Voltaje y Corriente Variando la Carga Resistiva . . . . 95
3.5. Coordenadas Geogr´aficas del RGM-3000 en la cadena GPRMC . . . 100
Objetivo general
Desarrollar e implementar el prototipo de un sistema de localizaci´on geogr´afica (SILOG),
controlado por un Arreglo de Compuertas Programables en Campo (FPGA por sus siglas en
ingles), capaz de mostrar la posici´on global en pantalla junto a un mapa digital.
Objetivos Particulares.
1. Desarrollar un controlador para una tarjeta de memoria digital (SD Card) en un
Len-guaje de Descripci´on de Hardware (HDL).
2. Implementar el controlador que provee la empresa Xilinx para la memoria de acceso
aleatorio (RAM) que est´a montada en la tarjeta Spartan 3E.
3. Desarrollar un controlador de la pantalla LQ043T3DX02 en un HDL.
4. Desplegar en pantalla informaci´on de coordenadas geogr´aficas y mapas digitales.
5. Implementar el prototipo de SILOG.
6. Realizar pruebas experimentales, obtener datos relevantes para una retroalimentaci´on
El hombre se moviliza constantemente y con ´el lo deben hacer sus desarrollos tecnol´ogicos, as´ı mismo estos lo ayudan en su descubrimiento, an´alisis y despla-zamiento en espacios explorados e inexplorados.
Desde su aprobaci´on para desarrollo en 1973 hasta su puesta en funcionamiento en 1993,
con el lanzamiento a ´orbita del 24° sat´elite, el sistema de posicionamiento global o GPS por
sus siglas en ingl´es, ha tenido el objetivo de ser ´util en la navegaci´on a´erea, mar´ıtima y
terrestre [1].
La actual diversidad de hardware y software en el mercado proporciona una gran variedad
de dispositivos que utilizan la tecnolog´ıa GPS para solucionar necesidades de localizaci´on,
rastreo y/o navegaci´on. Teniendo como parte fundamental, entre otras, el sistema de
po-sicionamiento global (GPS), en este trabajo se describe el desarrollo de un Dispositivo de Localizaci´on Geogr´afica; cuya funci´on ser´a la de desplegar en una pantalla coordenadas GPS aproximadas de s´ı mismo junto con una representaci´on gr´afica de esa ubicaci´on, es decir, un
mapa digital.
El sistema aqu´ı presentado, pretende en un futuro formar parte de un sistema m´as
com-plejo que tendr´a el objetivo de automatizar o facilitar las mediciones de campo el´ectrico
requeridas en puntos geogr´aficos espec´ıficos [2].
Generalmente un dispositivo como este ser´ıa desarrollado usando un microprocesador o
microcontrolador, raz´on por la cual existen microprocesadores especializados para dispositivos
de localizaci´on o navegaci´on a trav´es de GPS. Sin embargo este trabajo plantea la alternativa
Los dispositivos de arreglos de compuertas programables en campo (FPGA), como su
nombre lo dice, est´an basados en arreglos l´ogicos de compuertas, interconectados por
inte-rruptores programables. Los FPGA ofrecen grandes ventajas a los dise˜nadores de aplicaciones
mediante complejos circuitos digitales, ya que la programabilidad de estos dispositivos
per-miten simular, e incluso desarrollar aplicaciones de manera r´apida y sencilla en las tarjetas
de desarrollo que los fabricantes proveen.
Para llevar a cabo este proyecto, se seleccion´o el circuito integrado (FPGA)XCS500E, el cual est´a montado en la tarjeta de desarrollo “Spartan 3E Starter Kit Board”y est´a fa-bricada por la empresaXilinx. Esta tarjeta fue seleccionada por sus diferentes componentes integrados, los cuales se describir´an en el cap´ıtulo 2, adem´as de la ventaja de realizar la
programaci´on del dispositivo FGPA a trav´es del puerto USB.
Los perif´ericos necesarios en este prototipo y para los que se desarroll´o un control mediante
c´odigo VHDL en el circuito integrado FPGA son: una tarjeta de memoria digital protegida
(SD Card), donde los mapas digitales son almacenados; una memoria DDR SDRAM, que servir´a de almacenamiento temporal para la informaci´on de mapas digitales; unm´odulo GPS
que a trav´es de una interfaz RS232 transmite coordenadas GPS y una pantalla TFT-LCD, en la cual se visualizan las coordenadas geogr´aficas y los mapas digitales.
Para comprender el funcionamiento de estos elementos, en el cap´ıtulo 2 se describen
los fundamentos b´asicos de cada una de estas partes que conformaran el prototipo. En el
cap´ıtulo 3, se describen las conexiones f´ısicas entre los perif´ericos utilizados y el FPGA. En el
cap´ıtulo 3 tambi´en se detalla c´omo se desarrolla el control o la comunicaci´on con los elementos
elegidos mediante la l´ogica de programaci´on en VHDL y los resultados obtenidos del control y
conexi´on individual de estos componentes y el FPGA. Finalmente en el cap´ıtulo 4 se revisan
Planteamiento del Problema.
La existencia del sistema de posicionamiento global (por sus siglas en ingles GPS)
pro-porciona una gran ventaja para el desarrollo de nuevas aplicaciones en electr´onica o el
mejo-ramiento de algunas otras.
Hay aplicaciones o sistemas electr´onicos en los que, adem´as de su funcionamiento
intr´ınse-co, una mejora substancial ser´ıa agregar las caracter´ısticas de un sistema de navegaci´on. Este
tipo de sistemas son aquellos en los que parte de su funcionamiento tiene relaci´on con la
localizaci´on o ubicaci´on de puntos geogr´aficos. Un ejemplo m´as espec´ıfico son las mediciones
de campo el´ectrico que se deben realizar en un ´area de terreno para obtener la conductividad
el´ectrica del suelo[3]. Este sistema realiza una serie de mediciones en un ´area geogr´afica
ex-tensa para la obtenci´on de la conductividad del suelo, por lo que a˜nadir a ´este un dispositivo
de navegaci´on por medio de GPS agilizar´ıa el proceso completo de mediciones.
Una opci´on es agregar simplemente un equipo de navegaci´on terrestre comercial. Se tienen
en el mercado varias empresas fabricantes de estos equipos, cada una provee de varios modelos.
Sin embargo, estos equipos cumplen con un dise˜no general, ´unicamente desarrollados para
cumplir con las funciones b´asicas necesarias en la navegaci´on; por lo que la posibilidad de
integraci´on a otro sistema con funcionalidades extras o diferentes, es pr´acticamente nula.
Como consecuencia de la intensi´on de tener un sistema de navegaci´on que pueda integrarse
el desarrollo de un prototipo de sistema de localizaci´on geogr´afica.
Habitualmente un dispositivo de navegaci´on comercial cumple con ciertas particularidades
de hardware, como las siguientes:
• Modulo de localizaci´on GPS.
• Una pantalla de visualizaci´on (con resoluci´on de 480x272 o 640x480 pixeles).
• Ranura para la conexi´on de una tarjeta de memoria (donde la base de mapas digitales
se almacena).
• Una bater´ıa para su funcionamiento.
• Salida de audio (para indicaciones por voz).
Tomando en cuenta estas caracter´ısticas, se proponen para el desarrollo del sistema, el
uso de las caracter´ısticas de principal utilidad siendo ´estas las primeras tres de la lista.
Para enlazar los elementos de hardware que formar´an el sistema de localizaci´on geogr´afica,
se hace necesario el uso de un dispositivo (chip) central que dirija, procese y direccione la
informaci´on. En este caso, la selecci´on de un dispositivo para realizar esta tarea se centr´o en
un FPGA. La elecci´on de este dispositivo se hizo considerando las ventajas que se pueden
obtener de ´el en comparaci´on con un microcontrolador o un microprocesador.
Algunas de estas ventajas son:
◦ La posibilidad del funcionamiento paralelo en las rutinas de control implementadas en
el FPGA aumentando la velocidad de procesamiento de datos; sabiendo que cualquier
rutina de control en un microcontrolador o microcontrolador debe seguir una secuencia.
◦ En el FPGA se pueden implementar los m´odulos de control necesariamente ´utiles, sin
dejar recursos prestablecidos sin uso como podr´ıa suceder con un microcontrolador.
◦ El FPGA, por su capacidad de manejar rutinas de control paralelamente, puede
inter-cambiar informaci´on con varios dispositivos en diferentes interfaces (seriales o paralelas)
al mismo tiempo.
◦ El desarrollo de un sistema de control en un microprocesador suele llevar un largo
tiempo de desarrollo por tanto el software en ´el suele ser fijo, a diferencia del FPGA
la Figura 1.1. En general se busca que el sistema sea capaz de mostrar en pantalla datos
geogr´aficos de la ubicaci´on actual y mostrar una imagen o mapa digital de tal ubicaci´on.
Figura 1.1: Diagrama a Bloque del Sistema Propuesto
Tomando en cuenta las caracter´ısticas de hardware ya mencionadas, se seleccionaron los
siguientes dispositivos para conformar el sistema:
FPGA: Dispositivo XC3S500E integrado en la tarjeta de desarrollo Spartan 3E1.
Localizaci´on GPS: M´odulo RGM-3000 para la obtenci´on de coordenadas geogr´aficas.
Desplegado de informaci´on: Pantalla de cristal liquido basada en transistores de pel´ıcula
delgada (TFT-LCD) LQ043T3DX02, con una resoluci´on de 480x272 pixeles.
1
Almacenamiento de mapas: Mediante una SD Card.
Para lograr implementar el funcionamiento de este sistema es indispensable tener como
finalidad previa, establecer el control independiente y la interfaz de conexi´on de los
dispositi-vos que el FPGA controlar´a, para as´ı posteriormente agruparlos en la estructura del sistema
buscado.
Atendiendo a esta finalidad previa, en primer lugar se realiz´o la adaptaci´on o conexi´on
f´ısica entre la tarjeta de desarrollo Spartan 3E (que contiene al chip central de procesamiento,
FPGA) y los dispositivos perif´ericos que se utilizar´an.
Es de inter´es mencionar: la comunicaci´on entre FPGA y el m´odulo receptor GPS se hace
por medio de un est´andar RS232 y se aprovecha la interfaz f´ısica existente en la tarjeta
Spartan 3E. Otra conexi´on f´ısica, de la pantalla TFT-LCD, requiri´o del uso de uno de los
conectores de expansi´on de la tarjeta debido al n´umero de l´ıneas de comunicaci´on que la
pantalla necesita (40); misma conexi´on de expansi´on que se us´o para la interfaz con la tarjeta
SD.
Parte del prop´osito principal del sistema es mostrar en pantalla im´agenes o mapas digitales
para lo cual deben tomarse algunas consideraciones:
Ya que hablamos de im´agenes que representan mapas, es primordial definir la fuente
de estos mapas; una fuente actualizada y libre de im´agenes digitales de mapas es el
servidor dewww.openstreetmap.org. Esta fuente sera la elegida para obtener los mapas
utilizados en este sistema.
Es importante conocer el formato de imagen que se desplegara para as´ı saber el proceso
de decodificaci´on del mismo para su adecuado desplegado en pantalla. El formato de
imagen proporcionado poropenstreetmap.orges un formato de imagen PNG. Sin
embar-go, asegurando que este sistema est´a en su fase de desarrollo se utilizar´an las im´agenes
transformadas a un formato de imagen b´asico de mapa de bits (BMP).
Adem´as el uso de im´agenes conlleva un procesamiento de cantidades amplias de datos,
por lo que se hace indispensable el empleo de una memoria temporal. Aunque el FPGA
posee bloques de memoria internos (360Kb), estos son insuficientes para la cantidad de datos
din´amica de acceso aleatorio s´ıncrona con doble velocidad de datos (DDR-SDRAM).
Obtenidas las interfaces f´ısicas se procedi´o a desarrollar el c´odigo en lenguaje VHDL que
controlar´a el comportamiento e intercambio de informaci´on con cada perif´erico, de manera
independiente.
Es muy importante remarcar, para que el sistema tenga la capacidad de comunicarse con
la tarjeta SD y extraer datos de ella se debe tener un software de control (c´odigo en HDL)
que realice esta tarea. La implementaci´on de este control es extensa y compleja, por lo que
se busc´o software libre para el control de la tarjeta, sin embargo este c´odigo no se tiene de
manera gratuita y fue necesario implementarlo por completo.
El sistema a implementar, considerando las interfaces f´ısicas y los elementos requeridos
para el funcionamiento total, puede visualizarse en la Figura 1.2, que ejemplifica la totalidad
de elementos f´ısicos utilizados en el sistema y da una imagen m´as cercana del producto que
se obtendr´a con el planteamiento aqu´ı expuesto.
Puntualizando, el sistema que se desea obtener (en su primera fase) tendr´a las siguientes
caracter´ısticas de operaci´on:
Obtenci´on y desplegado de coordenadas geogr´aficas de ubicaci´on.
Visualizaci´on de mapas digitales.
Teor´ıa Relacionada.
Este cap´ıtulo pretende desarrollar los conocimientos b´asicos acerca de los componentes
fundamentales que se requieren para formar unSistema de localizaci´on Geogr´afica, exponien-do informaci´on sobre su evoluci´on y/o funcionamiento. En este cap´ıtulo tambi´en se expone
informaci´on sobre formatos digitales de imagen relacionados con los mapas que se emplear´an.
Por ´ultimo el cap´ıtulo contiene la descripci´on de las herramientas de software que se utilizar´an
durante el proceso de este proyecto.
2.1.
Sistema de Posicionamiento Global.
El sistema en sus inicios fue desarrollado con fines militares por las fuerzas naval y a´erea
estadounidenses, posteriormente y por diversos motivos su uso se extendi´o a la comunidad
civil. Los principios b´asicos de su funcionamiento est´an regidos por efectos f´ısicos
predeci-bles y la localizaci´on de un usuario (receptor) es determinada por ecuaciones geom´etricas y
la compensaci´on de los errores a los cuales el sistema es susceptible. La informaci´on
nece-saria para que un receptor determine su posici´on esta proporcionada por los sat´elites que
conforman el sistema. Los sat´elites env´ıan se˜nales de radiofrecuencia, con c´odigos que son
interpretados por el receptor para la determinaci´on de la localizaci´on propia. Existen
diver-sidad de receptores funcionales en el mercado e incluso los dispositivos internos de recepci´on
2.1.1.
Conceptos B´
asicos de un Sistema de Posicionamiento.
2.1.1.1. Encontrar un punto en el espacio.
La posici´on de un punto en el espacio puede ser determinada a partir de distancias
conoci-das desde este punto a alg´un otro punto referencial. En la Figura 2.1 el puntox desconocido se encuentra en un eje horizontal, esto es para un caso unidimensional, si la posici´on del
punto S1 y su distancia al puntox son conocidas, la ubicaci´on del punto desconocido puede
estar en dos direcciones, a la izquierda o a la derecha de S1. Para determinar cu´al de las dos
posiciones es correcta, se necesita un punto de referencia adicional el cual llamaremos S2.
De igual modo, si la ubicaci´on y la distancia al puntox son conocidas para S2, entonces la
ubicaci´on del puntoxser´a donde las distancias de los dos puntosS1yS2tengan intersecci´on.
Figura 2.1: Posici´on Desconocida (Plano unidimensional)
Esto mismo es aplicable para un plano bidimensional, al tener dos puntos conocidos y sus
correspondientes distancias al punto x generan que las posibilidades de ubicaci´on del punto desconocido sea una de las dos intersecciones que se crean con los datos anteriores, esto se ve
en la Figura 2.2; por lo tanto para determinar la ubicaci´on correcta entre estas posibilidades,
un tercer punto de referencia y su distancia al puntox son necesarios.
De manera similar encontrar un punto en un espacio tridimensional requiere de cuatro
puntos y cuatro distancias para determinar su ubicaci´on. En un espacio tridimensional dos
esferas en intersecci´on generan una circunferencia en la cual puede estar ubicado el punto
desconocido. Este c´ırculo hace intersecci´on con otra esfera que produce dos posibilidades de
ubicaci´on, como se ve en la Figura 2.3, y por ´ultimo una esfera m´as nos dar´a la ubicaci´on del
punto buscado.
desconoci-Figura 2.2: Localizaci´on de un punto en un espacio bidimensional
do (xu, yu, zu), al saber la distancia entre dos puntos (r) y las coordenadas de uno de los puntos(x, y, z).
r=p(xu−x)2+ (yu−y)2+ (zu−z)2 (2.1) Un sistema tridimensional necesita de cuatro sat´elites y sus correspondientes distancias
al receptor, ya que la Ecuaci´on 2.1 toma en cuenta el punto desconocido (receptor), el punto
conocido (sat´elite) y la distancia entre estos dos, al usar cuatro sat´elites habr´ıa una ecuaci´on
para cada sat´elite.
r1 =
p
(xu−x1)2+ (yu−y1)2+ (zu−z1)2
.. .
ri =
p
(xu−xi)2+ (yu−yi)2+ (zu−zi)2
Donde i= 1,2, . . . n n≥4 (2.2)
Se conoce la ubicaci´on de los puntos (xi, yi, zi) del sistema de Ecuaciones 2.2, es decir, la posici´on de cada sat´elite, que es enviada en la informaci´on transmitida por cada uno de
los sat´elites. Para resolver el sistema de Ecuaciones 2.2, es necesario conocer las distancias
correspondientes entre cada sat´elite y el receptor, para esto se desarrolla una particular
metodolog´ıa.
2.1.1.2. Determinaci´on de la distancia.
El m´etodo usado para medir las distancias necesarias y obtener la ubicaci´on del receptor
se basa en la propagaci´on de ondas de radiofrecuencia. Uno de los principios b´asicos de las
ondas de radiofrecuencia es que viajan a una velocidad conocida; velocidad que se aproxima
a los 3x108m/s. Con base en esto, es posible medir el tiempo que le toma a una se˜nal de radiofrecuencia llegar de un transmisor a un receptor, la distancia entre ambos puntos puede
ser determinada. Para lograr efectivamente la medici´on del tiempo transcurrido desde la
emisi´on de la se˜nal hasta su recepci´on, es necesario que los relojes tanto del transmisor como
del receptor est´en sincronizados. Desde un punto de vista pr´actico esto es extremadamente
Dependiendo de la frecuencia de la se˜nal y el medio en el que se propaguen, las ondas de
radio se comportan de un modo diferente. La atm´osfera terrestre presenta un medio particular
en el cual las ondas de radio act´uan de manera menos predecible que en el espacio vac´ıo. En
la atm´osfera ´estas pueden viajar sin alteraci´on, ser reflejadas o incluso tener p´erdidas de
energ´ıa.
En algunos m´etodos de radio-localizaci´on las reflexiones que proporciona la ion´osfera de la
tierra (para cierto rango de frecuencias), fueron utilizadas como ventaja, aunque la ion´osfera
no es constante y provoca inexactitud en la medici´on del tiempo de propagaci´on. La atm´osfera
terrestre es una de las desventajas o fuentes de error a las que el sistema GPS es susceptible,
entre otras fuentes de error que se pueden mencionar:
Error en el oscilador del sat´elite.
Error o variaci´on de los par´ametros orbitales
Ondas reflejadas (en edificios, cuerpos acuosos, monta˜nas, etc.)
Error en el oscilador del receptor
Errores de recepci´on en la se˜nal (ruido).
Algunos de estos errores pueden ser corregidos con la informaci´on enviada por el sat´elite
mejorando la precisi´on en la ubicaci´on del receptor. Sin embargo, algunos de ´estos no, por
ejemplo, el error de oscilador o reloj del receptor, el cual se presenta hasta que la se˜nal
trans-mitida llega al receptor. Esta fuente de error debe ser considerado en el modelo matem´atico,
dejando a la Ecuaci´on 2.1 como:
ri =
p
(xu−xi)2+ (yu−yi)2+ (zu−zi)2−bu (2.3)
En la Ecuaci´on 2.3 la nomenclatura (xi, yi, zi) hace referencia a la posici´on de alguno de los sat´elites,ri es la distancia aparente (psudorange) entre receptor y sat´elite, ybu es el error de sincronizaci´on de reloj del receptor, expresado en unidades de distancia. Esta ecuaci´on
es fundamental en el sistema GPS, permite medir la distancia aparente entre el sat´elite y el
receptor, dada la ubicaci´on del sat´elite, y con esto encontrar la ubicaci´on del receptor.
Te´oricamente 4 sat´elites son suficientes para determinar la posici´on del receptor (ver
Figura 2.4: Cuatro sat´elites son al menos necesarios para ubicar al usuario mediante la obtenci´on de la distancia
sat´elite-usuario basado en tiempos de transmisi´on y recepci´on.
siguiente secci´on 2.1.2 se describe como ´esto es posible debido a la organizaci´on de las ´orbitas
satelitales, con lo cual se pueden agregar m´as datos al c´alculo de la posici´on del receptor.
Aunque el sistema de ecuaciones aumenta con cada sat´elite agregado, los receptores suelen
estar capacitados para manejar esta informaci´on y as´ı ser m´as precisos en la localizaci´on del
receptor.
2.1.2.
Segmento de Control del Sistema GPS
La ubicaci´on de los sat´elites es conocida debido a que estos est´an organizados en ´orbitas
definidas. Una parte importante de la organizaci´on de los sat´elites es el control y seguimiento
de las ´orbitas, este control y seguimiento es esencial para evitar errores en la precisi´on del
sistema GPS, y con esto, asegurar un funcionamiento ´optimo constante.
Para entender mejor el sistema GPS se debe estipular que este se divide en 3 segmentos:
Segmento espacial
Segmento de usuario
El segmento de usuario, se puede decir, es todo lo relativo a los receptores GPS y el
proce-samiento de las se˜nales correspondientes. El segmento de control consiste de cinco estaciones
en tierra, cuyo prop´osito fundamental es monitorear el desempe˜no, ubicaci´on y
funcionamien-to de los sat´elites GPS.
Incluyendo la estaci´on principal, las estaciones del segmento de control, est´an dispersas a
lo largo de la l´ınea ecuatorial (o lo m´as cercano posible), alrededor de la tierra. La Figura 2.5
muestra la ubicaci´on de estas estaciones. La estaci´on principal de control se ubica en la base
“Falcon” de la fuerza a´erea estadounidense en Colorado Springs.
Figura 2.5:Segmento de Control. Estaciones terrestres: 1. Estaci´on Principal Base de la fuerza a´erea Falcon, Colorado
Springs; 2. Estaci´on de Monitoreo Hawaii; 3. Estaci´on de Monitoreo Cabo Ca˜naveral; 4. Estaci´on de Monitoreo Isla
Asunci´on; 5. Estaci´on de Monitoreo Diego Garc´ıa; 6. Estaci´on de Monitoreo Kwajalein
Toda la informaci´on recolectada por las estaciones de control acerca de los sat´elites es
enviada a la estaci´on principal. Los principales objetivos de esta estaci´on son:
1. Monitorear el desempe˜no del sistema GPS.
2. Generar y transmitir a los sat´elites informaci´on de correcci´on en la ubicaci´on de ´estos
3. Detectar y corregir un error en los sat´elites, as´ı minimizar las afectaciones al sistema
de posicionamiento.
El segmento espacial define la composici´on del sistema de sat´elites que est´a compuesto
por 24 de ellos, divididos en seis ´orbitas y en cada una de ´estas se ubican cuatro sat´elites.
Estas ´orbitas est´an separadas por un ´angulo de 60° para cubrir 360°. El radio de la ´orbita
satelital es de 26560km y los sat´elites realizan un viaje alrededor de la tierra dos veces por d´ıa. El cuerpo del sat´elite es un cubo de aproximadamente 1.8m por lado; el panel solar en ´el tiene una longitud de 9 m.
Para minimizar los efectos de un posible error en uno de los sat´elite, ´estos est´an ubicados
como se ve en la Figura 2.6. En cualquier momento y ubicaci´on, un receptor tiene la
posibi-lidad de recibir la se˜nal de m´as de 4 sat´elites, generalmente puede recibir la se˜nal de hasta
11 sat´elites, esto es gracias a la organizaci´on que se tiene.
Figura 2.6: Organizaci´on de ´orbitas satelitales y la separaci´on ente cada sat´elite en una ´orbita
Los sat´elites transmiten una se˜nal de radiofrecuencia y en esta va contenida la informaci´on
que se necesita para calcular la posici´on del usuario, adem´as de otros datos que ayudan a
corregir errores en la misma operaci´on. Esta se˜nal es de una frecuencia espec´ıfica a la cual el
2.1.3.
C´
odigos y Frecuencias
Existen b´asicamente dos tipos de c´odigos, que son enviados por los sat´elites, llamados:
C´odigo de Adquisici´on Aleatoria (C/A) y C´odigo de Precisi´on (P). Estos c´odigos son
trans-mitidos simult´aneamente, no obstante el c´odigo P contiene informaci´on que no es codificable
para receptores de usuarios civiles, es decir, es el c´odigo que se usa en sistemas militares.
B´asi-camente el c´odigo P se usa para mejorar la precisi´on en el c´alculo realizado con la informaci´on
del c´odigo C/A.
En el sistema GPS estos c´odigos son transmitidos en dos frecuencias portadoras: 1575.42
MHz y 1227.6 MHz. A la frecuencia de 1575.42 MHz se le llamaL1mientras que a la frecuencia
de 1227.6 MHz, L2. La frecuencia portadora L1 contiene la informaci´on de ambos c´odigos
C/A y P, por otro lado en la portadoraL2 solamente se env´ıa el c´odigo P. Cualquier receptor
GPS debe estar capacitado para recibir como m´ınimo la frecuenciaL1.
2.1.4.
Protocolo de Comunicaci´
on NMEA
La asociaci´on nacional de dispositivos electr´onicos marinos (NMEA por sus siglas en
ingles)es un grupo de productores, distribuidores, comerciantes, instituciones educativas y
otros grupos interesados en dispositivos electr´onicos especializados en el ´ambito mar´ıtimo,
todo esto sin fines de lucro. Entre los logros m´as importantes de esta asociaci´on se encuentra
el desarrollo de un est´andar para dispositivos mar´ıtimos, que especifica tanto la interfaz
el´ectrica de los dispositivos como el protocolo de comunicaci´on entre los mismos, este est´andar
es nombradoNMEA-0183 cuya primera versi´on se presenta en Marzo de 1983.
La interfaz el´ectrica que establece el est´andar NMEA-0183 es una interfaz as´ıncrona serial que trabaja con los par´ametros que se ven en la Tabla 2.1. Este est´andar permite
conectar varias terminales a un solo transmisor. Se recomienda que el cable utilizado para
estas conexiones sea un cable par trenzado, aunque no se especifica el uso de un conector
en particular. NMEA-0183 estipula que los dispositivos deben de cumplir con los par´ametros
el´ectricos del est´andar de conexi´onEIA RS-422, no obstante, en la pr´actica es posible utilizar una comunicaci´on a trav´es de un puertoEIA-RS232.
Los datos, en este protocolo, se transmiten en forma de frases. ´Unicamente caracteres
Tabla 2.1: Par´ametros de Transmisi´on del Est´andar NMEA-0183 Tasa de Baudios 4800
Bits de datos 8
Bits de Paro 1
Bits de Paridad ninguno
cada frase comienza con el s´ımbolo “$” y terminan con “<CR><LF>”. Existen tres tipos
de frases: frases de propietario, frases de petici´on y frases de transmisor.
Este est´andar permite a los productores de dispositivos definir sus Frases de Propie-tario, la frase comienza con “$P” y despu´es de esto vienen tres letras que representan el
identificador del productor, seguidas por los campos de informaci´on que el fabricante defina.
Las Frases de Petici´on son para los receptores que tienen la capacidad de transmitir una petici´on de informaci´on. Los primeros dos caracteres son el identificador de transmisor
al que se le pide la informaci´on los siguientes dos caracteres son el identificador de receptor y
el quinto car´acter es siempre una “Q” definiendo el mensaje como una petici´on (Query). El
siguiente campo es el identificador de la frase o informaci´on que se requiere, un ejemplo de
esto ser´ıa:
$CCGPQ,GGA<CR><LF>
El est´andar NMEA-0183 se define para m´ultiples dispositivos electr´onicos de los que las
Frases de Transmisor pueden provenir y contener informaci´on correspondiente a cada uno. Los primeros dos caracteres despu´es de “$” son el identificador de transmisor, espec´ıficamente
para dispositivos GPS el identificador es “GP”; aunque existen muchos m´as. Le siguen tres
caracteres que representan el identificador de frase, seguidos por varios campos de datos
separados por comas y al final los s´ımbolos de retorno de l´ınea/siguiente l´ınea.
Una frase pude contener hasta 80 caracteres sin contar los caracteres: “$”,<CR>y<LF>.
Si los datos de uno de los campos contenidos en la frase no se encuentra disponible, la
informaci´on se omite pero las comas que lo delimitan son enviadas en la informaci´on sin
separaci´on entre ellas. Los campos de datos son definidos para cada frase en particular, las
Frase Datos Fijos del Sistema de Posicionamiento Global o GGA.
$GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,,,,0000*18<CR><LF>
Donde:
$GPGGA Identificador de Frase
161229.487 Posici´on UTC (hhmmss.ss)
3723.2475, N Latitud (ggmm.mmmm), North-South
12158.3416, W Longitud (ggmm.mmmm), East-Weast
1 0=Invalido 1=GPS, 2= GPS Diferencial
07 Sat´elites en vista
1.0 Precisi´on Horizontal
9.0, M Altitud, Metros
0.0, M Separaci´on Geoidal, Metros
Campo Vac´ıo
Campo Vac´ıo
*18 C´odigo de Verificaci´on
<CR><LF> Fin de cadena
g=Grados, h=Horas, m=Minutos, s=Segundos
Frase Informaci´on M´ınima Recomendada de Navegaci´on o RMC.
$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10<CR><LF>
$GPRMC Identificador de Frase
161229.487 Posici´on UTC (hhmmss.ss)
A A=Datos Validos V=Datos Inv´alidos
3723.2475, N Latitud (ggmm.mmmm), North-South
12158.3416, W Longitud (ggmm.mmmm), East-Weast
0.13 Velocidad en tierra millas/seg.
309.62 Curso sobre tierra en grados
120598 Fecha d´ıa/mes/a˜no
Variaci´on Magn´etica(East-West)
*18 C´odigo de Verificaci´on de errores
<CR><LF> Fin del Frase
g=Grados, h=Horas, m=Minutos, s=Segundos
Frase Latitud y Longitud Geogr´aficas o GLL.
$GPGLL,4916.45,N,12311.12,W,225444,A,*1D,<CR><LF>
Donde:
$GPGLL Identificador de Frase GLL
4916.46, N Latitud (gggg.mmmm), North-South
12311.12, W Longitud (ggmm.mmmm), East-Weast
0.13 Velocidad en tierra millas/seg.
225444 Hora UTC (hhmmss)
A A=Datos Validos V=Datos Inv´alidos
*2D C´odigo para Verificaci´on de errores
<CR><LF> Fin de frase
g=Grados, h=Horas, m=Minutos, s=Segundos
Frase Precisi´on de la Posici´on y Sat´elites Activos o GSA
$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39,<CR><LF>
$GPGSA Identificador de Frase GSA
A (A)=Auto selecci´on de posici´on 2D o 3D (M = manual)
3 Posici´on 3D (1= no pos., 2 = Pos. 2D, 3 = Pos. 3D)
04 Sat´elites usados para obtener posici´on
2.5 Precisi´on de la posici´on
1.3 Precisi´on Horizontal de la pos.
2.1 Precisi´on Vertical de la pox.
*39 C´odigo para Verificaci´on de errores
<CR><LF> Fin de frase
Frase Sat´elites en Vista o GVS
$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75,<CR><LF>
Donde:
$GPGSV Identificador de frase de sat´elites en vista
2 N´umero de frases de la informaci´on completa
1 Frases 1 de 2
08 N´umero de sat´elites en vista
01 N´umero de identificaci´on PRN de sat´elite
40 Elevaci´on, grados
083 Acimut, grados
46,02,17,...,45 Relaci´on Se˜nal/Ruido
*75 C´odigo para Verificaci´on de errores
<CR><LF> Fin de frase
Frase Velocidad Verdadera o VTG
$GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*48<CR><LF>
$GPVTG Identificador de Frase de velocidad verdadera
054.7,T Direcci´on Real (grados)
034.4,M Direcci´on Magn´etica
005.5,N Velocidad en Nudos
010.2,K Velocidad en Km/h
*48 C´odigo para Verificaci´on de errores
<CR><LF> Fin de frase
2.1.5.
M´
odulo Receptor GPS RGM-3000.
Un receptor GPS es un dispositivo electr´onico capaz de recibir la se˜nales de los sat´elites
que orbitan el planeta y obtener su ubicaci´on en la tierra. Para este proyecto se us´o el
m´odulo receptor GPS:“RGM-3000”, dispositivo basado en la arquitectura SiRF Star II
y dise˜nado con el algoritmo de navegaci´on deRoyaltek.
Entre sus caracter´ısticas ofrece: 12 canales paralelos para la transmisi´on de datos, es
com-patible con el protocolo NMEA-0183, tiene una excelente recepci´on en ambientes urbanos o con grandes obst´aculos como monta˜nas o ca˜nones, cuenta con una doble protecci´on contra
reflexiones en la se˜nal GPS, adem´as incluye una memoria interna en la que puede almacenar
hasta 1 Mega-bits (Mb) de informaci´on . El modulo receptorRGM-3000 se ve f´ısicamente en la Figura 2.7.
La Tabla 2.2, resume las caracter´ısticas f´ısicas, el´ectricas y de operaci´on del m´odulo
RGM-3000 [4].
Tabla 2.2: Caracter´ısticas del M´odulo RGM-3000
Caracter´ısticas de Operaci´on
Canales 12
Banda L1, 1575.42 MHz
Adquisici´on C´odigo C/A
Tasa de Actualizaci´on de Navegaci´on 1/s
Caracter´ısticas de Precisi´on
Localizaci´on 1 a 5 m
Velocidad 0.1 m/s
Altitud M´axima 18000 m
Velocidad M´axima 515 m/s
Aceleraci´on M´axima 4 g
Caracter´ısticas El´ectricas
Alimentaci´on 3.3±10V
Consumo de Corriente 180 mA
Como puede notarse en la Tabla 2.2, este m´odulo receptor realiza la adquisici´on del c´odigo
C/A, mediante frecuencia portadora L1. La informaci´on que se obtiene se actualiza una vez
por segundo suficientemente ´util para mantener una navegaci´on ´optima por cualquier medio.
En la parte media de la Tabla 2.2 se visualiza que este dispositivo proporciona una
preci-si´on de 1 a 5m en lo que respecta a la ubicaci´on real del receptor. Al realizar la localizaci´on en movimiento con este m´odulo se tiene un margen de error de 0.1m/s en su c´alculo de la velocidad de desplazamiento. Aunque en general se tiene un buen desempe˜no en cuanto a la
precisi´on de ubicaci´on, existen l´ımites para este m´odulo GPS, los par´ametros de rendimiento
m´aximo en altitud y velocidad pueden observarse en la Tabla 2.2. Por ´ultimo se observa, en
la Tabla 2.2, los requerimientos de energ´ıa necesarios.
La interfaz f´ısica del m´odulo se realiza a trav´es de un conector de 20 pines, en la Tabla
Tabla 2.3: Pines del M´odulo RGM-3000
No. Pin Nombre No. Pin Nombre No. Pin Nombre No. Pin Nombre
1 VCC 7 TIMEMARK 13 GPIO3 19 GPIO15
2 VCC 8 RESET 14 GPIO5 20 GND
3 TXA 9 BOOTSEL 15 GPIO6 21 GND
4 RXA 10 WAKEUP 16 GPIO7 22 GND
5 TXB 11 VBAT 17 GPIO10
6 RXB 12 RESERVED 18 GPIO13
Los pines 1 y 2 son las l´ıneas de alimentaci´on positiva por donde se suministran los 3.3V, mientras que por los pines 20-22 se conecta la l´ınea negativa. Los pines 3 y 4 son TXA y
RXB, estas l´ıneas son de comunicaci´on de datos serial y es por donde el modulo transmite la
informaci´on de navegaci´on y recibe comandos respectivamente.
Por la l´ınea TXA se trasmite las cadenas de datos en un est´andar RS232 con una raz´on
de baud rate de 48000 bps, 8 bits de datos, sin bit de paridad y con un solo bit de paro. Los
datos que se env´ıan cumplen con el protocolo NMEA-0183, transmitiendo las frases GSV y
GSA una vez cada 5 segundos, la cadena GGA cada segundo y las frases GLL, RMC y VTG
2.2.
Arreglo de Compuertas Programables en
Cam-po.
Los Arreglos de Compuertas Programables en Campo (por sus siglas en inglesFPGA)son dispositivos semiconductores que est´an compuestos por bloques programables relacionados a
trav´es de conexiones tambi´en programables. A diferencia de otros dispositivos los FPGA
pueden ser configurados, mediante un lenguaje especializado para cumplir con diferentes
dise˜nos o aplicaciones requeridas.
Estos dispositivos fueron desarrollados por primera vez por la empresa Xilinx y
co-mercializados en el a˜no de 1984. Existen dos tipos de FPGA, los que basan sus conexiones
programables en Antifusibles y los que est´an basados en celdas de memoria SRAM. La tecnolog´ıa usada, en estos primeros dispositivos fueron las celdas SRAM. Los FPGA de
anti-fusibles fueron creados posteriormente, en 1991, por empresas diferentes a Xilinx. Los FPGA
basados en celdas SRAM son circuitos programables y borrables el´ectricamente mientras que
los FPGA de antifusibles son programables el´ectricamente pero no borrables, es decir, son
programables solamente una vez.
Esta tecnolog´ıa de circuito integrado utiliza un Lenguaje de Descripci´on de Hardware
(HDL) para definir la configuraci´on que los componentes internos tendr´an y as´ı ejecutar las
tareas que se necesitan de acuerdo a cada aplicaci´on. Existen varios tipos de HDLs, todos
creados con el objetivo de simplificar el dise˜no de circuitos l´ogicos, sin estar atados a una
tecnolog´ıa de circuitos integrados en particular.
2.2.1.
Estructura de un FPGA
La arquitectura de un FPGA es espec´ıfica dependiendo de cada dispositivo en particular,
no obstante, se puede denominar una estructura b´asica compuesta por cuatro bloques o
elementos programables fundamentales y las conexiones entre ´estos, que son:
Bloque L´ogico Configurable (CLB).
Administrador de Reloj Digital (DCM).
Los 4 tipos de bloques est´an distribuidos a lo largo de la estructura interna de un FPGA,
en la Figura 2.8 se puede visualizar su ubicaci´on usual.
Figura 2.8: Estructura de un FPGA, Bloques Internos.
2.2.1.1. CLB
Los CLBs son la unidad l´ogica b´asica en un FPGA con los cuales se implementan la
l´ogica combinatoria necesaria en diferentes aplicaciones. Cada CLB est´a compuesto por varios
subbloques diferentes. Un CLB se divide en cuatro partes llamadas Slices, usualmente se agrupan en pares, el par izquierdo realiza operaciones l´ogicas y de almacenamiento, mientras
que el par de la derecha solamente puede realizar funciones l´ogicas.
Los slices, a su vez est´an compuestos por componentes l´ogicos m´as b´asicos, dentro de
cada slice se encuentran: dos bloques de l´ogica combinatoria o tablas de consulta (LUT),
dos elementos de almacenamiento que pueden ser usados como registros o para sincronizar
de l´ogica aritm´etica que complementan y simplifican la implementaci´on de pr´acticamente
cualquier funci´on l´ogica. La Figura 2.9(a) muestra como un CLB est´a dividido en un FPGA
y la Figura 2.9(b) muestra la composici´on de un slice.
Figura 2.9: (a) CLBs y Slice dentro de un FPGA; (b) Componentes dentro de un Slice.
La LUT es un generador de funciones basado en celdas RAM y es el principal recurso
para implementar funciones l´ogicas. Los bloques LUT pueden ser usados como microbloques
de memoria (RAM16) o como registros de corrimiento de 16-bits (SRL16). Cualquier funci´on
l´ogica booleana de cuatro variables puede ser implementada por una LUT, una funci´on de
m´as variables puede ser implementada por LUTs en cascada o usando los recursos adicionales
en un slice. La salida del bloque LUT puede ser conectada a cualquier otro componente en
el slice.
Los multiplexores pueden combinarse con los bloques LUT permitiendo la implementaci´on
de funciones l´ogicas de mayor complejidad.
La l´ogica aritm´etica y de acarreo colaboran con la r´apida y eficiente implementaci´on de
funciones matem´aticas.
Los Flip-Flops son de tipo D, con estos elementos se puede retener la salida de los bloques
2.2.1.2. IOB
Todas la se˜nales que entran y salen de un dispositivo FPGA deben pasar por un Bloque
de Entrada/Salida o IOB. Los FPGA tienen, debido a estos bloques, una gran variedad de capacidades en lo que se refiere a la entrada y salida de se˜nales. Actualmente la selectividad, en
un bloque de entrada/salida, simplifica en gran medida las necesidades de dise˜no en muchas
aplicaciones. M´as de 20 est´andares de se˜nales de entrada y salida son soportados por un
bloque IOB, con diferentes especificaciones en corriente, voltaje y t´ecnicas de terminaci´on
de l´ınea. Por lo tanto un FPGA tiene una amplia conectividad con otros dispositivos, ya
que provee de las conexiones requeridas en muchos casos y elimina el costo de implementar
adaptaciones adicionales.
Un bloque IOB provee de una v´ıa programable, unidireccional o bidireccional entre el pin
del empaque del FPGA y la l´ogica interna en este. Algunas de las caracter´ısticas que este
bloque ofrece son:
Control programable del tiempo de respuesta de la se˜nal de salida.
Control programable de la corriente de la se˜nal de salida.
Salidas y entradas por Registro (Flip-Flop).
Registros especializados para doble velocidad de datos (DDR).
Retraso programable en las se˜nales de entrada.
Diferente terminaciones de salida.
Inversi´on de la se˜nal de salida o entrada.
Existen tres principales v´ıas que una se˜nal puede seguir en un IOB: entrada, salida o el
tercer estado.
La ruta de entrada lleva la se˜nal desde el pin en el empaque del FGPA hasta los diferentes
bloques para la adecuaci´on del voltaje, comparaci´on con un voltaje de referencia o con su
par diferencial. La se˜nal posteriormente se dirige a un bloque de retraso programable y
consecutivamente a alguno de los registros opcionales en al v´ıa de entrada. Despu´es de estas
Figura 2.10: Bloque de Entrada/Salida simplificado.
La v´ıa de salida comienza en las conexiones disponibles de un bloque IOB con la l´ogica
interna del FPGA. Esta ruta lleva la se˜nal a un multiplexor y despu´es a un elemento de tercer
estado. El multiplexor provee la opci´on de redirigir varias se˜nales a una misma salida (Figura
2.10(b)).
La ruta del tercer estado determina cuando la terminaci´on del bloque IOB ser´a de alta
impedancia. La l´ogica interna del FPGA puede accionar o determinar cuando la terminaci´on
La Figura 2.10 muestra un diagrama simplificado de un bloque IOB, en el cual se pueden
observar las rutas que una se˜nal puede seguir. Adem´as de esto se observan otras cualidades
antes mencionadas de un bloque IOB, es decir, los diferentes tipos de terminaci´on de l´ınea
como pueden ser en resistores de Pull-Up o Pull-Down.
La Tabla 2.4 presenta la descripci´on de las entradas y salidas hacia un bloque IOB que
se observa en la Figura 2.10.
Tabla 2.4: Descripci´on de entradas y salidas del bloque IOB.
Pin Descripci´on
T Salida de habilitaci´on del Tercer Estado.
T1 Entrada Flip-Flop (FF) 1 para habilitaci´on del Tercer Estado
T2 Entrada FF2 para habilitaci´on del Tercer Estado
TCE Habilitador de Chip para FF1 y FF2
S1 Entrada FF1 para sicronizaci´on de salida
SCLK1 Reloj para sincronizaci´on de salida por FF1
S2 Entrada FF2 para sicronizaci´on de salida
SCLK2 Reloj para sincronizaci´on de salida por FF1
SCE Habilitador de Chip para FF1 y FF2 de salida
E Entrada despu´es de retraso programable
EQ1 Entrada a trav´es de FF1
ECKL1 Reloj para sincronizaci´on de entrada por FF1
EQ2 Entrada a trav´es de FF2
ECKL2 Reloj para sincronizaci´on de entrada por FF2
ECE Habilitador de Chip para FF1 y FF2 de entrada
SR Entrada Set/Reset para todos los FF REV1 Entrada Inversa para todos los FF
E/S Pin de Entrada/Salida del FPGA
VREF Voltaje de referencia para comparaci´on del pin E/S
2.2.1.3. Block RAM
Los bloques de memoria interna RAM est´an disponibles en pr´acticamente todos los FPGA,
estos brindan un almacenamiento temporal dentro del FPGA para las aplicaciones que lo
requieran.
Dependiendo del dispositivo, los bloques RAM est´an posicionados en la periferia del mismo
o en columnas organizadas en alg´un lugar dentro del FPGA. Estos bloques RAM tienen la
capacidad de usarse en diferentes funciones como: memoria RAM, FIFO (First Input - First
Output), LUTs de mayor tama˜no, convertidores de ancho de palabra, registros de corrimiento
y otras aplicaciones adicionales. Cada bloque RAM en un FPGA tiene aproximadamente 16
Kbits (18432 bits) y soportan operaciones de lectura y escritura de datos.
2.2.1.4. DCM
El DCM provee a los FPGA de capacidades avanzadas para sincronizar se˜nales de reloj.
Con este bloque se suelen resolver una gran variedad de necesidades de sincronizaci´on
es-pecialmente cuando se trata de altas frecuencias de reloj, las principales tareas de un DCM
son:
Elimina Asimetr´ıas en la se˜nal de reloj, ya sea en se˜nales internas o externas al dispositivo, para mejorar el desempe˜no del sistema y eliminar retrasos en la propagaci´on
de la se˜nal.
Desplazamiento de Fase de una se˜nal de reloj, en una cantidad fija de un periodo de reloj o en incrementos definidos.
Multiplicando o Dividiendo una frecuencia entrante de Reloj, incluso pro-duciendo una nueva frecuencia a partir de la entrante ya sea dividi´endola y/o
multi-plic´andola por un factor.
Acondicionamiento de la se˜nal de reloj para asegurarse de tener una se˜nal de salida con un ciclo ´util determinado.
El DCM consiste de cuatro distintas unidades funcionales, como se muestra en la Figura 2.11,
estas unidades trabajan en conjunto o independientemente.
Figura 2.11: Esquema de un Administrador de Reloj.
Bucle de Enganche de Retraso (DLL). Brinda un rectificador interno de asimetr´ıas en la se˜nal de reloj, que provee efectivamente de una se˜nal sin retraso. El circuito rectificador
compensa el retraso y asimetr´ıas en la se˜nal de reloj a trav´es de un monitoreo de las se˜nales
de reloj de salida del DCM mismo. La unidad DLL elimina perfectamente los retrasos de una
se˜nal de reloj externa para utilizarse en la l´ogica interna del dispositivo.
Sintetizador Digital de Frecuencias(DFS). Brinda una amplia variedad de frecuencias producidas a partir de dos n´umeros enteros que son definidos por el usuario, un factorDivisor
y otroMultiplicador. La frecuencia de salida es sintetizada a partir de la frecuencia de entrada (CLKIN Figura 2.11) y los factores adecuados de multiplicaci´on o divisi´on. La unidad DFS
puede trabajar en conjunto con la unidad DLL o sin ella, no obstante, al no usar la unidad
Desplazador de Fase (PS). Esta unidad controla todas las relaciones de defasamiento de la frecuencia de entrada (CLKIN) en un DCM. La unidad PS, como su nombre lo indica,
se encarga de desplazar en una fracci´on fija la fase de la frecuencia; los valores que se usar´an
para producir los defasamientos de frecuencia son establecidos y cargados en el FPGA al
momento de ser programado.
L´ogica de Estado (ST). Indica el estado actual del DCM, a trav´es de se˜nales de salida del mismo. Estas salidas proveen informaci´on sobre el funcionamiento de un DCM.
La Tabla 2.5 describe las entradas y salidas del DCM observado en la Figura 2.11.
Tabla 2.5: Descripci´on de entradas y salidas del DCM.
Pin Descripci´on
PSINCDEC Incremento/Decremento (1/0) del desplazamiento variable de fase
PSEN Habilitaci´on del desplazamiento variable de fase
PSCLK Entrada de reloj para aplicar desplazamiento variable de fase
CLKIN Entrada de reloj al DCM
CLKFB Entrada de reloj de retroalimentaci´on
RST Reinicio as´ıncrono del DCM
PSDONE Desplazamiento de fase variable completado
CLK0 Frecuencia de salida igual a CLKIN
CLK90 Frecuencia de salida igual a CLKIN desplazada 90°en su fase
CLK180E Frecuencia de salida igual a CLKIN desplazada 180° en su fase
CLK270E Frecuencia de salida igual a CLKIN desplazada 270° en su fase
CLK2X Doble de la frecuencia CLKIN desplazada 0° en su fase
CLK2X180 Doble de la frecuencia CLKIN desplazada 180° en su fase
CLKDV Frecuencia CLKIN divida por el factor Divisor
CLKFX Frecuencia de salida sintetizada
CLKFX180 Frecuencia de salida sintetizada desplazada 180° en su fase
LOCKED Todas las procesos est´an acoplados a la frecuencia CLKIN
2.2.2.
Configuraci´
on de un FPGA.
Un HDL es un lenguaje usado para modelar la operaci´on funcional de una pieza de
hardware en forma textual. Aunque la mayor parte de las referencias bibliogr´aficas se refieren
a un HDL como un lenguaje de programaci´on, esto no es completamente cierto. Un enfoque
m´as adecuado de como definir a un HDL ser´ıa diciendo que es un lenguaje utilizado para
describir hardware digital.
Los HDLs se desarrollaron para solucionar la problem´atica que se presentaba al dise˜nar
circuitos l´ogicos complejos y la consecuente prueba de dichos circuitos. Por tanto un HDL
facilita en gran medida el modelado y la simulaci´on de circuitos integrados digitales, los cuales
son implementados en dispositivos l´ogicos programables tal como un FPGA.
Con el tiempo se han generado muchos HDLs, algunos m´as complejos que otros. Desde
hace a˜nos existen dos principales lenguajes de descripci´on de hardware que han tenido
au-ge, estos son: VHDL y Verilog.Estos lenguajes tienen muchas similitudes pero cada uno deriv´o de una l´ınea diferente en su camino de desarrollo.
VHDL es una acr´onimo de VHSIC Hardware Description Lenguage y a su vez VHSIC
es un acr´onimo de Very High Speed Integrated Circuits ( Circuitos Integrados de Muy Alta
Velocidad). El lenguaje VHDL fue originalmente desarrollado en 1981 por el Departamento
de Defensa de los Estados Unidos para estandarizar la descripci´on de estructura y
funciona-lidad de hardware. El Instituto de Ingenieros El´ectricos y Electr´onicos (IEEE) estandarizo el
lenguaje VHDL en 1987 y se realizan actualizaciones y revisiones cada 5 a˜nos. Inicialmente
el lenguaje ten´ıa el prop´osito de modelar las estructuras de hardware sin tener en cuenta la
realizaci´on de pruebas en ´este, posteriormente se adapt´o para tener la posibilidad de realizar
la s´ıntesis y simulaci´on de los circuitos modelados con este lenguaje.
Por otro lado el lenguaje Verilog fue desarrollado por la empresa Gateway Desing
Au-tomation en 1984. La empresa Gateway fue adquirida por Cadence en 1989 y por tanto el
lenguaje Verilog fue hecho un est´andar libre en 1990. Este lenguaje se convirti´o en un est´andar
IEEE en 1995 y fue actualizado en 2001.
Ambos lenguajes realizan la descripci´on de hardware partiendo de bloques llamado
m´odu-los. Un m´odulo es una detallada descripci´on de un dispositivo f´ısico. En los lenguajes de
estructural y la segunda por comportamiento. Un m´odulo estructural describe como un dis-positivo est´a compuesto por estructuras m´as b´asicas, mientras que un m´odulo por comporta-miento describe el funcionamiento.
Los dos principales prop´ositos de un lenguaje de descripci´on de hardware son la simula-ci´on y el proceso de s´ıntesis. Durante la simulaci´on, se verifica el correcto funcionamiento del m´odulo descrito en un HDL. En el proceso de s´ıntesis la descripci´on de hardware
es-crita se transforma en una asignaci´on de compuertas l´ogicas que realizaran f´ısicamente el
funcionamiento codificado.
Para conocer m´as de los dos principales lenguajes de descripci´on de hardware, a
conti-nuaci´on se presenta un ejemplo de m´odulo por comportamiento en lenguaje VHDL y Verilog
[5, 6].
Verilog
m´odulo prueba(input logic a, b, c,
output logic y);
assing y = ∼a & ∼b & ∼c;
end module
VHDL
library IEEE; use IEEE.STD LOGIC 1164.all;
entity prueba is
port ( a, b, c: in STD LOGIC;
y : out STD LOGIC);
end;
architecture sintesis of prueba is
begin
y <=((not a)and(not b)and(not c));
end;
Un m´odulo en Verilog comienza con la lista de entradas y salidas. La palabra reservada
assing describe la l´ogica combinatoria entre las entradas a, b, c. El s´ımbolo “∼” es un NO
l´ogico y “&” es el s´ımbolo para una AND l´ogica. La palabra logic indica el tipo de dato de las entradas o salidas, en este caso son de tipo l´ogico (0 o 1).
caso son de tipo SDT LOGIC que pueden tomar valores de 0 y 1 entre otros. El tipo de dato
STD LOGIC est´a definido en la librer´ıa IEEE.STD LOGIC 1164, es por esto que debe ser
declarada al principio.
2.2.3.
Tarjeta de Desarrollo Spartan 3E
La actual multiplicidad de empresas fabricantes de dispositivos FPGA, provee una amplia
gama de dispositivos y tarjetas de desarrollo predise˜nadas; de entre las muchas empresas
existentes las dos principales son: la pionera XILINX y su principal contrincante ALTERA.
La cantidad de dispositivos de los que se puede disponer es bastante grande y las
ca-pacidades de ´estos mismos se definen a partir del n´umero de celdas l´ogicas que contienen.
Los fabricantes por lo general dise˜nan dispositivos con prop´ositos preestablecidos con lo que
ciertos dispositivos son implantados en tarjetas junto con otros circuitos integrados que
co-laborar´an el objetivo fijado, es decir, las empresas ofrecen tarjetas de desarrollo hechas para
aplicaciones espec´ıficas como: comunicaciones, procesamiento digital de se˜nales, computaci´on,
transmisi´on de se˜nales, uso acad´emico, etc.
Para elegir la tarjeta de desarrollo adecuada se deben tomar en cuenta generalmente varios
aspectos. En primer lugar se debe analizar si el dispositivo central (FPGA), de la tarjeta,
tiene las capacidades necesarias para el proyecto. Los perif´ericos integrados que tenga cada
modelo de tarjeta de desarrollo, son tambi´en importantes para la selecci´on de ´esta. Un factor
m´as para le elecci´on es la familiaridad que el usuario tenga con alg´un tipo de FPGA ya sea
de un determinado fabricante o dispositivo. Por ´ultimo se debe tener en cuenta tambi´en la
disponibilidad en el mercado de la tarjeta que se pretenda usar.
Para desarrollar este proyecto se opto por usar la tarjeta Spartan 3E Starter Kit
(S3E), vista en la Figura 2.12. Esta se eligi´o por su uso com´un en proyectos de desarrollo e
investigaci´on acad´emica, por su amplia comercializaci´on y su capacidades de funcionamiento
y conexi´on; que aunque son b´asicas cumplen con los requerimientos para el desarrollos de
este sistema.
Una de las caracter´ısticas principales y m´as ´utiles de esta tarjeta es su capacidad de
programar los dispositivos en ella (FPGA, CPLD, PROM, etc.) a trav´es de una conexi´on
Figura 2.12: Tarjeta Spartan 3E Starter Kit
registros del sistema durante el funcionamiento del dispositivo FPGA. En la lista siguiente
se encuentran las principales caracter´ısticas de dispositivos que componen esta placa:
FPGA Xilinx XC3S500E.
232 Pines de Entrada y Salida.
10432 Celdas L´ogicas.
Memoria PROM de Xilinx de 4 Mbit, para configuraci´on o programaci´on del FPGA.
CPLD Xilinx XC2C64CA con 64 macroceldas.
Memoria FLASH serial SPI de 16Mbits.
LCD de 2 l´ıneas por 16 caracteres.
Conector PS/2.
Conector VGA.
Dos conectores RS-232 de 9 pines
Oscilador de reloj de 50 MHz.
Conector para expansi´on Hirose FX2.
Tres conectores de expansi´on Digilent de 6 pines.
Convertidor Digital-Anal´ogico de cuatro salidas basado en protocolo SPI.
Convertidor Anal´ogico-Digital con dos entradas y ganancia programable.
Selector rotatorio con interruptor de bot´on de presi´on central.
Ocho LEDs.
Cuatro interruptores de deslizamiento.
Cuatro interruptores de bot´on.
Conector SMA.
Por s´ı mismo el dispositivo FPGA tiene caracter´ısticas de operaci´on importantes, para
mantener la elecci´on de su uso, tales como:
Generar y trabajar con m´as de 8 posibles frecuencia de reloj desde los 200KHz hasta
los 333MHz.
M´ultiples est´andares de voltaje.
Est´andares: LVCMOS, LVTTL, HSTL, SSTL, GTL, PCI33 y PCI66.
Abundantes recursos l´ogicos.
Bloques internos de memoria RAM.
Registros de corrimiento.
Multiplexores.
Multiplicadores (18x18).
2.2.3.1. Componentes de la Tarjeta S3E.
Interruptores Deslizables. La tarjeta S3E tiene cuatro interruptores deslizables estos interruptores est´an situados en la esquina inferior derecha de la tarjeta como se ve en la
Figura 2.12 y est´an etiquetados como Switch 3 (SW3) hasta Switch 0 (SW0). Cuando el
interruptor se coloca en la posici´on superior, conecta al FPGA a 3.3 V generando un 1 l´ogico.
Por otro lado cuando se encuentra en la posici´on baja, el interruptor conecta al FPGA a tierra,
generando un 0 l´ogico. Un cambio en la posici´on del interruptor tarda aproximadamente 2ms
para que el valor l´ogico correspondiente se estabilice.
Interruptores Push-Boton. La tarjeta dispone de 4 interruptores de contacto, y un in-terruptor con la capacidad de rotar a la derecha, izquierda y funcionar como inin-terruptor de
contacto. Estos se encuentran en la parte inferior izquierda de la tarjeta (ver Figura 2.12).
Etiquetados con el prefijo BTN seguidos de su posici´on (Norte, Sur, Este u Oeste). Al
pre-sionar cualquiera de estos interruptores, se env´ıan 3.3 V al FPGA, generando un 1 l´ogico, y
un 0 l´ogico cuando este no se presiona. Usualmente es necesario un circuito antirebotes para
estos interruptores, posible de implementar mediante c´odigo VHDL.
LEDs. La Spartan 3E tiene 8 luces indicadoras (LEDs). Cada una tiene un lado conectado a tierra y el otro lado conectado a un pin de la tarjeta, por medio de una resistencia limitadora
de corriente de 390 KOhm. Estos est´an ubicados justo arriba de los interruptores deslizables
(ver Figura 2.12). Las l´ıneas de conexi´on de estos LEDs est´an multiplexadas con algunas del
Oscilador de Reloj. Esta tarjeta soporta el uso de tres fuentes para la se˜nal de entrada de reloj, todas est´an situadas bajo el logo de Xilinx en la tarjeta y cerca del logo de Spartan
3E, como se ve en la Figura 2.12. Estas tres fuentes son:
Oscilador integrado.
Conector SMA.
Conector DIP de 8 Pines.
La tarjeta incluye un oscilador de 50 MHz con un ciclo ´util de 40 %. La precisi´on del
oscilador es de±2500 Hz.
Para proporcionar una se˜nal de reloj externa, se puede conectar esta se˜nal de entrada
por medio del conector SMA. Opcionalmente el FPGA puede generar se˜nales de reloj u otro
tipo de se˜nales de alta velocidad y proporcionarlas, a otro dispositivo, por el mismo conector
SMA.
El conector DIP de 8 pines incluido en la tarjeta acepta circuitos integrados osciladores
del mismo tipo (DIP 8-pin). Se usa este conector cuando el FPGA requiere de frecuencias
diferentes a la de 50 MHz o que no puedan ser generadas por el DCM del FPGA.
Puertos RS-232. Como se ve en la parte superior derecha de la Figura 2.12, la tarjeta S3E tiene dos puestos seriales RS-232: un conector hembra DB9 DCE y un conector macho DTE.
El puerto estilo DCE se conecta directamente al puerto serial disponible en la mayor´ıa de las
computadoras personales actuales y a estaciones de trabajo mediante un cable serial est´andar.
El conector estilo DTE puede ser usado para controlar otros dispositivos con interfaz RS-232.
El FPGA proporciona una salida de datos seriales usando los niveles LVTTL o LVCMOS a
un dispositivo Maxim232, el cual convierte los valores l´ogicos a un nivel de voltaje apropiado
RS-232. De igual forma el dispositivo Maxim convierte las se˜nales RS-232 seriales de entrada
a un nivel LVTTL adecuado para el FPGA. Un resistor entre el dispositivo Maxim y los
pines de entrada del FPGA lo protegen contra conflictos accidentales en los niveles l´ogicos
de voltaje.