You are on page 1of 172

INSTITUTO POLITECNICO

NACIONAL
ESCUELA SUPERIOR DE INGENIERIA

MECANICA
Y ELECTRICA

Desarrollo e Implementaci
on de un Sistema de
Localizaci
on Geogr
afica en FPGA

TESIS

QUE PARA OBTENER EL TITULO


DE:
INGENIERO EN COMUNICACIONES Y

ELECTRONICA

Presenta:
C
esar Luis P
erez Bautista

Asesor:
Ra
ul Ruiz Meza

Abril 2015

Indice General

Indice General

III

Lista de Figuras

VII

Lista de Tablas

XI

Objetivos

XIII

Introducci
on

1. Planteamiento del Problema.

2. Teora Relacionada.

2.1. Sistema de Posicionamiento Global. . . . . . . . . . . . . . . . . . . . . . . . .

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 Comunicacion 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.1. Estructura de un TFT-LCD. . . . . . . . . . . . . . . . . . . . . . . .

43

iii

INDICE GENERAL

2.3.2. Pantalla LQ043T3DX02. . . . . . . . . . . . . . . . . . . . . . . . . . .

45

2.4. SD Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

2.4.1. Caractersticas de la Tarjeta SD. . . . . . . . . . . . . . . . . . . . . .

49

2.4.2. Protocolo de Comunicacion 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 Aplicacion 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 Fsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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 Fsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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 Fsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Fsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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.1. Obtenci
on y Desplegado de Coordenada Geografica. . . . . . . . . . . 128

IPN

iv

ESIME

INDICE GENERAL

3.5.2. Obtenci
on, Decodificacion 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

Bibliografa

157

ESIME

ICE

Lista de Figuras

1.1. Diagrama a Bloque del Sistema Propuesto . . . . . . . . . . . . . . . . . . . .

1.2. Diagrama del Sistema Representando las Conexiones Fsicas. . . . . . . . . .

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 ubicacion del punto x. . . . .

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.

2.5.

. . . . . . . . . . . . . . . .

14

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 Garca; 6. Estaci
on de Monitoreo
Kwajalein

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.6. Organizaci
on de
orbitas satelitales y la separacion ente cada satelite 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.15. Unidad B
asica Pixel y Sustratos en Conjunto. . . . . . . . . . . . . . . . . . .

43

vii

LISTA DE FIGURAS

2.16. Panel TFT-LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

2.17. Pantalla TFT-LCD LQ043T3DX02 fsicamente. . . . . . . . . . . . . . . . . .

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 fsica 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 inicializacion e identificacion. . . . . . . . . . . . . .

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 fsica 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 modulo RGM-3000. . . . .

97

3.7. Imagen Comparativa de Ubicacion. . . . . . . . . . . . . . . . . . . . . . . . . 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 Envo/Recepcion de Datos . . . . . . . . . . . . 114
3.12. Spartan 3E con placa fabricada para la conexion de la tarjeta SD. . . . . . . 117

IPN

viii

ESIME

LISTA DE FIGURAS

3.13. Datos almacenados en la tarjeta SD. . . . . . . . . . . . . . . . . . . . . . . . 117


3.14. Interfaz fsica 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 Informacion 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 Logicos en el Dispositivo FPGA. . . . . . . 145
4.4. Ventana Principal del Software iMPACT . . . . . . . . . . . . . . . . . . . . . 146
4.5. Sistema en Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.6. Resultado en Pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

ESIME

ix

ICE

Lista de Tablas

2.1. Par
ametros de Transmisi
on del Estandar NMEA-0183 . . . . . . . . . . . . .

18

2.2. Caractersticas 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
3.6. Conexi
on entre pines del FPGA y memoria MT46V32M16 . . . . . . . . . . . 119

xi

Objetivos

Objetivo general
Desarrollar e implementar el prototipo de un sistema de localizacion geografica (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 Lenguaje 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 informacion de coordenadas geograficas y mapas digitales.
5. Implementar el prototipo de SILOG.
6. Realizar pruebas experimentales, obtener datos relevantes para una retroalimentaci
on
y proyectar correcciones al prototipo.

xiii

Introducci
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 desplazamiento 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 satelite, el sistema de posicionamiento global o GPS por
sus siglas en ingles, ha tenido el objetivo de ser u
til en la navegacion aerea, martima y
terrestre [1].
La actual diversidad de hardware y software en el mercado proporciona una gran variedad
de dispositivos que utilizan la tecnologa GPS para solucionar necesidades de localizaci
on,
rastreo y/o navegaci
on. Teniendo como parte fundamental, entre otras, el sistema de posicionamiento global (GPS), en este trabajo se describe el desarrollo de un Dispositivo de
Localizaci
on Geogr
afica; cuya funci
on sera la de desplegar en una pantalla coordenadas GPS
aproximadas de s mismo junto con una representacion grafica de esa ubicacion, es decir, un
mapa digital.
El sistema aqu presentado, pretende en un futuro formar parte de un sistema mas complejo que tendr
a el objetivo de automatizar o facilitar las mediciones de campo electrico
requeridas en puntos geogr
aficos especficos [2].
Generalmente un dispositivo como este sera desarrollado usando un microprocesador o
microcontrolador, raz
on por la cual existen microprocesadores especializados para dispositivos
de localizaci
on o navegaci
on a traves de GPS. Sin embargo este trabajo plantea la alternativa
del uso de un circuito integrado FPGA para implementar el sistema planteado.

Objetivos

Los dispositivos de arreglos de compuertas programables en campo (FPGA), como su


nombre lo dice, est
an basados en arreglos logicos de compuertas, interconectados por interruptores programables. Los FPGA ofrecen grandes ventajas a los dise
nadores de aplicaciones
mediante complejos circuitos digitales, ya que la programabilidad de estos dispositivos permiten simular, e incluso desarrollar aplicaciones de manera rapida y sencilla en las tarjetas
de desarrollo que los fabricantes proveen.
Para llevar a cabo este proyecto, se selecciono el circuito integrado (FPGA) XCS500E, el
cual esta montado en la tarjeta de desarrollo Spartan 3E Starter Kit Board y esta fabricada por la empresa Xilinx. Esta tarjeta fue seleccionada por sus diferentes componentes
integrados, los cuales se describir
an en el captulo 2, ademas de la ventaja de realizar la
programaci
on del dispositivo FGPA a traves del puerto USB.
Los perifericos necesarios en este prototipo y para los que se desarrollo un control mediante
codigo 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
servira de almacenamiento temporal para la informacion de mapas digitales; un m
odulo GPS
que a traves de una interfaz RS232 transmite coordenadas GPS y una pantalla TFT-LCD,
en la cual se visualizan las coordenadas geograficas y los mapas digitales.
Para comprender el funcionamiento de estos elementos, en el captulo 2 se describen
los fundamentos b
asicos de cada una de estas partes que conformaran el prototipo. En el
captulo 3, se describen las conexiones fsicas entre los perifericos utilizados y el FPGA. En el
captulo 3 tambien se detalla c
omo se desarrolla el control o la comunicacion con los elementos
elegidos mediante la l
ogica de programacion en VHDL y los resultados obtenidos del control y
conexion individual de estos componentes y el FPGA. Finalmente en el captulo 4 se revisan
los resultados del funcionamiento de la puesta en funcionamiento del sistema completo.

IPN

ESIME

Captulo 1.

Planteamiento del Problema.

La existencia del sistema de posicionamiento global (por sus siglas en ingles GPS) proporciona una gran ventaja para el desarrollo de nuevas aplicaciones en electronica o el mejoramiento de algunas otras.
Hay aplicaciones o sistemas electronicos en los que, ademas de su funcionamiento intrnseco, una mejora substancial sera agregar las caractersticas de un sistema de navegacion. Este
tipo de sistemas son aquellos en los que parte de su funcionamiento tiene relacion con la
localizaci
on o ubicaci
on de puntos geograficos. Un ejemplo mas especfico son las mediciones
de campo electrico que se deben realizar en un area de terreno para obtener la conductividad
electrica del suelo[3]. Este sistema realiza una serie de mediciones en un area geografica extensa 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 agilizara el proceso completo de mediciones.
Una opci
on es agregar simplemente un equipo de navegacion 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, u
nicamente desarrollados para
cumplir con las funciones b
asicas necesarias en la navegacion; por lo que la posibilidad de
integraci
on a otro sistema con funcionalidades extras o diferentes, es practicamente nula.
Como consecuencia de la intension de tener un sistema de navegacion que pueda integrarse
al ya mencionado, de obtenci
on de la conductividad del suelo, en este documento se plantea

Planteamiento del Problema.

el desarrollo de un prototipo de sistema de localizacion geografica.


Habitualmente un dispositivo de navegacion comercial cumple con ciertas particularidades
de hardware, como las siguientes:
Modulo de localizaci
on GPS.
Una pantalla de visualizaci
on (con resolucion de 480x272 o 640x480 pixeles).
Ranura para la conexi
on de una tarjeta de memoria (donde la base de mapas digitales
se almacena).
Una batera para su funcionamiento.
Salida de audio (para indicaciones por voz).
Tomando en cuenta estas caractersticas, se proponen para el desarrollo del sistema, el
uso de las caractersticas de principal utilidad siendo estas las primeras tres de la lista.
Para enlazar los elementos de hardware que formaran el sistema de localizacion geografica,
se hace necesario el uso de un dispositivo (chip) central que dirija, procese y direccione la
informaci
on. En este caso, la seleccion de un dispositivo para realizar esta tarea se centro 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 modulos de control necesariamente u
tiles, sin
dejar recursos prestablecidos sin uso como podra suceder con un microcontrolador.
El FPGA, por su capacidad de manejar rutinas de control paralelamente, puede intercambiar 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
cuyo software de control es reconfigurable.

IPN

ESIME

Adoptado el FPGA como chip central y a


nadiendo las caractersticas basicas para un
sistema de navegaci
on, el sistema toma forma y se puede esquematizar como se observa en
la Figura 1.1. En general se busca que el sistema sea capaz de mostrar en pantalla datos
geograficos de la ubicaci
on actual y mostrar una imagen o mapa digital de tal ubicacion.

Figura 1.1: Diagrama a Bloque del Sistema Propuesto


Tomando en cuenta las caractersticas 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 obtencion de coordenadas geograficas.
Desplegado de informaci
on: Pantalla de cristal liquido basada en transistores de pelcula
delgada (TFT-LCD) LQ043T3DX02, con una resolucion de 480x272 pixeles.
1

Esta se seleccion
o por su uso frecuente en proyectos de investigaci
on y desarrollo academico

ESIME

ICE

Planteamiento del Problema.

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 conexion de los dispositivos que el FPGA controlar
a, para as posteriormente agruparlos en la estructura del sistema
buscado.
Atendiendo a esta finalidad previa, en primer lugar se realizo la adaptacion o conexi
on
fsica entre la tarjeta de desarrollo Spartan 3E (que contiene al chip central de procesamiento,
FPGA) y los dispositivos perifericos que se utilizaran.
Es de interes mencionar: la comunicacion entre FPGA y el modulo receptor GPS se hace
por medio de un est
andar RS232 y se aprovecha la interfaz fsica existente en la tarjeta
Spartan 3E. Otra conexi
on fsica, de la pantalla TFT-LCD, requirio del uso de uno de los
conectores de expansi
on de la tarjeta debido al n
umero de lneas de comunicacion que la
pantalla necesita (40); misma conexion de expansion que se uso para la interfaz con la tarjeta
SD.
Parte del prop
osito principal del sistema es mostrar en pantalla imagenes 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 imagenes digitales de mapas es el
servidor de www.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 por openstreetmap.org es un formato de imagen PNG. Sin embargo, asegurando que este sistema esta en su fase de desarrollo se utilizaran las imagenes
transformadas a un formato de imagen basico 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
promedio de una imagen a procesar (1MB), por tanto, se hace esencial el uso de un dispositivo

IPN

ESIME

de memoria para el almacenamiento temporal de estos datos. Acertadamente, la tarjeta de


desarrollo Spartan 3E contiene el circuito integrado MT46V32M16, que es una memoria
dinamica de acceso aleatorio sncrona con doble velocidad de datos (DDR-SDRAM).
Obtenidas las interfaces fsicas se procedio a desarrollar el codigo en lenguaje VHDL que
controlar
a el comportamiento e intercambio de informacion con cada periferico, 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 (codigo en HDL)
que realice esta tarea. La implementacion de este control es extensa y compleja, por lo que
se busco software libre para el control de la tarjeta, sin embargo este codigo no se tiene de
manera gratuita y fue necesario implementarlo por completo.
El sistema a implementar, considerando las interfaces fsicas y los elementos requeridos
para el funcionamiento total, puede visualizarse en la Figura 1.2, que ejemplifica la totalidad
de elementos fsicos utilizados en el sistema y da una imagen mas cercana del producto que
se obtendr
a con el planteamiento aqu expuesto.
Puntualizando, el sistema que se desea obtener (en su primera fase) tendra las siguientes
caractersticas de operaci
on:
Obtenci
on y desplegado de coordenadas geograficas de ubicacion.
Visualizaci
on de mapas digitales.
Almacenamiento de mapas digitales en una tarjeta SD.

ESIME

ICE

Planteamiento del Problema.

Figura 1.2: Diagrama del Sistema Representando las Conexiones Fsicas.

IPN

ESIME

Captulo 2.

Teora Relacionada.

Este captulo pretende desarrollar los conocimientos basicos acerca de los componentes
fundamentales que se requieren para formar un Sistema de localizaci
on Geogr
afica, exponiendo informaci
on sobre su evoluci
on y/o funcionamiento. En este captulo tambien se expone
informaci
on sobre formatos digitales de imagen relacionados con los mapas que se emplear
an.
Por u
ltimo el captulo contiene la descripcion 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 aerea
estadounidenses, posteriormente y por diversos motivos su uso se extendio a la comunidad
civil. Los principios b
asicos de su funcionamiento estan regidos por efectos fsicos predecibles y la localizaci
on de un usuario (receptor) es determinada por ecuaciones geometricas y
la compensaci
on de los errores a los cuales el sistema es susceptible. La informacion necesaria para que un receptor determine su posicion esta proporcionada por los satelites que
conforman el sistema. Los satelites envan se
nales de radiofrecuencia, con codigos que son
interpretados por el receptor para la determinacion de la localizacion propia. Existen diversidad de receptores funcionales en el mercado e incluso los dispositivos internos de recepci
on
son ahora comercializados para desarrollo de aplicaciones especficas en ingeniera.

Teora Relacionada.

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 conocidas desde este punto a alg
un otro punto referencial. En la Figura 2.1 el punto x desconocido
se encuentra en un eje horizontal, esto es para un caso unidimensional, si la posicion del
punto S1 y su distancia al punto x son conocidas, la ubicacion del punto desconocido puede
estar en dos direcciones, a la izquierda o a la derecha de S1 . Para determinar cual 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 punto x son conocidas para S2 , entonces la
ubicacion del punto x ser
a donde las distancias de los dos puntos S1 y S2 tengan intersecci
on.

Figura 2.1: Posicion 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 ubicacion 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 ubicacion correcta entre estas posibilidades,
un tercer punto de referencia y su distancia al punto x son necesarios.
De manera similar encontrar un punto en un espacio tridimensional requiere de cuatro
puntos y cuatro distancias para determinar su ubicacion. En un espacio tridimensional dos
esferas en intersecci
on generan una circunferencia en la cual puede estar ubicado el punto
desconocido. Este crculo hace interseccion con otra esfera que produce dos posibilidades de
ubicacion, como se ve en la Figura 2.3, y por u
ltimo una esfera mas nos dara la ubicacion del
punto buscado.
Mediante la Ecuaci
on 2.1, es posible determinar la localizacion de un punto desconoci-

IPN

10

ESIME

2.1 Sistema de Posicionamiento Global.

Figura 2.2: Localizaci


on de un punto en un espacio bidimensional

Figura 2.3: Intersecci


on de tres esferas, dos posibilidades de ubicacion del punto x.

ESIME

11

ICE

Teora Relacionada.

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 satelites y sus correspondientes distancias


al receptor, ya que la Ecuaci
on 2.1 toma en cuenta el punto desconocido (receptor), el punto
conocido (satelite) y la distancia entre estos dos, al usar cuatro satelites habra una ecuaci
on
para cada satelite.
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

n4

(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 satelite, que es enviada en la informacion transmitida por cada uno de
los satelites. Para resolver el sistema de Ecuaciones 2.2, es necesario conocer las distancias
correspondientes entre cada satelite y el receptor, para esto se desarrolla una particular
metodologa.

2.1.1.2.

Determinaci
on de la distancia.

El metodo usado para medir las distancias necesarias y obtener la ubicacion del receptor
se basa en la propagaci
on de ondas de radiofrecuencia. Uno de los principios basicos de las
ondas de radiofrecuencia es que viajan a una velocidad conocida; velocidad que se aproxima
a los 3x108 m/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 medicion del tiempo transcurrido desde la
emision de la se
nal hasta su recepcion, es necesario que los relojes tanto del transmisor como
del receptor esten sincronizados. Desde un punto de vista practico esto es extremadamente
difcil y un error en la sincronizaci
on de 1s puede afectar el calculo de la distancia hasta en
300m.

IPN

12

ESIME

2.1 Sistema de Posicionamiento Global.

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 atmosfera terrestre presenta un medio particular
en el cual las ondas de radio act
uan de manera menos predecible que en el espacio vaco. En
la atmosfera estas pueden viajar sin alteracion, ser reflejadas o incluso tener perdidas de
energa.
En algunos metodos de radio-localizacion las reflexiones que proporciona la ionosfera de la
tierra (para cierto rango de frecuencias), fueron utilizadas como ventaja, aunque la ionosfera
no es constante y provoca inexactitud en la medicion del tiempo de propagacion. La atmosfera
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 satelite.
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 informacion enviada por el satelite
mejorando la precisi
on en la ubicacion 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 transmitida llega al receptor. Esta fuente de error debe ser considerado en el modelo matematico,
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 posicion de alguno de
los satelites, ri es la distancia aparente (psudorange) entre receptor y satelite, y bu 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 satelite y el
receptor, dada la ubicaci
on del satelite, y con esto encontrar la ubicacion del receptor.
Teoricamente 4 satelites son suficientes para determinar la posicion del receptor (ver
Figura 2.4, sin embargo un receptor tiene en lnea de vista mas de 4 satelites a la vez, en la

ESIME

13

ICE

Teora Relacionada.

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 organizacion de las orbitas
satelitales, con lo cual se pueden agregar mas datos al calculo de la posicion del receptor.
Aunque el sistema de ecuaciones aumenta con cada satelite agregado, los receptores suelen
estar capacitados para manejar esta informacion y as ser mas precisos en la localizacion del
receptor.

2.1.2.

Segmento de Control del Sistema GPS

La ubicaci
on de los satelites es conocida debido a que estos estan organizados en orbitas
definidas. Una parte importante de la organizacion de los satelites es el control y seguimiento
de las orbitas, este control y seguimiento es esencial para evitar errores en la precision 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
Segmento de control

IPN

14

ESIME

2.1 Sistema de Posicionamiento Global.

El segmento de usuario, se puede decir, es todo lo relativo a los receptores GPS y el procesamiento de las se
nales correspondientes. El segmento de control consiste de cinco estaciones
en tierra, cuyo prop
osito fundamental es monitorear el desempe
no, ubicacion y funcionamiento de los satelites GPS.
Incluyendo la estaci
on principal, las estaciones del segmento de control, estan dispersas a
lo largo de la lnea ecuatorial (o lo mas cercano posible), alrededor de la tierra. La Figura 2.5
muestra la ubicaci
on de estas estaciones. La estacion principal de control se ubica en la base
Falcon de la fuerza aerea estadounidense en Colorado Springs.

Figura 2.5: Segmento de Control. Estaciones terrestres: 1. Estacion Principal Base de la fuerza aerea 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 Garca; 6. Estaci
on de Monitoreo Kwajalein

Toda la informaci
on recolectada por las estaciones de control acerca de los satelites es
enviada a la estaci
on principal. Los principales objetivos de esta estacion son:
1. Monitorear el desempe
no del sistema GPS.
2. Generar y transmitir a los satelites informacion de correccion en la ubicacion de estos
debidas a desplazamientos orbitales.

ESIME

15

ICE

Teora Relacionada.

3. Detectar y corregir un error en los satelites, as minimizar las afectaciones al sistema


de posicionamiento.

El segmento espacial define la composicion del sistema de satelites que esta compuesto
por 24 de ellos, divididos en seis orbitas y en cada una de estas se ubican cuatro satelites.
Estas orbitas est
an separadas por un angulo de 60 para cubrir 360. El radio de la orbita
satelital es de 26560km y los satelites realizan un viaje alrededor de la tierra dos veces por
da. El cuerpo del satelite 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 satelite, estos estan ubicados
como se ve en la Figura 2.6. En cualquier momento y ubicacion, un receptor tiene la posibilidad de recibir la se
nal de m
as de 4 satelites, generalmente puede recibir la se
nal de hasta
11 satelites, esto es gracias a la organizacion que se tiene.

Figura 2.6: Organizaci


on de
orbitas satelitales y la separacion ente cada satelite en una orbita

Los satelites transmiten una se


nal de radiofrecuencia y en esta va contenida la informaci
on
que se necesita para calcular la posicion del usuario, ademas de otros datos que ayudan a
corregir errores en la misma operacion. Esta se
nal es de una frecuencia especfica a la cual el
receptor est
a dise
nado para captar.

IPN

16

ESIME

2.1 Sistema de Posicionamiento Global.

2.1.3.

C
odigos y Frecuencias

Existen b
asicamente dos tipos de codigos, que son enviados por los satelites, llamados:
Codigo de Adquisici
on Aleatoria (C/A) y Codigo de Precision (P). Estos codigos son transmitidos simult
aneamente, no obstante el codigo P contiene informacion que no es codificable
para receptores de usuarios civiles, es decir, es el codigo que se usa en sistemas militares. B
asicamente el c
odigo P se usa para mejorar la precision en el calculo realizado con la informaci
on
del codigo 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 llama L1 mientras que a la frecuencia
de 1227.6 MHz, L2 . La frecuencia portadora L1 contiene la informacion de ambos codigos
C/A y P, por otro lado en la portadora L2 solamente se enva el codigo P. Cualquier receptor
GPS debe estar capacitado para recibir como mnimo la frecuencia L1 .

2.1.4.

Protocolo de Comunicaci
on NMEA

La asociaci
on nacional de dispositivos electronicos marinos (NMEA por sus siglas en
ingles)es un grupo de productores, distribuidores, comerciantes, instituciones educativas y
otros grupos interesados en dispositivos electronicos especializados en el ambito martimo,
todo esto sin fines de lucro. Entre los logros mas importantes de esta asociacion se encuentra
el desarrollo de un est
andar para dispositivos martimos, que especifica tanto la interfaz
electrica de los dispositivos como el protocolo de comunicacion entre los mismos, este estandar
es nombrado NMEA-0183 cuya primera version se presenta en Marzo de 1983.
La interfaz electrica que establece el estandar NMEA-0183 es una interfaz asncrona
serial que trabaja con los par
ametros que se ven en la Tabla 2.1. Este estandar 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 parametros
electricos del est
andar de conexi
on EIA RS-422, no obstante, en la practica es posible utilizar
una comunicaci
on a traves de un puerto EIA-RS232.

Los datos, en este protocolo, se transmiten en forma de frases. Unicamente


caracteres
ASCII se permiten, adem
as de los smbolos para retorno de lnea (CR) y siguiente lnea (LF)

ESIME

17

ICE

Teora Relacionada.

Tabla 2.1: Par


ametros de Transmision del Estandar NMEA-0183
Tasa de Baudios
4800
Bits de datos

Bits de Paro

Bits de Paridad

ninguno

cada frase comienza con el smbolo $ y terminan con <CR><LF>. Existen tres tipos
de frases: frases de propietario, frases de peticion y frases de transmisor.
Este est
andar permite a los productores de dispositivos definir sus Frases de Propietario, la frase comienza con $P y despues de esto vienen tres letras que representan el
identificador del productor, seguidas por los campos de informacion 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 peticion (Query). El
siguiente campo es el identificador de la frase o informacion que se requiere, un ejemplo de
esto sera:
$CCGPQ,GGA<CR><LF>
El estandar NMEA-0183 se define para m
ultiples dispositivos electronicos de los que las
Frases de Transmisor pueden provenir y contener informacion correspondiente a cada uno.
Los primeros dos caracteres despues de $ son el identificador de transmisor, especficamente
para dispositivos GPS el identificador es GP; aunque existen muchos mas. Le siguen tres
caracteres que representan el identificador de frase, seguidos por varios campos de datos
separados por comas y al final los smbolos de retorno de lnea/siguiente lnea.
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 informacion sin
separacion entre ellas. Los campos de datos son definidos para cada frase en particular, las
frases mas comunes para dispositivos GPS se desglosan a continuacion.

IPN

18

ESIME

2.1 Sistema de Posicionamiento Global.

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

0=Invalido 1=GPS, 2= GPS Diferencial

07

Satelites en vista

1.0

Precisi
on Horizontal

9.0, M

Altitud, Metros

0.0, M

Separaci
on Geoidal, Metros
Campo Vaco
Campo Vaco

*18

C
odigo de Verificacion

<CR><LF>

Fin de cadena

g=Grados, h=Horas, m=Minutos, s=Segundos

Frase Informaci
on Mnima Recomendada de Navegaci
on o RMC.

$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10<CR><LF>

Donde:

ESIME

19

ICE

Teora Relacionada.

$GPRMC

Identificador de Frase

161229.487

Posici
on UTC (hhmmss.ss)

A=Datos Validos V=Datos Invalidos

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 da/mes/a
no
Variaci
on Magnetica(East-West)

*18

C
odigo de Verificacion 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=Datos Validos V=Datos Invalidos

*2D

C
odigo para Verificacion 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>
Donde:

IPN

20

ESIME

2.1 Sistema de Posicionamiento Global.

$GPGSA

Identificador de Frase GSA

(A)=Auto seleccion de posicion 2D o 3D (M = manual)

Posici
on 3D (1= no pos., 2 = Pos. 2D, 3 = Pos. 3D)

04

Satelites usados para obtener posicion

2.5

Precisi
on de la posicion

1.3

Precisi
on Horizontal de la pos.

2.1

Precisi
on Vertical de la pox.

*39

C
odigo para Verificacion 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 satelites en vista

N
umero de frases de la informacion completa

Frases 1 de 2

08

N
umero de satelites en vista

01

N
umero de identificacion PRN de satelite

40

Elevaci
on, grados

083

Acimut, grados

46,02,17,...,45

Relaci
on Se
nal/Ruido

*75

C
odigo para Verificacion 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>
Donde:

ESIME

21

ICE

Teora Relacionada.

$GPVTG

Identificador de Frase de velocidad verdadera

054.7,T

Direcci
on Real (grados)

034.4,M

Direcci
on Magnetica

005.5,N

Velocidad en Nudos

010.2,K

Velocidad en Km/h

*48

C
odigo para Verificacion de errores

<CR><LF>

Fin de frase

2.1.5.

M
odulo Receptor GPS RGM-3000.

Un receptor GPS es un dispositivo electronico capaz de recibir la se


nales de los satelites
que orbitan el planeta y obtener su ubicacion en la tierra. Para este proyecto se uso el
modulo receptor GPS: RGM-3000, dispositivo basado en la arquitectura SiRF Star II
y dise
nado con el algoritmo de navegacion de Royaltek.
Entre sus caractersticas ofrece: 12 canales paralelos para la transmision de datos, es compatible con el protocolo NMEA-0183, tiene una excelente recepcion en ambientes urbanos
o con grandes obst
aculos como monta
nas o ca
nones, cuenta con una doble proteccion contra
reflexiones en la se
nal GPS, adem
as incluye una memoria interna en la que puede almacenar
hasta 1 Mega-bits (Mb) de informacion . El modulo receptor RGM-3000 se ve fsicamente
en la Figura 2.7.

Figura 2.7: Modulo receptor RGM-3000

IPN

22

ESIME

2.1 Sistema de Posicionamiento Global.

La Tabla 2.2, resume las caractersticas fsicas, electricas y de operacion del modulo RGM3000 [4].
Tabla 2.2: Caractersticas del Modulo RGM-3000
Caractersticas de Operaci
on
Canales

12

Banda

L1, 1575.42 MHz

Adquisici
on

Codigo C/A

Tasa de Actualizacion de Navegacion

1/s

Caractersticas de Precisi
on
Localizaci
on

1a5m

Velocidad

0.1 m/s

Altitud M
axima

18000 m

Velocidad M
axima

515 m/s

Aceleraci
on M
axima

4g

Caractersticas El
ectricas
Alimentaci
on

3.310V

Consumo de Corriente

180 mA

Como puede notarse en la Tabla 2.2, este modulo receptor realiza la adquisicion del codigo
C/A, mediante frecuencia portadora L1. La informacion que se obtiene se actualiza una vez
por segundo suficientemente u
til para mantener una navegacion optima por cualquier medio.
En la parte media de la Tabla 2.2 se visualiza que este dispositivo proporciona una precision de 1 a 5m en lo que respecta a la ubicacion 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 calculo de la
velocidad de desplazamiento. Aunque en general se tiene un buen desempe
no en cuanto a la
precision de ubicaci
on, existen lmites para este modulo GPS, los parametros de rendimiento
maximo en altitud y velocidad pueden observarse en la Tabla 2.2. Por u
ltimo se observa, en
la Tabla 2.2, los requerimientos de energa necesarios.
La interfaz fsica del m
odulo se realiza a traves de un conector de 20 pines, en la Tabla
2.3 se muestra la relaci
on de pines del modulo RGM-3000:

ESIME

23

ICE

Teora Relacionada.

Tabla 2.3: Pines del Modulo RGM-3000


No. Pin

Nombre

No. Pin

Nombre

No. Pin

Nombre

No. Pin

Nombre

VCC

TIMEMARK

13

GPIO3

19

GPIO15

VCC

RESET

14

GPIO5

20

GND

TXA

BOOTSEL

15

GPIO6

21

GND

RXA

10

WAKEUP

16

GPIO7

22

GND

TXB

11

VBAT

17

GPIO10

RXB

12

RESERVED

18

GPIO13

Los pines 1 y 2 son las lneas de alimentacion positiva por donde se suministran los 3.3V,
mientras que por los pines 20-22 se conecta la lnea negativa. Los pines 3 y 4 son TXA y
RXB, estas lneas son de comunicacion de datos serial y es por donde el modulo transmite la
informaci
on de navegaci
on y recibe comandos respectivamente.
Por la lnea TXA se trasmite las cadenas de datos en un estandar 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 envan 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
continuamente.

IPN

24

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

2.2.

Arreglo de Compuertas Programables en Campo.

Los Arreglos de Compuertas Programables en Campo (por sus siglas en ingles FPGA)son
dispositivos semiconductores que estan compuestos por bloques programables relacionados a
traves de conexiones tambien 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 comercializados en el a
no de 1984. Existen dos tipos de FPGA, los que basan sus conexiones
programables en Antifusibles y los que estan basados en celdas de memoria SRAM. La
tecnologa usada, en estos primeros dispositivos fueron las celdas SRAM. Los FPGA de antifusibles fueron creados posteriormente, en 1991, por empresas diferentes a Xilinx. Los FPGA
basados en celdas SRAM son circuitos programables y borrables electricamente mientras que
los FPGA de antifusibles son programables electricamente pero no borrables, es decir, son
programables solamente una vez.
Esta tecnologa de circuito integrado utiliza un Lenguaje de Descripcion de Hardware
(HDL) para definir la configuraci
on que los componentes internos tendran y as ejecutar las
tareas que se necesitan de acuerdo a cada aplicacion. Existen varios tipos de HDLs, todos
creados con el objetivo de simplificar el dise
no de circuitos logicos, sin estar atados a una
tecnologa de circuitos integrados en particular.

2.2.1.

Estructura de un FPGA

La arquitectura de un FPGA es especfica dependiendo de cada dispositivo en particular,


no obstante, se puede denominar una estructura basica compuesta por cuatro bloques o
elementos programables fundamentales y las conexiones entre estos, que son:
Bloque L
ogico Configurable (CLB).
Bloques de Entrada/Salida (IOB).
Bloques RAM (Block RAM).

ESIME

25

ICE

Teora Relacionada.

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 basica en un FPGA con los cuales se implementan la
logica combinatoria necesaria en diferentes aplicaciones. Cada CLB esta compuesto por varios
subbloques diferentes. Un CLB se divide en cuatro partes llamadas Slices, usualmente se
agrupan en pares, el par izquierdo realiza operaciones logicas y de almacenamiento, mientras
que el par de la derecha solamente puede realizar funciones logicas.
Los slices, a su vez est
an compuestos por componentes logicos mas basicos, dentro de
cada slice se encuentran: dos bloques de logica combinatoria o tablas de consulta (LUT),
dos elementos de almacenamiento que pueden ser usados como registros o para sincronizar
las salidas con las se
nales de reloj (Flip-Flop), dos multiplexores y compuertas adicionales

IPN

26

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

de logica aritmetica que complementan y simplifican la implementacion de practicamente


cualquier funci
on l
ogica. La Figura 2.9(a) muestra como un CLB esta dividido en un FPGA
y la Figura 2.9(b) muestra la composicion 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
logica booleana de cuatro variables puede ser implementada por una LUT, una funcion de
mas 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 logica aritmetica y de acarreo colaboran con la rapida y eficiente implementacion de
funciones matem
aticas.
Los Flip-Flops son de tipo D, con estos elementos se puede retener la salida de los bloques
LUT o de los multiplexores para mantener un registro o sincronizarlos con la se
nal de reloj.

ESIME

27

ICE

Teora Relacionada.

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 tecnicas de terminaci
on
de lnea. 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 va programable, unidireccional o bidireccional entre el pin
del empaque del FPGA y la l
ogica interna en este. Algunas de las caractersticas 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 vas 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, comparacion 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 va de entrada. Despues de estas
etapas la se
nal se puede usar en la logica interna del FPGA (ver Figura 2.10(a)).

IPN

28

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

Figura 2.10: Bloque de Entrada/Salida simplificado.


La va de salida comienza en las conexiones disponibles de un bloque IOB con la logica
interna del FPGA. Esta ruta lleva la se
nal a un multiplexor y despues a un elemento de tercer
estado. El multiplexor provee la opcion de redirigir varias se
nales a una misma salida (Figura
2.10(b)).
La ruta del tercer estado determina cuando la terminacion del bloque IOB sera de alta
impedancia. La l
ogica interna del FPGA puede accionar o determinar cuando la terminaci
on
del bloque IOB ser
a de alta impedancia seg
un sea necesario (Figura2.10(c)).

ESIME

29

ICE

Teora Relacionada.

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. Ademas de esto se observan otras cualidades
antes mencionadas de un bloque IOB, es decir, los diferentes tipos de terminacion de lnea
como pueden ser en resistores de Pull-Up o Pull-Down.
La Tabla 2.4 presenta la descripcion de las entradas y salidas hacia un bloque IOB que
se observa en la Figura 2.10.

Tabla 2.4: Descripcion de entradas y salidas del bloque IOB.


Pin
T

Salida de habilitacion del Tercer Estado.

T1

Entrada Flip-Flop (FF) 1 para habilitacion del Tercer Estado

T2

Entrada FF2 para habilitacion del Tercer Estado

TCE
S1
SCLK1
S2
SCLK2
SCE
E
EQ1
ECKL1
EQ2
ECKL2
ECE
SR

IPN

Descripci
on

Habilitador de Chip para FF1 y FF2


Entrada FF1 para sicronizacion de salida
Reloj para sincronizacion de salida por FF1
Entrada FF2 para sicronizacion de salida
Reloj para sincronizacion de salida por FF1
Habilitador de Chip para FF1 y FF2 de salida
Entrada despues de retraso programable
Entrada a traves de FF1
Reloj para sincronizacion de entrada por FF1
Entrada a traves de FF2
Reloj para sincronizacion de entrada por FF2
Habilitador de Chip para FF1 y FF2 de entrada
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 comparacion del pin E/S

E/S D

Par diferencial del pin E/S

30

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

2.2.1.3.

Block RAM

Los bloques de memoria interna RAM estan disponibles en practicamente todos los FPGA,
estos brindan un almacenamiento temporal dentro del FPGA para las aplicaciones que lo
requieran.
Dependiendo del dispositivo, los bloques RAM estan 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 sincronizacion especialmente cuando se trata de altas frecuencias de reloj, las principales tareas de un DCM
son:
Elimina Asimetras 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 produciendo una nueva frecuencia a partir de la entrante ya sea dividiendola y/o multiplic
andola por un factor.
Acondicionamiento de la se
nal de reloj para asegurarse de tener una se
nal de
salida con un ciclo u
til determinado.
Cualquiera de estas tareas o todas simult
aneamente

ESIME

31

ICE

Teora Relacionada.

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 asimetras en

la se
nal de reloj, que provee efectivamente de una se
nal sin retraso. El circuito rectificador
compensa el retraso y asimetras en la se
nal de reloj a traves 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 logica 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 factor Divisor
y otro Multiplicador. La frecuencia de salida es sintetizada a partir de la frecuencia de entrada
(CLKIN Figura 2.11) y los factores adecuados de multiplicacion o division. La unidad DFS
puede trabajar en conjunto con la unidad DLL o sin ella, no obstante, al no usar la unidad
DLL se corre el riesgo de tener retrasos en la nueva frecuencia sintetizada.

IPN

32

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

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 fraccion 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 traves de se
nales de salida
del mismo. Estas salidas proveen informacion 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: Descripcion de entradas y salidas del DCM.


Pin
PSINCDEC
PSEN

Descripci
on
Incremento/Decremento (1/0) del desplazamiento variable de fase
Habilitacion 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 retroalimentacion

RST
PSDONE

Reinicio asncrono del DCM


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
CLK2X180

Doble de la frecuencia CLKIN desplazada 0 en su fase


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 estan acoplados a la frecuencia CLKIN

STATUS

Indicadores del estado de los procesos del DCM

ESIME

33

ICE

Teora Relacionada.

2.2.2.

Configuraci
on de un FPGA.

Un HDL es un lenguaje usado para modelar la operacion funcional de una pieza de


hardware en forma textual. Aunque la mayor parte de las referencias bibliograficas se refieren
a un HDL como un lenguaje de programacion, esto no es completamente cierto. Un enfoque
mas adecuado de como definir a un HDL sera diciendo que es un lenguaje utilizado para
describir hardware digital.
Los HDLs se desarrollaron para solucionar la problematica 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 simulacion de circuitos integrados digitales, los cuales
son implementados en dispositivos logicos programables tal como un FPGA.
Con el tiempo se han generado muchos HDLs, algunos mas complejos que otros. Desde
hace a
nos existen dos principales lenguajes de descripcion de hardware que han tenido auge, estos son: VHDL y Verilog.Estos lenguajes tienen muchas similitudes pero cada uno
derivo de una lnea 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 descripcion de estructura y funcionalidad de hardware. El Instituto de Ingenieros Electricos y Electronicos (IEEE) estandarizo el
lenguaje VHDL en 1987 y se realizan actualizaciones y revisiones cada 5 a
nos. Inicialmente
el lenguaje tena el prop
osito de modelar las estructuras de hardware sin tener en cuenta la
realizaci
on de pruebas en este, posteriormente se adapto para tener la posibilidad de realizar
la sntesis y simulaci
on de los circuitos modelados con este lenguaje.
Por otro lado el lenguaje Verilog fue desarrollado por la empresa Gateway Desing Automation 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 convirtio en un estandar
IEEE en 1995 y fue actualizado en 2001.
Ambos lenguajes realizan la descripcion de hardware partiendo de bloques llamado modulos. Un m
odulo es una detallada descripcion de un dispositivo fsico. En los lenguajes de
descripci
on de hardware pueden realizarse modulos en dos estilos o formas, la primera es

IPN

34

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

estructural y la segunda por comportamiento. Un modulo estructural describe como un dispositivo est
a compuesto por estructuras mas basicas, mientras que un modulo por comportamiento describe el funcionamiento.
Los dos principales prop
ositos de un lenguaje de descripcion de hardware son la simulaci
on y el proceso de sntesis. Durante la simulacion, se verifica el correcto funcionamiento
del modulo descrito en un HDL. En el proceso de sntesis la descripcion de hardware escrita se transforma en una asignacion de compuertas logicas que realizaran fsicamente el
funcionamiento codificado.
Para conocer m
as de los dos principales lenguajes de descripcion de hardware, a continuacion se presenta un ejemplo de modulo 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 smbolo es un NO
logico y & es el smbolo para una AND logica. La palabra logic indica el tipo de dato de
las entradas o salidas, en este caso son de tipo logico (0 o 1).
El codigo VHDL se compone de tres principales partes: La declaracion de libreras (libray), La declaraci
on de entidad (entity) que enlista las entradas y salidas del modulo y
la declaraci
on de arquitectura (architecture) que define el comportamiento del modulo. Las
entradas/salidas en VHDL deben ser declaradas de acuerdo a alg
un tipo de dato, en este

ESIME

35

ICE

Teora Relacionada.

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 librera 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 capacidades de estos mismos se definen a partir del n
umero de celdas logicas que contienen.
Los fabricantes por lo general dise
nan dispositivos con propositos preestablecidos con lo que
ciertos dispositivos son implantados en tarjetas junto con otros circuitos integrados que colaboraran el objetivo fijado, es decir, las empresas ofrecen tarjetas de desarrollo hechas para
aplicaciones especficas como: comunicaciones, procesamiento digital de se
nales, computaci
on,
transmisi
on de se
nales, uso academico, 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 perifericos integrados que tenga cada
modelo de tarjeta de desarrollo, son tambien importantes para la seleccion de esta. Un factor
mas 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 u
ltimo se debe tener en cuenta tambien 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 eligio por su uso com
un en proyectos de desarrollo e
investigaci
on academica, por su amplia comercializacion 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 caractersticas principales y mas u
tiles de esta tarjeta es su capacidad de
programar los dispositivos en ella (FPGA, CPLD, PROM, etc.) a traves de una conexi
on
USB. Esta conexi
on tambien es u
til para realizar verificaciones a las entradas, salidas o

IPN

36

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

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 caractersticas 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 configuracion o programacion del FPGA.
CPLD Xilinx XC2C64CA con 64 macroceldas.
Memoria DDR SDRAM de 64 MByte.

ESIME

37

ICE

Teora Relacionada.

Memoria FLASH serial SPI de 16Mbits.


LCD de 2 lneas 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 boton de presion central.
Ocho LEDs.
Cuatro interruptores de deslizamiento.
Cuatro interruptores de bot
on.
Conector SMA.
Por s mismo el dispositivo FPGA tiene caractersticas de operacion 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.
Voltajes : 3.3V, 3.0V, 2.5V, 1.8V, 1.5V y 1.2V.

IPN

38

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

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 logico.
Por otro lado cuando se encuentra en la posicion baja, el interruptor conecta al FPGA a tierra,
generando un 0 l
ogico. Un cambio en la posicion 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 interruptor 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 posicion (Norte, Sur, Este u Oeste). Al presionar cualquiera de estos interruptores, se envan 3.3 V al FPGA, generando un 1 logico, y
un 0 logico cuando este no se presiona. Usualmente es necesario un circuito antirebotes para
estos interruptores, posible de implementar mediante codigo 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 estan ubicados justo arriba de los interruptores deslizables
(ver Figura 2.12). Las lneas de conexion de estos LEDs estan multiplexadas con algunas del
conector Hirose de 100 pines.

ESIME

39

ICE

Teora Relacionada.

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 u
til de 40 %. La precision 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 mayora de las
computadoras personales actuales y a estaciones de trabajo mediante un cable serial estandar.
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 logicos 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 logicos
de voltaje.
Conectores de Expansi
on. La tarjeta Spartan 3E provee una variedad de conectores de
expansion para f
acilmente conectar otros componentes no incluidos en la tarjeta. La tarjeta

IPN

40

ESIME

2.2 Arreglo de Compuertas Programables en Campo.

Figura 2.13: Conectores RS-232 en la tarjeta S3E.


incluye los siguientes conectores de expansion:
Un conector Hirose de 100 pines con 40 de estos pines como E/S, mas de 15 pares
diferenciales de E/S y dos pines dedicados u
nicamente como entradas.
Tres conexiones para m
odulos perifericos de 6 pines.
Estos se ubican en la parte lateral derecha de la tarjeta, pueden ser vistos y ubicados mediante
la Figura 2.12.
Memoria DDR SDRAM.

Como una tarjeta de desarrollo en la S3E se tienen varios

elementos que permiten realizar diversas aplicaciones y una de las herramientas que integra
esta tarjeta es la memoria DDR SDRAM MT46V32M16, fabricada por la compa
na Micron
Technology, Inc; en la Figura 2.14 se puede ver su ubicacion.
La memoria MT46V3216 es una memoria de 512Mbits de capacidad de almacenamiento
y opera con 2.5V de energa y un voltaje de referencia de 1.5V obtenido a partir de un divisor
de voltaje. Es posible trabajar con una longitud de palabra de 16 bits, aunque tambien con
la mitad de esta longitud. Esta memoria usa una se
nal de reloj diferencial que trabaja de
los 77 hasta los 133 MHz. La totalidad de la memoria esta dividida internamente en cuatros
bancos que se seleccionan independientemente para acceder a la informacion en ellos.
La lectura y escritura se implementa mediante rafagas de datos, es decir el acceso a datos
comienza en una direcci
on seleccionada y despues contin
ua automaticamente de acuerdo a
la longitud de r
afagas predefinida. Esta longitud es programable y pueden ser de 2, 4 y 8
localidades de memoria por r
afaga.

ESIME

41

ICE

Teora Relacionada.

Figura 2.14: Ubicaci


on de la memoria DDR SDRAM en la tarjeta Spartan 3E.

IPN

42

ESIME

2.3 Pantallas TFT-LCD.

2.3.

Pantallas TFT-LCD.

Las Pantallas de Cristal Lquido (LCD) se han convertido en el medio visual predilecto
para mostrar informaci
on de un dispositivo electronico al usuario. La mayor parte de dispositivos electr
onicos como consolas de vdeo, telefonos celulares, calculadora, camaras de
fotografa o vdeo tienen integrada una LCD. La causa de su variedad de aplicaciones reside
en la cualidad de este tipo de pantalla para desplegar imagenes monocromaticas o a color.

2.3.1.

Estructura de un TFT-LCD.

Un TFT-LCD est
a compuesto por un n
umero especfico de celdas basicas conocidas como
pixeles; para pantallas TFT-LCD de color. Para una pantalla de color un pixel esta compuesto
por tres celdas para mostrar colores de acuerdo al sistema RGB. Cada pixel esta compuesto
por un Transistor de Pelcula Delgada(TFT), un electrodo de pixel, un electrodo com
un y
un capacitor de almacenamiento (Ca). Internamente la capa de cristal lquido se comporta
como una capacitancia (Ccl) cuyas terminales son el electrodo de pxel y el electrodo com
un
(Figura 2.15). El rendimiento de la pantalla TFT-LCD esta intrnsecamente relacionado con
los parametros de dise
no de la unidad de pxel, es decir, la superposicion entre: los electrodos
del TFT, las dimensiones del condensador de almacenamiento o del electrodo de pxel, y el
espacio entre estos elementos intervienen en el desempe
no del panel completo.

Figura 2.15: Unidad Basica Pixel y Sustratos en Conjunto.

ESIME

43

ICE

Teora Relacionada.

Esta unidad b
asica requiere de algunos otros componentes para mantenerse ensamblada,
sustratos o superficies como: el filtro de color que contiene una pelcula de resina con uno
de los tres colores primarios (rojo, verde o azul). Dos sustratos de vidrio (arriba y abajo) se
montan con un sellante manteniendo el espacio entre ellos por medio de espaciadores; el cristal
lquido se inyecta en el espacio formado por estos sustratos. Dos hojas de pelcula polarizadora
estan montadas en las caras exteriores de los sustratos de vidrio. Asi esta formada la unidad
basica de desplegado (ver Figura 2.15) y puede montarse junto a otras para formar un panel.
El conjunto de unidad pixel y substratos se replican una y otra vez para generar un panel
donde los elementos est
an conformados en un matriz como se observa en la Figura 2.16:

Figura 2.16: Panel TFT-LCD

Una vez que el panel TFT-LCD esta completamente montado con todas sus partes y
componentes, a
un se necesita de circuitos integrados que controlen cuales pixeles estar
an
encendidos o apagados, para as generar imagenes. De la misma forma estos circuitos deben
controlar no solo la proyecci
on de imagenes estaticas, sino tambien dinamicas, es decir, el desplegado de im
agenes secuencialmente. Ademas de este control, un panel TFT-LCD requiere
de una interfaz que permita la recepcion de la informacion que un procesador, u otro dispositivo, requiera desplegar en pantalla. Es por esto que en una pantalla TFT-LCD siempre
viene integrada una placa con los dispositivos e interfaz requerida para su control y uso.

IPN

44

ESIME

2.3 Pantallas TFT-LCD.

2.3.2.

Pantalla LQ043T3DX02.

Este dispositivo es un LCD a color con transistores de pelcula delgada (TFT) de silicio
amorfo, est
a compuesto por: el panel TFT-LCD de color, circuitos integrados de control, un
conector o interfaz de circuito impreso flexible y una unidad de luz de fondo.
Graficos y texto puede ser desplegados en el panel de 480X3X272 puntos, con alrededor
de 16 millones de colores proporcionados o definidos por los 24 bits o lneas de datos (8bitsxRGB). Utiliza cuatro se
nales de sincronizacion, un voltaje logico (+2.5V) y uno analogico
(+5V) para el control del panel TFT-LCD y ademas una alimentacion extra para la luz de
fondo. La pantalla puede verse en la Figura 2.17.

Figura 2.17: Pantalla TFT-LCD LQ043T3DX02 fsicamente.


El circuito impreso flexible proporciona dos terminales o conectores, una mediante la cual
se envan las se
nales de sincronizacion, alimentacion y datos de imagen; la cual tiene 40
pines. El segundo conector fsicamente se compone de cuatros pines, no obstante, se usan
u
nicamente dos para proporcionar la energa de la luz de fondo. La funcion de cada pin para
ambos conectores se describe en las Tablas 2.6 y 2.7.
Esta pantalla usa un sistema RGB de 24 bits, es decir, 8 bits para cada color primario.
Con esto un pixel puede tener 224 diferentes tonalidades o colores.

ESIME

45

ICE

Teora Relacionada.

Tabla 2.6: Descripci


on del conector de 40 pines en la pantalla LQ043T3DX02
No. Pin

Nombre

Descripcion

1:2

GND

Tierra(0V)

3:4

VCC

+2.5V de Alimentacion

5:12

R0:R7

8 Lneas de Datos del color Rojo

13:20

G0:G7

8 Lneas de Datos del color Verde

21:28

B0:B7

8 Lneas de Datos del color Azul

29

GND

Tierra (0V)

30

CK

Se
nal de reloj

31

DISP

Se
nal de Encendido/Apagado de desplegado

32

Hsync

Se
nal de sincronizacion horizontal

33

Vsync

Se
nal de sincronizacion vertical

34

NC

No conectado

35:36

AVDD

Voltaje Analogico +5V

37

NC

No conectado

38

Test1

Sin conexion

39

Test2

Sin conexion

40

Test3

Conexion a tierra (0V)

Tabla 2.7: Descripci


on del conector de 4 pines en la pantalla LQ043T3DX02

IPN

No. Pin

Nombre

Descripcion

VLED

Terminal Negativa de Luz de Fondo(Catodo)

NC

No conectado

NC

No conectado

VLED+

Terminal Positiva de Luz de Fondo(Anodo)

46

ESIME

2.3 Pantallas TFT-LCD.

Las especificaciones [7], disponen ciertas reglas para la sincronizacion de las se


nales de
control :
No aplicar el voltaje anal
ogico (AVDD +5.0V) antes de la se
nal de voltaje l
ogico (VCC

+2.5V). Esto
para evitar da
nos en la estructura electrica de la pantalla.
La se
nal de activaci
on para desplegado (DISP), no debe encontrarse en estado alto antes
que el voltaje anal
ogico (AVDD) alcance su valor de +5.0V.
La se
nal de sincronizaci
on vertical (VS O), debe estar en un estado alto (1), mientras
las se
nales anteriores toman su valor adecuado.
No poner varias se
nales en alta impedancia cuando el voltaje l
ogico (VCC) est
a en
estado alto.
Se puede decir que las se
nales, consideradas en la lista, cumplen el proceso de inicializar
la pantalla, por tanto las se
nales restantes que se ven en la Figura 2.18, se remiten al control
de desplegado de informaci
on . Ademas del proceso inicial para proporcionar las se
nales de
voltajes a la pantalla, debe llevarse a cabo un proceso similar para ubicar a la pantalla en un
estado inactivo o apagado, el modo en el que las se
nales deben activarse, tambien se observa
en la Figura 2.18.
Para determinar exactamente el color de cada pixel se requieren de tres se
nales de sincronizacion (ver Figura 2.18), una se
nal de reloj (CK), una se
nal de sincronizacion horizontal
(HSync) y una m
as de sincronizaci
on vertical (VSync).
La se
nal fundamental de sincronizacion es la de reloj, seg
un especificaciones debe estar
en el rango de los 7.83 MHz a los 9.26 MHz, no obstante, tpicamente se toma un valor de 9
MHz. Con la se
nal de reloj de 9 MHz, a la cual tambien se le puede llamar reloj de pixel, es
posible comenzar a desarrollar la de barrido horizontal.
La se
nal de sincronizaci
on horizontal (HSync) cumple con un ciclo cada 525 ciclos de
reloj, de los cuales 41 de estos la se
nal esta en estado bajo (0) y los restantes en estado alto
(1). Es en el estado alto cuando ocurre el desplegado, aunque es importante notar que de
los 484 ciclos en estado alto, 4 ciclos son tomados nulos por la pantalla, dos ciclos al iniciar
el estado alto y dos ciclos al finalizarlo. Dicho de otra forma, los datos RGB enviados a la

ESIME

47

ICE

Teora Relacionada.

Figura 2.18: Se
nales de Sincronizacion para el dispositivo LQ043T3DX02.
pantalla son desplegados u
nicamente por 480 ciclos de reloj durante el estado alto de la se
nal
HSync, estos 480 ciclos resultan ser la cantidad de pixeles horizontalmente u
tiles o visibles.
Como com
unmente se realiza, la se
nal de barrido vertical usa para su funcionamiento la
se
nal HSync. La se
nal de sincronizacion vertical (VSyn), termina con un ciclo cada 286 ciclos
de la se
nal HSync. De estos 286 ciclos, 10 de ellos la se
nal permanece en estado bajo y 276
en estado alto. La pantalla toma como nulos dos ciclos horizontales al inicio y fin del estado
alto de la se
nal Vsyn,para formar un marco negro en los margenes de la pantalla. Por tanto
272 ciclos representan las lneas de desplegado disponibles.
Por otra parte es de importante consideracion mencionar que el voltaje requerido para la
luz de fondo no debe superar los 29.4V[7].

IPN

48

ESIME

2.4 SD Card.

2.4.

SD Card.

En 1999 SanDisk, Panasonic y Toshiba, se unieron para crear un u


nico estandar para almacenar datos de una forma que se pudiesen intercambiar con cualquier tipo de dispositivo,
como resultado se cre
o el est
andar Digital Seguro (SD). El estandar SD se refiere principalmente a las tarjetas de memoria (SD Card), aunque se tiene una variante, el estandar de
Entrada y Salida SD de datos (SDIO), que especifica la interfaz y protocolo de comunicaci
on
con peque
nos dispositivos como: modems, equipos inalambricos WiFi o Bluetooth, camaras,
navegadores GPS, etc.
La tarjeta SD es un tipo de memoria de peso y tama
no muy reducido, pero de capacidad
de almacenamiento muy elevada. La SD Card ha tomado gran importancia ya que es ampliamente usada en m
ultiples dispositivos electronicos que requieren almacenamiento de grandes
cantidades de datos.

2.4.1.

Caractersticas de la Tarjeta SD.

Algunas de las principales caractersticas de la SD Card se remiten a diferenciar entre: su


capacidad de almacenamiento, tama
no fsico y desempe
no en la transferencia de datos.
La clasificaci
on de acuerdo a la capacidad de almacenamiento las divide en tres grupos:
Capacidad est
andar, tarjetas con capacidad de almacenamiento igual o menor a 2GB.
Alta capacidad2 , tarjetas con un espacio de almacenamiento desde 2GB hasta 32GB.
Capacidad extendida2 , tarjetas con la disponibilidad de almacenar mas de 32GB.
Debido a la constante miniaturizacion de la tecnologa, se tienen tres diferentes tama
nos
para una tarjeta SD. La Figura 2.19 muestra las tarjetas en sus diferentes tama
nos: est
andar,
mini SD, micro SD.
La tarjeta SD es capaz de desarrollar varias velocidades de transmision de datos (usando
las cuatro lneas disponibles):
2

Unicamente dispositivos controladores que cumplen con los requerimientos m


as actuales en el proceso de

comunicaci
on pueden tener acceso a tarjetas de capacidad alta y extendida.

ESIME

49

ICE

Teora Relacionada.

Figura 2.19: Diferentes tama


nos de la tarjeta SD.
Velocidad por defecto, trabajando con una frecuencia de 25 MHz y se obtiene una
tasa de transferencia de 12.5 MB/sec.
Alta velocidad, a una frecuencia de 50 MHz con una tasa de transmision de 25MB/sec.
Velocidad Simple de datos (SDR) 12, para equipos controladores (hosts) con la
capacidad de manejar 1.8V. Trabaja a 25 MHz y desarrolla 12.5 MB/sec.
SDR25, se
nalamiento de 1.8V, a una frecuencia de 50 MHz y una tasa de transmisi
on
de 25MB/sec.
SDR50, se
nalamiento de 1.8V, a una frecuencia de 100 MHz y una tasa de transmisi
on
de 50MB/sec.
SDR104, se
nalamiento de 1.8V, a una frecuencia de 208 MHz y una tasa de transmisi
on
arriba de 104 MB/sec.

IPN

50

ESIME

2.4 SD Card.

Velocidad Doble de datos (DDR) 50, se


nalamiento de 1.8V, a una frecuencia de
50 MHz, con una tasa de transmision de 50MB/sec enviando informacion en ambos
flancos de la se
nal de reloj.
Referente al consumo de energa, se puede implementar la comunicacion con la tarjeta
SD, desde los 1.8V hasta los 3.6V. Al trabajar con voltajes por debajo de los 2.7V se requiere
de una adecuada configuraci
on de la tarjeta 3 .

2.4.2.

Protocolo de Comunicaci
on SD.

La tarjeta SD ha sido desarrollada de forma tal que es posible utilizar cualquiera de dos
sistemas de comunicaci
on, el nativo SD Bus y el ampliamente conocido SPI Bus. Para cada
uno de ellos se definen las lneas de conexion en la Figura 2.20.

Figura 2.20: Relaci


on de conexiones para la interfaz fsica SD Bus y SPI Bus.
Ambos sistemas utilizan un protocolo basado en comandos y respuestas para la comunicacion entre host y tarjeta SD. Aunque el protocolo fue dise
nado especialmente para las lneas
de conexi
on del sistema SD Bus, se tomo especial cuidado en permitir que pueda ser utilizado por el sistema de comunicaci
on SPI, con el objetivo de posibilitar que la gran variedad
de dispositivos de audio y vdeo que usan microcontroladores con modulos de comunicaci
on

Una sucesi
on de comandos indica que la tarjeta funcionara en modo de bajo consumo de energa

ESIME

51

ICE

Teora Relacionada.

SPI ya integrados, puedan emplear la tarjeta SD. A pesar de esto siguen existiendo sutiles
diferencias, por ejemplo: en el sistema nativo (SD Bus) las cadenas de bits son transmitidas
de inicio a fin, junto con los bits de comprobacion de errores, bits de paro e inicio correspondientemente, mientras que en el sistema SPI las mismas cadenas de bits son transmitidas en
secciones de un byte a la vez.
Adem
as el sistema SD Bus puede configurarse para trabajar en dos posibles modos de
funcionamiento: SD Bus 1-bit donde se usa solamente un pin de datos y SD Bus 4-bits donde
se usan 4 pines para transferir informacion.
Los comandos son enviados desde el host hacia la tarjeta o tarjetas conectas al bus de
transmisi
on, estos son transmitidos sobre la lnea o pin CMD (ver Figura 2.20).De igual
modo a un comando, una respuesta es enviada de forma serial por la lnea CMD aunque
en sentido inverso (de tarjeta a host). La Figura 2.21 muestra un ejemplo grafico de una
transacci
on b
asica COMANDO-RESPUESTA.

Figura 2.21: Operacion COMANDO-RESPUESTA.

Los bloques de datos se trasfieren de host a tarjeta o viceversa por medio de las lneas de
datos DAT[0,3]. Estos bloques est
an siempre sucedidos por bits de comprobacion de errores.
Los bloques de datos tienen una longitud configurable, de forma predeterminada la longitud
de un bloque de datos es de 512 bytes y puede llegar a ampliarse hasta 2048 bytes en tarjetas
de capacidad extendida.
El protocolo permite realizar transacciones simples, es decir, leer o escribir un solo bloque
de datos. Tambien es posible realizar operaciones continuas, para lo cual se tienen comandos
especiales que inician y paran a voluntad del usuario los procesos de lectura y escritura. En la
practica la transferencia de datos entre controlador y tarjeta se realiza mediante la transmisi
on

IPN

52

ESIME

2.4 SD Card.

de comandos de lectura (CMD 17, CMD18, CMD19, CMD20) o escritura(CMD23, CMD24,


CMD25). En la Figura 2.22 se ejemplifica una operacion simple de lectura iniciada con un
Comando-Respuesta y posteriormente el envio del bloque de datos correspondiente.

Figura 2.22: Lectura de un Bloque de Datos


Durante el proceso de escritura se utiliza una se
nal que advierte cuando este proceso se
esta ejecutando, es decir es una se
nal de bus ocupado, la se
nal esta activa o presente en la
lnea DAT0, en cualquier modo de operacion (modo 1-bit o 4-bit), hasta que la informaci
on
sea correctamente transferida.

2.4.2.1.

Comandos.

Un comando es una se
nal que da inicio a una operacion. Cada comando tiene una estructura similar, b
asicamente es una cadena de 48 bits, compuesta esencialmente por 3 grupos de
informaci
on y algunos bits adicionales. La cadena comienza con un bit de inicio, seguido por
un bit que indica la direcci
on en que se realiza la trasmision de dicha cadena en particular.
Los siguientes 6 bits son usados para representar el ndice o identificador de comando, este
n
umero es un decimal codificado en binario. La cadena contin
ua su composicion con 32 bits
subsecuentes que representan informacion adicional (argumento) para ciertos comandos o una
direccion de localizaci
on de datos a la que se desea acceder. Cada comando usa un Codigo
de Redundancia Cclica para corregir los errores posibles en la transmision de los mismos y
en un comando este CRC se representa con los 7 bits siguientes al argumento. Finalmente
todos los comandos son terminados con un bit de paro que pone fin a la cadena de 48 bits.
La Figura 2.23 muestra un esquema de lo aqu mencionado.

ESIME

53

ICE

Teora Relacionada.

Figura 2.23: Formato de un Comando


C
odigo de Redundancia Cclica (CRC).

Este codigo esta dise


nado para proteger los

comandos y respuestas contra errores que se puedan tener en la transmision de los mismos.
Un codigo CRC es generado para cada comando enviado y comprobado para cada respuesta
recibida.
El CRC7 es usado para todos los comandos y para todas las respuestas exceptuando
la respuesta tres (R3), se genera mediante una operacion algebraica de los bits que est
an
protegidos por este c
odigo y un polinomio extra. La operacion que da como resultado el
CRC7 es:
(M (x) x7 )
CRC7 =
G(x)



(2.4)

Donde G(x) es el polinomio generador extra y se define como:


G(x) = x7 + x3 + 1

(2.5)

M(x) es un polinomio que conjuga los datos que seran protegidos por el codigo CRC7 y se
integran de la siguiente forma:
M (x) = 1er bit xn + 2do bit xn1 + ... + ultimo bit x0

(2.6)

en este u
ltimo polinomio el primer bit, del extremo izquierdo, es el mas significativo. El
exponente n est
a definido por el n
umero de bits protegidos por el codigo menos uno, por
ejemplo tomando la longitud de los bits que se protegeran en un comando (40) se le resta
una unidad para obtener el exponente n(39).
Las operaciones que involucran al CRC7, se realizan con elementos binarios, por lo que
estas operaciones se resumen a una operacion logica que la Figura 2.24 ejemplifica.

IPN

54

ESIME

2.4 SD Card.

Figura 2.24: Generador y Comprobador Binario de CRC7

2.4.2.2.

Respuestas.

Una respuesta es la cadena de bits enviada desde una tarjeta hacia el controlador como
efecto de un comando recibido correctamente por la SD Card. Una respuesta siempre comienza
con un bit de inicio, seguido por el bit de direccion de la transmision y posteriormente el
contenido de la respuesta cuya longitud en bits es variable. Despues de esto se tienen los bits
de protecci
on de errores (CRC) y la cadena de respuesta se finaliza con un bit de paro. La
Figura 2.25 muestra las posibles longitudes de una respuesta.

Figura 2.25: Formatos posibles para una respuesta

Existen cinco tipos de respuesta que la tarjeta SD utiliza, con distinta longitud, los tipos
de repuestas que una tarjeta SD puede enviar son:

ESIME

55

ICE

Teora Relacionada.

Respuesta uno (R1): Respuesta normal de comando. Tiene una longitud de 48 bits y
los bits 45 a 40 indican el ndice del comando al que corresponde la respuesta; esta es enviada
como confirmaci
on de un comando recibido por la tarjeta.
Respuesta dos (R2): Envo de: Registro de Identificacion de tarjeta (CID) o Registro
de Datos Especficos(CSD). Ambos son registros de informacion de control de la tarjeta. La
longitud de esta respuesta es de 136 bits. En ella se transmiten el contenido del registro CID
como respuesta a los comandos CMD2 o CMD10. El contenido de la respuesta opcionalmente
puede ser el registro CSD que es enviado como consecuencia de la recepcion del comando
CMD9. Solamente los bits 127 a 1 del registro CSD son enviados.
Respuesta tres (R3): Registro de Condiciones de Operacion (OCR). La longitud de
esta respuesta es de 48 bits; esta transmite el registro OCR como consecuencia de la petici
on
hecha por el comando de aplicaci
on especial ACMD41.
Respuesta seis (R6): Publicacion de Direccion Relativa de Tarjeta (RCA). La respuesta seis tiene una longitud de 48 bits y es una respuesta especfica para el comando CMD3.
En ella se encuentra la direcci
on relativa de la tarjeta que es la direccion que se usa para
direccionar la comunicaci
on con la tarjeta. Esta direccion es una cadena de 16 bits.
Respuesta siete (R7):

Condiciones de la Interfaz con la Tarjeta. Con una longitud de

48 bits la respuesta siete proporciona la informacion del voltaje soportado por la tarjeta, es
decir, con el que la tarjeta puede trabajar. La respuesta siete es enviada como consecuencia
de la anterior transmisi
on del comando CMD8.

2.4.2.3.

Bloques de Datos.

El formato de un bloque de datos puede tomar dos diferentes formatos, uno llamado
Paquete Tpico en la cual se divide la informacion en palabras de 8 bits y otro de nombre
Paquete Amplio cuyos datos son divididos en palabras de 512 bits.
En el paquete tpico la informacion es enviada en partes de un byte a la vez, iniciando con
el byte menos significativo(LSB) del bloque. Sin embargo en la misma transmision los bits
de un byte son enviados de manera inversa, es decir, el bit mas significativo (MSb) primero

IPN

56

ESIME

2.4 SD Card.

y el bit menos significativo(LSb) al final. La Figura 2.26 muestra un ejemplo de un bloque


de datos tpico.

Figura 2.26: Paquete de datos com


un.
En el paquete amplio se toma en cuenta u
nicamente el total de bits a enviar y se transmiten
desde el bit mas significativo al menos y en la Figura 2.27 se ve este procedimiento.
CRC16. Los bloques de datos estan protegidos por un codigo de redundancia cclica m
as
largo, de 16 bits (CRC16). El proceso de creacion de estos bits es similar al ya descrito CRC7,
la siguiente Ecuaci
on muestra la operacion algebraica necesaria para generar un CRC16.


M (x) x16
(2.7)
CRC16 =
G(x)
donde el polinomio generador G(x) se define como;
G(x) = x16 + x15 + x5 + 1

(2.8)

y el polinomio con los datos protegidos se conforma de la siguiente forma:

ESIME

M (x) = 1er bit xn + 2do bit xn1 + ... + ultimo bit x0

(2.9)

57

ICE

Teora Relacionada.

Figura 2.27: Paquete de datos amplio.

El 1er bit corresponde al bit mas significativo del bloque de datos a enviar. El grado n de la
ecuacion se obtiene de la misma forma al CRC7, en este caso el grado depende de la longitud
del bloque (configurable), ya que predefinidamente esta longitud es de 512 bytes el grado n
seria 4095 (4096 bits menos uno).
La Figura 2.28 muestra la operacion binaria que generara este codigo. El CRC16 se usa
en ambos modos de transmisi
on: el modo 1-bit y 4-bit, aunque en este u
ltimo se genera un
codigo independiente para cada lnea.

Figura 2.28: Generador y Verificador de CRC16

IPN

58

ESIME

2.4 SD Card.

2.4.2.4.

Registros de la Tarjeta SD.

La tarjeta SD contiene seis registros que almacenan informacion especfica de la tarjeta


y sus condiciones de funcionamiento. Para acceder a la informacion de estos registros es
necesario enviar el comando adecuado a la tarjeta SD y que esta devuelva una respuesta con
el contenido de uno de los registros.
Registro de Condiciones de Operaci
on (OCR). Es un registro de 32 bits que almacena
el rango de voltajes en el que puede funcionar la tarjeta SD. Ademas de esta informacion el
bit 31 indica cuando el proceso de energizacion ha concluido. Por otra parte el bit 30 indica la
clasificaci
on de capacidad de almacenamiento de la tarjeta, cuando este bit esta en 0 indica
que la capacidad de la tarjeta es estandar y al estar en 1 la capacidad de la tarjeta es alta
o extendida. La Tabla 2.8 muestra un resumen del contenido de este registro.
Tabla 2.8: Contenido del Registro OCR
Nombre

Posici
on

Reserved

0:6, 8:14, 25:29

Low Voltage Range


Voltage Window

Descripci
on

Bits reservados
Indicador de Funcionamiento en Bajo Voltaje

15:23

Rango de voltaje de operacion

Swithcing to 1.8V accepted

24

Confirmacion de Cambio a Bajo Voltaje

Card Capacity Status

30

Indicador de Capacidad de Tarjeta

Card Power up status bit

31

Indicador de Energizacion Exitosa

Registro para Manejo de Condiciones de Operaci


on (DSR).

Es un registro opcional,

usado para mejorar el funcionamiento del bus de comunicaciones en condiciones de operaci


on
extendidas, es decir, el registro contiene informacion que ayudara a mejorar el funcionamiento
de un tarjeta siempre y cuando esta misma posea tales capacidades. El registro tiene un valor
predefinido de 0x404.
Registro de Direcci
on Relativa de Tarjeta (RCA).

Almacena la direccion que es

publicada por la tarjeta durante el proceso de identificacion. Esta direccion se usa para
dirigir las comunicaciones controlador-tarjeta, cuando existen varias tarjetas conectadas al

ESIME

59

ICE

Teora Relacionada.

canal de comunicaciones. El valor predeterminado de esta direccion es 0x0000, mismo valor


que al ser envidado mediante el comando CMD7 pone a las tarjetas conectadas al canal de
comunicaciones en estado de inactividad. Si una tarjeta publica una direccion ya existente, el
controlador puede pedir que la tarjeta publique una nueva RCA o incluso darle una direcci
on
relativa particular.

Regristro Identificaci
on de Tarjeta (CID).

Es una cadena de 128 bits que contiene

informaci
on usada durante el proceso de identificacion de la tarjeta. Cada tarjeta tiene un
u
nico n
umero de identificaci
on contenido en este registro; su estructura se describe en la
Tabla 2.9.

Tabla 2.9: Contenido del Registro CID


Nombre

Posici
on

Descripci
on

Manufacturer ID

127:120

Identificador de Fabricante

OEM ID

119:104

Identificador Fabricante de Equipos Originales

Product Name

103:64

Nombre del Producto

Product Revision

63:56

Revision o Version del Producto

Product Serial Number

55:24

Numero de serie del producto

Reserved

23:20

Bits reservados

Manufacturing Date

19:8

Fecha de Fabricacion

CRC7

7:1

Bits de Codigo de correccion de errores

Not Used

Bit no usado

Registro Configuraci
on de Tarjeta SD (SCR).

El registro CSD provee informaci


on

de funciones especiales que est


an configuradas intrnsecamente en la tarjeta. El registro tiene
una longitud de 64 bits y su contenido viene predefinido desde el momento de fabricacion. La
Tabla 2.10 resume su contenido.

IPN

60

ESIME

2.4 SD Card.

Tabla 2.10: Contenido del Registro SCR


Nombre

Posici
on

Descripci
on

SCR Structure

63:60

Version de la estructura del registro

SD Memory Card - Spec. Version

59:56

Version de especificaciones para el dispositivo

data status after erases

55

Estado de la tarjeta despues de ser borrada

CPRM Security Support

54:52

Version de seguridad

DAT Bus widths supported

51:48

Anchos de canal soportados

Spec. Version 3.00 or higher

47

Version de especificaciones para el dispositivo

Extended Security Support

46:43

Soporte de Opciones de seguridad extendidas

Spec. Version 4.00 or higher

42

Version de especificaciones para el dispositivo

Reserved

41:36

Bits reservados

Command Support bits

35:32

Indicador de soporte de nuevos comandos

reserved for manufacturer usage

31:0

Reservados para uso de fabricante

Registro de Informaci
on Especifica (CSD). Contiene informacion relacionada con el
acceso a los contenidos de la tarjeta. Los 128 bits de este registro especifican el formato
de los datos, el tipo de correcci
on de errores, el tiempo maximo de acceso a los datos, etc.
Algunos de los datos contenidos en este registro pueden ser modificados u
nicamente mediante
el comando CMD27. Existen dos versiones de este registro la version 1.0 se usa para tarjetas
de capacidad est
andar y la versi
on 2.0 se usa para tarjetas de capacidad alta y extendida.
Son mas de 20 grupos de datos que se especifican en este registro. La Tabla 2.11 muestra el
contenido del registro CSD en su version 1.0; omitiendo los bits reservados.

ESIME

61

ICE

Teora Relacionada.

Tabla 2.11: Contenido del Registro CSD


Nombre

Descripci
on

CSD structure

127:126

Versi
on del registro CSD (Binario)

Data read access-time

119:112

Tiempo m
aximo de acceso a datos

Data read access-time CLK cycles

111:104

Tiempo m
ax. acceso a datos en ciclos de reloj

Max. data transfer rate

103:96

Tasa de transferencia de datos

Max. read data block length

83:80

Longitud m
axima del bloque de datos

Partial block for read alloewed

79

Habilitaci
on lectura de bloques parciales

Write block misalignment

78

Habilita escritura desalneada de bloque

Read block misalignment

77

Habilita lectura desalneada de bloque

DSR implemented

76

Registro de control de etapas implementado

Device size

73:62

Capacidad de tarjeta disponible para usuario

Max. read current @VDD min

61:59

Max. corriente en lectura con Min. voltaje

Max. read current @VDD max

58:56

Max. corriente en lectura con Max. voltaje

Max. write current @VDD min

55:53

Max. corriente en escritura con Min. voltaje

Max. write current @VDD max

52:50

Max. corriente en excritura con Max. voltaje

Device size multiplier

49:47

Par
ametro para calcular device size

Erase single block enable

46

Erase single block enable

45:39

Tama
no de un sector borrable

Write protect group size

38:32

Tama
no de grupo protegido contra escritura

Write protect group size

31

Habilita borrado de bloques de datos

Habilita protecci
on contra escritura

Write speed factor

28:26

Factor de velocidad de escritura

Max. write data block length

25:22

Longitud max. de bloque de escritura

Partial blocks for write allowed

21

Habilita escritura de bloques parciales

File format group

15

Indica el grupo de Formato de Archivos

Copy flag

14

Define si el contenido es original o una copia

Permanent write protection

13

Habilita la protecci
on de escritura permanente

Temporary write protection

12

Habilita la protecci
on de escritura temporal

File format
CRC
not used, always1

IPN

Posici
on

11:10

Define el formato de archivos

7:1

Bits de correcci
on de errores

Bit siempre en 1

62

ESIME

2.4 SD Card.

2.4.3.

Descripci
on del Funcionamiento.

2.4.3.1.

Control de Reloj.

El manejo de las frecuencias de reloj para la tarjeta SD conlleva algunas particularidades


que se deben considerar. La primera de las consideraciones importantes se refiere al cuidado
que el controlador debe tener al proporcionar una frecuencia de reloj adecuada para cada uno
de los dos procesos principales de la tarjeta SD, la tarjeta pasa por dos principales estados o
modos de funcionamiento para los cuales las frecuencias de reloj son diferentes.
Para el modo o estado de inicializacion se debe proporcionar a la tarjeta SD una frecuencia en el rango de los 100KHz a los 400KHz y para el modo de transferencia de datos el
controlador debe cambiar la frecuencia a la correspondiente para esta tarea dependiendo de
las capacidades del mismo [8].
Una propiedad importante que se confiere al dispositivos que controle la comunicacion con
la tarjeta SD [8], el cual tiene la capacidad de detener el suministro de la se
nal de reloj, sin
importar el estado en el que se encuentre la tarjeta SD, para conservar energa. Por ejemplo, si
durante la transferencia de datos el controlador trabaja con una memoria temporal que tiene
que llenar antes de enviar informacion a la tarjeta, entonces para mantener una transferencia
constante, desde el punto de vista de la tarjeta, el controlador puede interrumpir la se
nal de
reloj mientras realmacena los datos que enviara. De esta forma el controlador mantiene un
consumo bajo de energa y una comunicacion aparentemente continua con la tarjeta SD.
La u
nica limitante a la opci
on anterior es que el controlador debe mantener funcionando el
reloj durante 8 ciclos despues de cada operacion que realice con la tarjeta, antes de parar por
completo la se
nal. La siguiente lista ejemplifica algunos de los casos en los que el controlador
debe esperar los 8 ciclos de reloj para que las operaciones terminen satisfactoriamente.
1. Comando sin respuesta. Esperar 8 ciclos despues del bit de paro del comando.
2. Comando con respuesta. Esperar 8 ciclos despues del bit de paro de la respuesta.
3. Operaci
on de lectura. Esperar 8 ciclos despues del bit de paro del u
ltimo bloque ledo.
4. Operaci
on de escritura. Esperar 8 ciclos despues de los bits de comprobacion de errores
del bloque escrito.

ESIME

63

ICE

Teora Relacionada.

2.4.3.2.

Modo de Inicializaci
on e Identificaci
on.

La operaci
on de identificaci
on e inicializacion se lleva a cabo por medio de la lnea CMD
de cada tarjeta. En este modo se realizan basicamente tres operaciones, reiniciar todas las
tarjetas para comenzar con la comunicacion, validar el rango de voltaje operacional, identificar
la tarjeta y pedir la correspondiente direccion relativa (RCA).
Reinicio de tarjetas.

Despues de dar energa a las tarjetas, estas se colocan en modo de

espera para recibir comandos del controlador. Al conectar una o varias tarjetas, se inicia un
proceso de espera mientras el voltaje que se suministra a la tarjeta alcanza un nivel apropiado.
Esta espera dura 74 ciclos de reloj de la frecuencia de inicializacion.[8].
El controlador enva constantemente por la lnea CMD el comando CMD0, que es el
comando de reinicio, hasta recibir una respuesta de la(s) tarjeta(s). Al recibir el CMD0 todas
las tarjetas, conectadas al bus de comunicaciones, ponen sus lneas CMD en modo de entrada
para esperar el bit de inicio del siguiente comando. En el argumento del comando CMD0
se enva una direcci
on relativa (RCA) generica, con una valor 0x0000, lo cual indica que
cualquier tarjeta conectada al canal de comunicaciones debe reiniciar su maquina de estados.
Validaci
on de Condiciones de Operaci
on. En el inicio de la comunicaciones de controlador y tarjeta, se debe de conocer el voltaje en el que tarjeta puede trabajar y los voltajes
que el controlador puede proporcionar para realizar una adecuacion del nivel de voltaje en
el que se desarrollar
a enteramente la comunicacion. Cabe hacer notar que el primer comando enviado (CMD0), se transmite con un voltaje que el controlador asume la tarjeta puede
manejar.
Para verificar el voltaje adecuado en el que se realizara la comunicacion se enva el comando CMD8. La tarjeta analiza el argumento de este comando, donde se transmiten los estandares de voltaje que el controlador puede manejar, para validar las condiciones de operaci
on.
El controlador, por su parte, analiza las mismas condiciones en la respuesta correspondiente
al comando CMD8.
Si la tarjeta valida y puede operar en el voltaje especificado, enva en su respuesta un
reflejo de las condiciones de operacion que recibio y soporta. En caso contrario, si la tarjeta
no soporta las condiciones de operacion enviadas por el controlador, omite el envo de una

IPN

64

ESIME

2.4 SD Card.

respuesta y la tarjeta permanece en estado de espera.


Despues de conocer las condiciones de operacion el siguiente comando que se enva es el
ACMD41, el cual esta dise
nado para proveer al controlador con un mecanismo para identificar
y rechazar las tarjetas que no cumplan con el voltaje requerido para la transmision de datos.
Las tarjetas que no cumplen con estos requerimientos de voltaje son puestas en estado inactivo
y descartadas para futuras operaciones.

Identificaci
on de Tarjeta.

Este proceso inicia cuando el controlador solicita la informa-

cion del registro OCR de la tarjeta SD; mediante el comando especial ACMD41. El proceso
indicara si la tarjeta conectada es de capacidad alta, extendida o estandar, de esta forma el
controlador puede decidir si podr
a o no entablar comunicacion con la tarjeta conectada.
El bit 31 del registro OCR, se utiliza para saber cuando el proceso de deteccion de voltaje
ha terminado. Mientras este bit este en 0 el controlador enva constantemente el comando
especial ACMD41, al menos una vez por segundo, hasta verificar que el bit esta en 1 y
por tanto se ha energizado la tarjeta de manera adecuada. Mientras esto siga ocurriendo el
controlador no puede enviar ning
un otro comando diferente al ACMD41.
El host debe desarrollar el mismo procedimiento de inicializacion para todas las tarjetas
conectadas al bus de comunicaciones. Despues de las secuencias anteriores el controlador
enva un comando CMD2, para obtener el n
umero de identificacion o tambien conocido como
registro CID. Las tarjetas que a
un no han sido identificadas envan como respuesta al comando
CMD2 su exclusibo n
umero de identificacion.
Despues de recibir el n
umero de identificacion de tarjeta el host transmite un nuevo
comando (CMD3) que realiza la peticion a la tarjeta SD para que proporcione una RCA.
Con la direcci
on relativa de tarjeta el host puede direccionar las comunicaciones con una
tarjeta en especifico cuando existen varias conectadas. El controlador esta habilitado para
cambiar esta direcci
on relativa, enviando nuevamente un comando CMD3 cuando la RCA
proporcionada por la tarjeta SD no es adecuada. El proceso de identificacion finaliza cuando
el controlador acepta una RCA para cada tarjeta conectada.
La sucesi
on de comandos descrita realiza el proceso de inicializacion e identificacion, la
Figura 2.29 muestra un diagrama de flujo con este proceso y as visualizarlo adecuadamente.

ESIME

65

ICE

Teora Relacionada.

Figura 2.29: Diagrama del proceso de inicializacion e identificacion.


Al haber finalizado este proceso la tarjeta SD pasa al modo de transferencia de datos, y el
controlador realiza el cambio de la frecuencia de inicializacion a la de transferencia de datos.

2.4.3.3.

Modo de Transferencia de Datos.

A diferencia del modo de inicializacion e identificacion, en el modo de transferencia de


datos se trabaja con una frecuencia optima para desempe
nar la tarea propia de transmitir
datos, usualmente esta frecuencia es de 25MHz aunque puede aumentar dependiendo de las
caractersticas del controlador y la tarjeta que se esten usado, es decir, si estos tienen una
capacidad de desempe
no mejor.
En este modo se realizan la mayora de las operaciones importantes e inherentes de la
tarjeta de memoria SD. Muchos o gran cantidad de comandos son utilizados en este modo
para realizar tareas de diferente proposito pero que en conjunto realizaran eficientemente el

IPN

66

ESIME

2.4 SD Card.

proceso de transferencia de datos a la tarjeta o desde la tarjeta. Debido a la complejidad


que requerira explicar cada una de estas tareas, se clasifican en cinco grupos de acuerdo al
objetivo en com
un que tengan.
Tareas de Configuraci
on.

En este grupo se han incluido las tareas y comandos corres-

pondientes a la configuraci
on de recursos de la tarjeta SD, tales como la seleccion del n
umero
de lneas de datos (ACMD6), la habilitacion de funciones especiales (CMD6) y la petici
on
de informaci
on y/o registros de la tarjeta (ACMD51, ACMD22, ACMD23, etc.) Estas tareas
no conllevan transacciones de datos pero si de informacion del comportamiento que la tarjeta debe establecer o reportar al controlador. Ademas en este apartado tambien se incluyen
comandos relacionados con la configuracion de funciones especiales de la tarjeta SD como:
propiedades de funcionamiento mejorado, velocidades de transferencia de datos mayores, etc.
Tareas de Lectura. Esta clasificacion se hace para todas las actividades que est
an
relacionadas con la lectura de datos de la memoria SD, como: establecer la longitud del bloque
de datos a leer (CMD16), leer u
nicamanete un bloque de datos (CMD17), leer continuamente
bloques de datos (CMD18), conocer el n
umero de bloques ledos (CMD23), etc. Aunque la
longitud de bloque est
a predefinida a 512 Bytes el controlador puede variar esta longitud
dependiendo de la capacidades de cada tarjeta. La transaccion de informacion se hace en la
lneas de comunicaci
on que se hayan configurado con anterioridad, es decir, el controlador
previamente ha establecido que usara una o cuatro lneas de transmision de datos.
Tareas de Escritura.

Los comandos de escritura y procesos que estos implican est


an

en esta clasificaci
on. De este grupo tambien forma parte el comando CMD16 que configura
la longitud del bloque de datos y el comando CMD23 que en este caso contara el n
umero
de bloques escritos en la tarjeta SD. Por otro lado los comandos especficos de escritura de
un solo bloque o escritura continua son el CMD24 y CMD25 correspondientemente. Existen
algunos comandos extra (CMD20, CMD27, etc.) en este grupo que se encargan de controlar
funciones especiales relacionadas con la escritura de datos.
Tareas de Borrado.

Borrar sectores escritos en la tarjeta SD es una tarea que con-

lleva tres comandos: el comando CMD32 que proporciona la direccion del sector donde se

ESIME

67

ICE

Teora Relacionada.

iniciara el borrado de datos, el comando CMD33 que indica el u


ltimo sector que sera borrado
y por el comando CMD38 que ejecuta la accion de borrado de datos. Al igual que los dos
grupos anteriores este grupo de tares implica un manejo de datos, no obstante no existe una
transacci
on de datos de controlador a tarjeta o viceversa, por esta razon el borrado de datos
se ha puesto en una clasificaci
on diferente a las anteriores.
Tareas de Protecci
on

Son procesos dedicados a proteger la informacion contenida en

la tarjeta o incluso a no permitir el acceso a la tarjeta misma. Son tres los comando que se
encargan de configurar las opciones de proteger sectores de la memoria contra escritura, estos
comando son CMD28, CMD29, CMD30 que respectivamente protegen ciertos sectores contra
escritura, deshabilita esta protecci
on o ratifican el estado de los sectores de la memoria con
respecto a la protecci
on contra escritura. Tambien existen comandos que niegan el acceso
total a la tarjeta SD y no solamente a ciertos sectores (CMD42), esto se realiza estableciendo
una palabra clave para el acceso a los datos de la tarjeta.
La Figura 2.30 ejemplifica los estados en los que la tarjeta entra dependiendo de la operacion que realice, Adem
as se visualizan alguno de los comandos pertenecientes a cada clasificacion.

2.4.4.

Sistema de Archivos.

La tarjeta SD usa un sistema de archivos FAT para la estructura de su volumen y soporta


dos tipos de este sistema de archivos FAT12 y FAT16.

El volumen completo esta dividido en dos areas principales Area


de Partici
on y Area
Regular, en el
area de partici
on se encuentran el Registro Maestro de Arranque y la Tabla de

Partici
on. A su vez el
area regular se divide en dos, el Area
de Sistema y el Area
de Usuario,
el area de sistema contiene la informacion u
til para reconocer el sistema de archivos que usa
cada memoria particular y contiene tres campos: el Sector de Inicio de Partici
on, laTabla de
Asignaci
on de Archivos y el Directorio Raz. El area de usuario contiene los Datos de Usuario
es decir los datos que pertenecientes a los archivos que se almacenan en la tarjeta SD. La
Figura 2.31 muestra como se organizan estas partes.
Este sistema de archivos se utiliza para realizar b
usquedas de los archivos contenidos en
una memoria, en lugar de buscar un archivo durante todo el volumen de una memoria, en

IPN

68

ESIME

2.4 SD Card.

Figura 2.30: Tareas en el modo de transferencia de datos.


la tabla de asignaci
on de archivos se tiene una lista de los archivos contenidos y la direcci
on
logica donde inicia cada uno de estos; lo que agiliza en gran medida la ubicacion de los
archivos.
Usualmente la b
usqueda de archivos mediante la tabla de asignacion de archivos se realiza
en sistemas mas complejos como: sistemas operativos de computadoras personales o dispositivos moviles.
Las especificaciones del formato de datos de la SD Card proporcionan una gua para
determinar el inicio del
area de datos de usuario y as conocer la direccion fsica donde
comienzan el almacenamiento de los datos de usuario.

ESIME

69

ICE

Teora Relacionada.

Figura 2.31: Estructura del Volumen FAT.

IPN

70

ESIME

2.5 Formatos de Imagen.

2.5.

Formatos de Imagen.

En la actualidad diversas herramientas de software de procesamiento de imagenes crean


y utilizan m
ultiples formatos de imagen, sin embargo los formatos de imagen mas usados
com
unmente son: BMP, JPEG, GIF, PNG; cada uno de estos formatos tiene una especifica
estructura en los datos que contienen, debido a las diferentes tecnicas de compresion que se
usan en ellos. Para crear cada tipo de archivo y para decodificar los datos de colores que est
an
almacenados en cada formato, se requiere del conocimiento pertinente de cada formato. Los
parrafos siguientes intentan resumir las caractersticas principales de cada formato.
El formato PNG, realiza un metodo de decodificacion basado en rutinas predefinidas en
lenguaje C o C++, que se encuentran en la librera ZLIB. El proceso de codificacion de este
metodo de descompresi
on puede resultar complejo de implementar en VHDL.
Por otra parte, el formato de imagen JPEG es bastante usado en gran variedad de aplicaciones y dispositivos m
oviles actuales, al igual que el caso anterior se busco informaci
on
u
til para implementar un decodificador de dicho formato en codigo VHDL. La decodificacion del formato de imagen JPEG ha sido implementada en un FPGA y en los lenguajes de
descripci
on de hardware mas comunes[9]. Aunque complejas, las partes del proceso de compresion del formato JPEG (muestreo, transformada discreta del coseno, codificacion Huffman
y cuantizaci
on) son posibles de realizar en de codigo VHDL. Existen un ejemplos de esta implementaci
on, que se realiza en el mismo dispositivo FPGA que usa en este prototipo[9]. Sin
embargo tal decodificador de im
agenes usa gran cantidad (70)de los recursos totales del FPGA. Debido a este inconveniente, se decidio usar un formato de imagen basico de imagenes
o BMP. Al no ser un formato que usualmente comprima los datos de color resulta sencillo de
implementar en c
odigo VHDL.

2.5.1.

Formato de Mapa de Bits (BMP).

El formato Windows BMP es un formato de imagen nativo del sistema operativo Windows.
Soporta im
agenes con 1, 4, 8, 16, 24 y 32 bits por pixel. El contenido de informacion de pixeles
puede estar comprimido cuando se trabaja con imagenes de 4 u 8 bits por pixel.En un archivo
BMP los valores de n
umeros enteros que ocupan mas de un byte estan almacenados con el

ESIME

71

ICE

Teora Relacionada.

byte menos significativo primero. La estructura del archivo BMP se observa en la figura 2.32.
Es bastante simple ya que est
a compuesta de cuatro partes:
Encabezado de archivo.
Encabezado de imagen.
Paleta de colores.
Datos de pixeles.

Figura 2.32: Formato del archivo BMP.


El encabezado de archivo sirve de identificador del formato BMP. Tres tipos de datos se
encuentran en el:
Los primeros dos bytes deben contener los caracteres ASCII B y M que identifican
al archivo como uno en formato BMP.

IPN

72

ESIME

2.5 Formatos de Imagen.

Los siguientes cuatro bytes son el tama


no del archivo en bytes. Seguido estos se tienen
cuatro bytes que deben contener valores de cero.
Los u
ltimos cuatro bytes indican el n
umero de bytes que se deben recorrer desde el
principio del archivo para encontrar los datos RGB de la imagen.
El encabezado de imagen viene en dos formatos llamados BITMAPINFOHEADER y
BITMAPCOREHEADER. El primero se compone de 12 bytes y el segundo de 40. En este
esncabezado se definen: las dimensiones de la imagen, n
umero de bits por pixel, tipo de
compresi
on usada en el archivo, etc.
La paleta de colores se encuentra inmediatamente despues del encabezado de imagen. Se
usa com
unmente cuando se trabaja con imagenes que tienen un n
umero de bits por pixel
igual a 1, 4 u 8. Las im
agenes que usan 16, 24 o 32 bits por pixel no usan una paleta de
colores.
Para encontrar adecuadamente el comienzo de los datos de pixeles debe usarse el campo
bfOffBits del encabezado de archivo, este n
umero entero indica cuantos bytes debe de recorrerse a partir de inicio del archivo para encontrar datos de pixeles. Los datos se encuentran
despues de la declaraci
on de la paleta de colores, si esta fue requerida.
En un archivo BMP, las filas de pixeles de una imagen estan ordenadas del fondo hacia la
parte superior, es decir, los datos de pixeles que aparecen primero en el archivo son los de la
u
ltima lnea de la imagen. El formato de los pixeles depende del n
umero de bits usados por
pixel, las diferentes configuraciones se detallan a continuacion:
1 y 4 bits por pixel. Cada byte esta subdividido en 2 u 8 campos cuyos valores
representan un ndice de la paleta de colores. El bit mas significativo esta a la izquierda.
8 bits por pixel. Cada pixel es representado por un byte que representa un ndice de
la paleta de colores.
16 bits por pixel. Cada pixel es representado por un valor entero de 2 bytes donde la
intensidad de cada color se representa por 5 bits de los 16 posibles, dejando sin usar el
bit m
as significativo.
24 bits por pixel. Cada pixel es representado por tres bytes, el orden de los componentes de color es inverso al usado en la mayora de los formatos de imagen (BGR).

ESIME

73

ICE

Teora Relacionada.

32 bits por pixel. Cada pixel es representado por un valor entero de 4 bytes. Los
componentes de color pueden estar especificados por los 3 bytes menos significativos,
dejando sin uso el byte mas significativo o en el encabezado de imagen se especifican
los bits que se toman para formar cada componente.
Cuando los datos de la imagen tiene una profundidad de 4 u 8 bits por pixel estos datos
pueden ser comprimidos por el metodo RLE4 o RLE8. El metodo de compresion RLE es uno
de los mas simples; en el los datos que se encuentran repetidos en una secuencia se sustituyen
por dos bytes siendo el primero una cuenta del n
umero de veces que se repite el valor del
segundo byte. Este metodo de compresion es adecuado cuando se trabaja con dibujos que
contengas lneas definidas , en otro caso el metodo RLE puede generar un archivo de mayor
tama
no que sin compresi
on.
El formato BMP es ideal cuando se realizan pruebas de sistemas que usen imagenes ya
que es simple de implementar, depurar y utilizar.

IPN

74

ESIME

2.6 Herramientas de Software.

2.6.

Herramientas de Software.

Realizar la configuraci
on de un FPGA a partir de codigo en HDL es un proceso que
convierte este c
odigo en las instrucciones binarias necesarias para programar el dispositivo.
Este proceso se lleva a cabo usualmente mediante herramientas de software especializado,
que desarrollan las etapas en el proceso de configuracion para cualquier FPGA.

2.6.1.

Proceso de Desarrollo de una Aplicaci


on en FPGA.

El proceso completo de desarrollo e implementacion de una aplicacion se desarrolla generalmente en ambientes gr


aficos de software. Al usar un dispositivo FPGA de la marca Xilinx,
esta provee su propia interfaz gr
afica de usuario donde desarrollar todo tipo de aplicaciones.
Esta interfaz mezcla perfectamente las herramientas o programas de software necesarios para
generar los archivos de salida u
tiles en el proceso de configuracion.
El proceso de desarrollo se resume o subdivide en tres etapas:
Elaboraci
on y Sntesis.
Implementaci
on.
Verificaci
on.
Cada una de estas partes y subprocesos especifica el uso de cierto software particular para
la obtenci
on y conversi
on de los datos en cada etapa.

2.6.1.1.

Elaboraci
on y Sntesis.

El desarrollo de una aplicaci


on comienza con un concepto expresado como esquema o como
una descripci
on de su funcionamiento para posteriormente realizar su descripcion. Existen
dos posibles medios, de software, por los cuales se describe o elabora la primera etapa de una
aplicacion, con un editor de esquemas o con un editor de texto especializado para lenguajes
de descripci
on de hardware.
Las herramientas esquem
aticas proporcionan una interfaz grafica donde la elaboraci
on
de la aplicaci
on se realiza conectando smbolos que representan componentes logicos. Por

ESIME

75

ICE

Teora Relacionada.

este medio puede elaborarse una aplicacion conectando simples compuertas individuales o
combinarlas con bloques con funcionalidades mas complejas.
Xilinx proporciona libreras que contienen definiciones con el nombre, smbolo y descripcion de circuitos elementales (AND, OR y elementos especiales para dispositivos FPGA
particulares como: bloques RAM o DCMs; a estas definiciones se les llama primitivas. Adem
as
de las primitivas, Xilinx, tambien define libreras de Macros los cuales pueden contener en la
descripci
on de su funcionamiento primitivas y otros macros.
Al usar un editor de texto para describir en HDL, se tienen algunas caractersticas adicionales las cuales pueden ser ventajosas. Un HDL tpico soporta la descripcion funcional mixta,
es decir, se pueden utilizar compuertas basicas y/o bloques mas complejos para desarrollar
una aplicaci
on; esta caracterstica permite describir las estructura de un sistema a un nivel
mayor de abstracci
on.
Con ambas opciones de elaboracion es importante realizar la descripcion de la aplicaci
on
de manera jer
arquica, con esto se obtienen ventajas como:
Facilita la conceptualizaci
on.
Da estructura.
Facilita el an
alisis y depuraci
on.
Facilita la combinaci
on de diferentes metodos de elaboracion.
Reduce el tiempo de optimizacion.
Facilita la descripci
on modular, entre varias personas.
Adem
as de elaborar la descripcion funcional, en la parte de elaboracion es posible y necesario agregar algunas especificaciones o restricciones de los tiempos de sincronizacion entre
elementos y la asignaci
on de Entradas/Salidas del FPGA que deben usarse en la implementacion de la aplicaci
on. Estas restricciones o asignacion de entradas y salidas, se almacenan
en un archivo difrangente a los de descripcion de funcionamiento. Un archivo de especificaciones y asignaci
on de entradas/salidas creado por el usuario tiene una extension UCF (User
Constraints file).

IPN

76

ESIME

2.6 Herramientas de Software.

Finalizada la etapa de elaboracion o descripcion de la aplicacion, la siguiente etapa es


sintetizar el c
odigo HDL a un formato de archivo industrialmente estandarizado o Formato
de Intercambio de Datos Electr
onicos (EDIF). La herramienta de sntesis particular de Xilinx
transforma los datos a un formato de archivo equivalente al EDIF de extension NGC.

2.6.1.2.

Implementaci
on del Dise
no.

Implementar se refiere a convertir el archivo de descripcion, como el archivo EDIF creado


en la etapa de elaboraci
on, en un archivo de informacion fsica llamado archivo de Descripci
on
Nativa de Circuito(NCD). Se trata de interpretar los componentes, contenidos en un archivo
de descripci
on de hardware o de funcionalidad, a instrucciones que se refieran a un dispositivo
programable en particular. La interpretacion realiza la conversion de un archivo EDIF o NGC,
que contiene el dise
no en terminos de ANDs, ORs, decodificadores, flip-flops y bloques RAM,
a primitivas de descripci
on especficas para un dispositivo FPGA. El software de Xilinx, de
nombre NGDBuil, realiza este proceso creando al final un archivo la extension NGD.
Posterior a la interpretaci
on se ejecuta un programa de mapeo que usa el archivo NGD
para: remover de la informaci
on componentes y terminales descritas no usadas, relacionar
las terminales con los bloques de entrada y salida del FPGA, convertir la logica del dise
no
en componentes b
asicos de un FPGA (IOB, CLB, etc.) y crear un archivo de salida NCD
con todos los datos procesados. Por otra parte en esta etapa se crea tambien un archivo
con restricciones o especificaciones de ubicacion y sincronizacion los componentes basicos
obtenidos (de extensi
on PCF)
Despues de crear un archivo NCD mapeado, el siguiente paso es usar la herramienta de
software PAR (Place an Route) para ubicar y conectar los componentes resultantes del mapeo,
en los recursos de un FPGA. Durante la fase de ubicacion el programa PAR ejecuta una serie
de etapas de colocaci
on de componentes (CLBs, IOBs, RMAs, etc.) basado en factores como:
Restricciones y/o especificaciones de ubicacion o sincronizacion de componentes que se
puedan encontrar en un archivo UCF o archivo de restricciones fsicas (PCF).
Longitud de conexi
on entre componentes.
Recursos de conexi
on disponibles.

ESIME

77

ICE

Teora Relacionada.

Una vez ubicados y distribuidos los componentes, el siguiente paso es conectarlos. La fase
de conexi
on desarrolla un proceso para unir todos los elementos de acuerdo a las especificaciones de sincronizaci
on entre cada elemento. En esta parte la herramienta PAR reescribe el
archivo de salida NCD con la informacion de conexiones y ubicacion creada.
Para realizar el proceso de ubicacion y conexion de componentes, Xilinx tiene herramientas de software m
as especializadas que permiten realizar de manera manual y grafica tales
procesos. El programa llamado Plan Ahead provee el medio grafico para situar los componentes basicos a lo largo del FPGA usado, mientras que el programa FPGA Editor proporciona
la utilidad de realizar ambos procesos manualmente en un ambiente grafico. Ambos pueden
ser utilizados antes o despues de ejecutar el programa PAR para analizar o modificar esta
fase del proceso.
La u
ltima fase de este proceso se remite a la configuracion o programacion del dispositivo
con los datos generados y as observar que las funciones deseadas se ejecutan. Esta configuracion se hace con el archivo generado por el software llamado BitGen que convierte toda
la informaci
on, antes descrita y contenida en el archivo NCD, en una cadena de bits que
servira para programar al FPGA.
Para conectar una tarjeta de desarrollo de Xilinx a una PC o PC portatil, se tienen dos
posibles interfaces que se usan para la mayora de las tarjetas. Una de estas interfaces es el
puerto JTAG-Paralelo y la otra el puerto JTAG-USB. JTAG (Joint Test Action Group) es
la interfaz usualmente usada para configurar dispositivos programables y realizar pruebas en
los mismos cuando se encuentran fsicamente conectados a una placa PCB.
La tarjeta SP3E incluye una l
ogica de programacion incrustada basada en JTAG-USB, a
traves de USB el software de programacion iMPCAT de Xilinx puede programar el FPGA
desde una PC. Al conectar mediante un cable USB la tarjeta SP3E y una PC, se instalan
los controladores necesarios para que la PC reconozca la tarjeta de desarrollo y los dispositivos programables en ella. cuando la tarjeta es conectada adecuadamente el software de
programaci
on iMPACT reconoce los dispositivos en el archivo de programacion JTAG.
Una vez reconocidos los dispositivos programables puede asignarse el archivo que se desea
programar a cada dispositivo correspondientemente. En este caso se debe asignar o seleccionar
el archivo BIT antes generado, para programar el FPGA con el codigo elaborado.
Habiendo programado el FPGA se da por finalizado el proceso de implementacion de una

IPN

78

ESIME

2.6 Herramientas de Software.

aplicacion, los subsecuentes es verificar el funcionamiento del FPGA con el codigo programado.

2.6.1.3.

Verificaci
on.

La verificaci
on es el proceso de probar la funcionalidad y desempe
no de la aplicaci
on
implementada. Se pueden realizar verificaciones de las siguientes formas:
Simulaci
on.
An
alisis est
atico de sincronizacion.
Verificaci
on en circuito.
La simulaci
on involucra probar la funcionalidad usando modelos de comportamiento relacionados con la aplicaci
on creada. Es un procedimiento muy efectivo cuando se debe probar
la funcionalidad bajo las condiciones mas difciles o improbables, ya que en la realidad no se
pueden forzar tales condiciones y simularlas es mucho mas sencillo para obtener resultados
en esos casos. De esta forma se facilita probar puntos clave del comportamiento de la aplicacion desarrollada y usar los resultados de la simulacion para hacer adecuaciones y cambios
necesarios.
Un an
alisis est
atico de sincronizacion es ideal para un chequeo rapido despues de la fase
de interconexi
on. Este an
alisis permite detectar retrasos en las trayectoria de la informaci
on
causados por una ubicaci
on o conexion de los componentes no adecuada.
Como una prueba final se puede verificar el dise
no ya implantado en el dispositivo FPGA,
la verificaci
on en circuito es una prueba para evaluar e funcionamiento bajo condiciones tpicas
de operaci
on . Ya que se puede programar el FPGA repetidamente, no hay problema en cargar
diferentes versiones modificadas de la aplicacion, realizando cambios necesarios cada ocasi
on
y programar el FPGA hasta lograr el funcionamiento optimo.

2.6.2.

Ambiente integrado de Software.

Las herramientas de software de desarrollo de Xilinx estan disponibles en un conjunto


llamado colectivamente como: Ambiente integrado de Software (ISE). Este ambiente permite a

ESIME

79

ICE

Teora Relacionada.

los dise
nadores desarrollar las aplicaciones necesarias rapida y facilmente. En esta integraci
on
de software se encuentran herramientas que automatizan el proceso de dise
no, la siguiente
lista relaciona las herramientas de software con las partes del proceso de desarrollo.
Elaboraci
on y Sntesis.
Editor de HDL .
Editor esquem
atico (ECS) .
Generador de n
ucleos predefinidos de Xilinx.
XTS- Tecnologa de sntesis de Xilinx.
Integraci
on con otras herramientas de Sntesis.
Implementaci
on.
Herramienta de interpretacion (Translate).
Herramienta de asignaci
on(Map).
Herramienta de ubicaci
on y conexion (PAR).
Editor ubicaci
on y conexion (Floorplanner).
Editor del FPGA.
Analizador de sincronizacion.
Verificaci
on del dise
no.
Generador de cadena de bits.
Herramienta de configuracion (iMPACT).
Analizador l
ogico (ChipScope).
Simulador de Xilinx (ISE Simulator).
Integraci
on con otras herramientas de simulacion.
El Navegador de Proyecto es la herramienta principal del ambiente de desarrollo ISE, este
permite crear, definir y compilar los dise
nos usando las herramientas de software, la cuales
pueden ser ejecutadas desde este navegador. La figura 2.33 muestra la ventana del Navegador
de Proyecto.

IPN

80

ESIME

2.6 Herramientas de Software.

Figura 2.33: Ventana del Navegador de Proyecto.


El sistema de desarrollo ISE organiza cualquier dise
no en forma de proyecto, cuyo objetivo
es conjuntar los archivos necesarios para crear y descargar el dise
no de una aplicacion a un
dispositivo. Los datos esenciales para crear un proyecto son:
Nombre de Proyecto.
Especificar una familia de dispositivos programables.
Especificar un dispositivo programable.
Cada proyecto crea una carpeta donde se asocia la informacion de la familia del dispositivo elegido y el n
umero de serie del dispositivo especfico elegido a los archivos propios del
proyecto. Estas propiedades habilitan al Navegador de Proyecto para mostrar y procesar solo
la informaci
on apropiada para el dispositivo seleccionado.
En la parte izquierda del Navegador de Proyecto se sit
uan los archivos que contienen
informaci
on especifica para el desarrollo de la aplicacion. En este mismo navegador se pueden crear o a
nadir archivos fuente a conveniencia, cada proyecto puede contener cualquier
cantidad de archivos fuente representando cada uno de estos una parte diferente y especifica

ESIME

81

ICE

Teora Relacionada.

de la descripci
on de una aplicaci
on. Los archivos fuente incluidos en un proyecto pueden ser
descripciones de un circuito (en HDL o esquematicamente), diagramas de estado, modelos de
simulacion, archivos de prueba, documentacion, archivos de datos de memoria, etc.
Los archivos fuente deben cumplir con una jerarqua, u
nicamente uno de los archivos fuente deber ser el principal en la jerarqua. En este deben estar instanciada4 la logica descriptiva,
representada como archivos fuente de un nivel inferior. Los archivos fuente de nivel inferior
tambien pueden realizar instancias de otros, construyendo as diferentes niveles jerarquicos
necesarios para describir un sistema.
Un archivo fuente v
alido para ser el principal puede ser:
Un archivo esquem
atico.
Un archivo en HDL.
Un archivo EDIF o de descripcion de hardware estandar.
La herramienta de software Core Generator, del grupo de programas del ambiente de
desarrollo, tiene dentro de sus opciones la herramienta Memory Interface Generator
(MIG) que se usa para crear interfaces de control de memorias para los diferentes FPGAs
de Xilinx. La herramienta MIG genera archivos de dise
no VHDL o Verilog, Ademas de los
m
ultiples archivos necesarios para la sntesis, simulacion y otros procesos en el desarrollo y
programaci
on de aplicaciones en un FPGA.

Una instancia se refiere a la acci


on de hacer referencia de un archivo fuente dentro de uno de nivel superior

IPN

82

ESIME

Captulo 3.

Desarrollo del Sistema de Localizaci


on
Geogr
afica.

El objetivo del presente captulo es exponer la forma en que se desarrollo el SILOG. Para
esto, antes es indispensable realizar el control independiente de cada dispositivo que conforma
el sistema. Durante este captulo el desarrollo del control de los dispositivos independientes
se expondr
a iniciando con la descripcion de la interfaz fsica entre el elemento de control
y dispositivo a controlar. La descripcion continuara explicando como se realizo el control
mediante c
odigo VHDL, presentando partes esenciales de codigo VHDL para su comprensi
on.
El codigo completo del software de control se presenta en el Apendice A. Una vez terminado el
control independiente de dispositivos, en este mismo captulo, se detalla como estos elementos
se conjuntan en el SILOG propuesto. El contenido en este captulo estara relacionado con la
informaci
on expuesta en los captulos anteriores, es decir, ser hara referencia a tablas, figuras
y contenidos ya expuestos.

83

Desarrollo del Sistema de Localizaci


on Geogr
afica.

3.1.
3.1.1.

Control de la pantalla TFT-LCD.


Interfaz Fsica.

Para realizar la interfaz fsica entre la pantalla LQ043T3DX02 y la tarjeta SP3E, como
se ve en el apartado (a) de la Figura 1.2, se hizo necesario fabricar una placa PBC donde
montar el conector que requiere la pantalla y el circuito convertidor de voltaje CD-CD de
subida para proporcionar el voltaje necesario a la luz de fondo.
El conector de la pantalla tiene 40 lneas, como se puede ver en la Tabla 2.6, y mediante
estas se deben proporcionar las se
nales de control, voltajes de alimentacion y conexion a tierra
correspondientes. Las lneas de voltaje, tierra y otras que deben dejarse sin conexion ocupan
mas de una lnea para su prop
osito y por tanto se reduce el n
umero total de conexiones
necesarias. Concretamente las conexiones que se deben realizar son 31, contemplando: lneas
de datos de color (8-R, 8-G, 8-B), se
nales de sincronizacion (CLK, VSync, HSync, DISP) y
energa (+2.5V, +5V, GND).
La u
nica o m
as evidente forma de conectar 31 se
nales de control de la pantalla TFT-LCD
con la tarjeta SP3E es el conector de expansion Hirose de 100 pines (J3), como se se
nalo en
la Figura 1.2.
En el conector de expansi
on Hirose de 100 pines, 40 de estos son de E/S directos al
FPGA[10]. Algunas de estas lneas estan multiplexadas con otros conectores de expansi
on
y LEDs de la tarjeta SP3E. Las lneas multiplexadas con los LEDs pueden ser utilizadas
tomando en cuenta que estos estaran encendidos o apagados correspondientemente a las
se
nales enviadas por estas lneas. Se tiene la posibilidad de seleccionar entre un VCC de 3.3V
o de 2.5V, para proporcionarse mediante este conector. Tambien por este conector, la tarjeta
SP3E provee otras lneas de E/S como: lneas de programacion JTAG, lnea para reloj de
entrada, lnea para reloj de salida y voltaje de +5V [10].
La placa fabricada conecta las terminales de la pantalla y la tarjeta SP3E usando solo
algunas de las 40 lneas disponibles; de acuerdo a la relacion que se ve en la Tabla 3.1.
De los 40 pines del FPGA a los que se tiene acceso, mediante el conector Hirose, los
primeros 4 de la Tabla 3.1 est
an compartidos con el conector de expansion J1 que se utilizara para conectar la tarjeta de memoria SD; por tanto estos no se utilizan para la interfaz

IPN

84

ESIME

3.1 Control de la pantalla TFT-LCD.

Tabla 3.1: Conexiones entre FPGA y la pantalla LQ043T3DX02


Hirose
Nombre

Pin
FPGA

Hirose
Nombre

Pin
FPGA

TFT
LCD

Hirose
Nombre

Pin
FPGA

TFT
LCD

IO1

B4

IO15

C11

Green(2)

IO29

C4

CLK

IO2

A4

IO16

D11

Green(3)

IO30

E13

DISP

IO3

D5

IO17

E11

Green(4)

IO31

A11

HSync

IO4

C5

IO18

F11

Green(5)

IO32

B11

VSync

IO5

B6

Red(0)

IO19

F12

Green(6)

IO33

A8

IO6

A6

Red(1)

IO20

E12

Green(7)

IO34

G9

IO7

F7

Red(2)

IO21

B13

Blue(0)

IO35

D12

IO8

E7

Red(3)

IO22

A13

Blue(1)

IO36

C12

IO9

C7

Red(4)

IO23

B14

Blue(2)

IO37

A15

OI10

D7

Red(5)

IO24

A14

Blue(3)

IO38

B15

IO11

E8

Red(6)

IO25

D14

Blue(4)

IO39

C3

IO12

F8

Red(7)

IO26

C14

Blue(5)

IO40

C15

IO13

E9

Green(0)

IO27

B16

Blue(6)

IO14

F9

Green(1)

IO28

A16

Blue(7)

TFT
LCD

con la pantalla TFT-LCD.


La luz de fondo proporciona la luminosidad necesaria para darle claridad y brillo a los
pixeles que componen la pantalla. Esta luz esta proporcionada por 7 LEDs ubicados detr
as
de los pixeles e incrustados en la estructura fsica de la pantalla.
Debido a que estos 7 LEDs est
an conectados en serie, se necesita una cantidad de voltaje
mayor a la que necesitara un LED regular. El voltaje necesario para hacer funcionar los
LEDs de la luz de fondo no debe superar los 29.4 volts [7]; aunque debe ser suficiente para
energizar a los 7 LEDs en serie. Sin embargo, el sistema completo, que se plantea desarrollar,
utiliza un m
aximo de +5.0 V, para proporcionar la energa necesaria para la luz de fondo se
requiere de un convertidor de voltaje DC-DC de subida.
Para desarrollar este circuito convertidor existen dos posibilidades: la primera es dise
nar
el circuito completamente de acuerdo a la teora de circuitos convertidores de DC a DC, con
todos los elementos necesarios para conformarlo y la otra posibilidad es utilizar un circuito

ESIME

85

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

integrado para solucionar la necesidad de conversion de voltaje.


La b
usqueda e investigaci
on para solventar esta tarea llego a la conclusion de usar un
circuito integrado para construir este convertidor de voltaje. Se eligio el circuito integrado
MC34063A, ya que es usado com
unmente en cargadores de bateras o adaptadores de voltaje.
El circuito integrado MC34063A es un circuito de control que contiene las funciones principales requeridas para desarrollar conversores de voltaje de DC a DC de subida, bajada e
inversores de voltaje; con un mnimo de componentes externos. Este dispositivo esta constituido por varios elementos que se pueden observar en la Figura 3.1. Algunas de sus caractersticas
o propiedades son:
Opera con un voltaje desde los 3 V hasta los 40 V.
Integra un limitador de corriente.
Voltaje de salida ajustable.
Frecuencia de operaci
on hasta de 100KHz.

Figura 3.1: Configuraci


on del MC34063A para un conversor de voltaje de subida.

IPN

86

ESIME

3.1 Control de la pantalla TFT-LCD.

Para cada tipo de circuito posible de construir con este dispositivo, existe una configuracion diferente de elementos externos. Aunque son tres las mnimas distribuciones realizables
se presenta u
nicamente la que es u
til para implementar un circuito conversor de voltaje de
subida, en la Figura 3.1. Los elementos externos necesarios para construir un circuito convertidor de voltaje DC-DC de subida son: resistencias, capacitores, un diodo y un inductor.
El valor de algunos de estos elementos es determinado mediante ecuaciones de dise
no [11].
Para calcular los valores de los elementos externos es primordial comenzar por proponer
los valores de energa de entrada y salida deseados y conocer algunas caractersticas de los
elementos activos que participan en el proceso.
Especficamente se necesitan conocer las magnitudes de: voltaje de entrada (Vin ), voltaje
deseado de salida (Vout ), corriente de salida (Iout ), voltaje de rizo de salida (Vripple ), frecuencia
mnima de operaci
on (Fmin ) y voltaje de saturacion del transistor de salida (Vsat ) del circuito
MC34063 que en este caso es de 0.45 V[11]. Tambien es necesario le valor del voltaje del diodo
1N5819 en polarizaci
on directa (VF ) que seg
un sus hojas de especificaciones es de 0.55 V.
La Tabla 3.2 muestra las ecuaciones de dise
no en la parte alta y en la parte baja los valores
propuestos de entrada y salida.

Tabla 3.2: Valores para el dise


no de un circuito convertidor de DC a DC de subida
Parametros Calculados
Factor

Formula

1.-

ton
tof f

3.-

tof f

Vout +VF Vin


Vin Vsat
ton +tof f
ton
+1
t

Factor

Formula

2.-

ton + tof f

1
f

4.-

ton

(ton + tof f ) tof f




2Iout ttofonf + 1


Vin Vsat
ton
Ipk

1.25 1 + R2
R1

of f

5.-

CT

4.0 105 ton

6.-

Ipk

7.-

RSC

0.3Ipk

8.-

L(min)

9.-

CO

ton
9 IVout
ripple

10.-

Vout

Valores Propuestos

ESIME

1.-

Vin

5V

2.-

Vout

25 V

3.-

Iout

18 mA

4.-

Vripple

100 mV

5.-

Fmin

100 KHz

6.-

VF

0.5 V

7.-

Vsat

0.45 V

8.-

R1

5.6 K

87

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

A continuaci
on se realizan los c
alculos necesarios de acuerdo a los parametros propuestos:
25V + 0.5V 5V
ton
Vout + VF Vin
20.5V
=
=
=
= 4.50549
tof f
Vin Vsat
5V 0.45V
4.55V
ton + tof f =
tof f =

1
1
=
= 10S
f
100KHz

ton + tof f
10S
10S
=
=
= 1.81636S
ton
4.50549 + 1
5.50549
tof f + 1

(3.1)
(3.2)
(3.3)

ton = (ton + tof f ) tof f = (10S) 1.81636S = 8.18363S

(3.4)

CT = 4.0 105 ton = 4.0 105 8.18363S = 327.3453pF




ton
+ 1 = 2 18mA (4.50549 + 1) = 198.19764mA
Ipk = 2Iout
tof f

(3.5)


L(min) =

RSC = 0.3Ipk = 0.3/Ipk = .3/198.19764mA = 1.51364





Vin Vsat
5V 0.45V
ton =
8.18363S = 187.87063H
Ipk
198.19764mA
CO = 9

Iout ton
18mA 8.18363S
=9
= 13.25748F
Vripple
100mV

(3.6)
(3.7)
(3.8)
(3.9)

La corriente que atraviesa el inductor sera la misma corriente pico que pase por el transistor o switch interno del circuito MC34063[11].
Ya que se usaran resistores de 1/8 de watt y el voltaje que debe pasar el resistor R1 es
de 1.25V se propone a R1 como 5.6K de esa forma se asegura que no se supere la corriente
maxima de operaci
on de este resistor. Para obtener su valor de R2, se despeja de la Ecuaci
on
3.10 (ver Tabla 3.2) y se obtiene:


Vout

R2
= 1.25 1 +
R1

R2
Vout
=1+
1.25
R1
Vout
R2
1=
1.25
R1




Vout
25V
R2 = R1
1 = 5.6K
1 = 106400
1.25
1.25

(3.10)

Los valores obtenidos, como los de Lmin , CO , CT , RSC y R2, no son valores estandarizados,
que los fabricantes distribuyen, razon que obliga a tomar elementos con valores comerciales
cercanos a los obtenidos. Los elementos elegidos por su valor aproximado son:

IPN

88

ESIME

3.1 Control de la pantalla TFT-LCD.

Lmin = 187.87063H 220H


CO = 13.25748F 10F
CT = 327.3453pF 330pF
RSC = 1.51364 1.5
R2 = 106.4K 100K
Estos componentes comerciales cumplen con los requisitos de corriente y voltaje maximos
tolerados. Para el inductor se necesita que soporte 198mA y el inductor elegido soporta hasta
1.1A. En cuanto a los capacitores es necesario que soporten voltajes no mayores a los 30V y
los componentes comerciales usados soportan hasta 63V.
No obstante, usar elementos de magnitud distinta a las calculadas, alterara los valores con
los que el circuito MC34063A trabaja para la conversion de voltaje y es necesario comprobar,
mediante las ecuaciones de dise
no, que a
un se tendra un resultado de conversion u
til para el
proposito deseado.
Por la Ecuaci
on 3.10 se comprueba el voltaje de salida que se obtendra con los valores
aproximados.
Vout





100K
R2
= 1.25 1 +
= 23.57142V
= 1.25 1 +
R1
5.6K

La comprobaci
on del voltaje de salida demuestra que el voltaje de salida sera de 23.57 V,
al ser mayor a los 15V mnimos necesarios para activar la luz de fondo, se concluye que la
resistencia R2 seleccionada por aproximacion es funcional.
Por otro lado es primordial comprobar que la corriente de salida no sea mayor que 25 mA
ya que es el m
aximo permitido que se puede aplicar a la luz de fondo de la pantalla [7]. De
las Ecuaciones 3.6 y 3.7 se puede despejar y calcular el valor de corriente maxima de salida
esperada:
De la Ecuaci
on 3.7...
RSC =
Ipk =

ESIME

0.3
Ipk

0.3
0.3
=
= 0.3333
RSC
1.5
89

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

De la Ecuaci
on 3.6...

Ipk = 2Iout

Ipk

Iout =
2

ton
tof f

+1

=

ton
+1
tof f

0.3333
= 18.16368mA
2 (4.50549 + 1)

Se observa de esta comprobaci


on que la corriente es solamente un tanto mayor a los 18
mA que se establecieron al principio como deseados. Finalmente otro valor importante de
salida del conversor es el voltaje de rizo en la se
nal, el cual puede ser comprobado mediante
las Ecuaciones 3.4 y 3.9.
De la Ecuaci
on 3.4...
CT = 4.0 105 ton
ton =

330pF
CT
=
= 8.25S
4.0 105
4.0 105

Y de la Ecuaci
on 3.9...
CO = 9
Vripple = 9

Iout ton
Vripple

18.16368mA 8.25S
Iout ton
=9
= 134.86532mV
CO
10F

Con esta u
ltima comprobaci
on se concluye que a pesar de modificar los valores calculados
de los elementos externos, a
un se tienen parametros de salida u
tiles para activar la luz de
fondo de la pantalla LQ043T3DX02.
En la Figura 3.2 se muestra un diagrama de la placa que contiene las conexiones realizadas
y el circuito de subida de voltaje para la luz de fondo.

3.1.2.

Software de control en VHDL.

En la Tabla 2.6 se muestran las se


nales necesarias para el funcionamiento de la pantalla
LQ043T3DX02, las cuales deben implementarse mediante codigo VHDL.
La se
nal de reloj para la pantalla TFT-LCD, se genera dentro del FPGA mediante un
DCM, tomando su valor tpico de 9 MHz.
Para retrasar la activaci
on de la se
nal de voltaje analogico (AVDD) que se ve en la Figura
2.18, se realiz
o un contador binario que proporciona una se
nal de habilitacion cuando el

IPN

90

ESIME

3.1 Control de la pantalla TFT-LCD.

Figura 3.2: Interfaz fsica entre TFT-LCD y FPGA.


contador llega a un valor que representa un lapso 50ms. Parte del codigo VHDL que define
la declaraci
on del n
umero de ciclos al que debe llegar el contador se ve a continuacion:
constant CLOCKFREQ
: natural := 9; --MHz
constant TVDDEN
: natural := 50; --ms
constant TVDDEN_CYCLES : natural := natural(CLOCKFREQ*TVDDEN*1000);}
La se
nal DISP (ver Figura 2.18) se activa cuando la pantalla LQ043T3DX02 puede comenzar
a desplegar contenido visual. Esta se
nal se activa 500 S despues de la se
nal AVDD. Se utiliza
el mismo contador de retraso de tiempo que para la se
nal AVDD ya que una vez activada
esta no lo requerir
a de nuevo hasta un reinicio del controlador.
Con la se
nal de reloj de 9 MHz, a la cual tambien se le puede llamar reloj de pixel, se
desarrolla la se
nal de control de barrido horizontal. La se
nal HSync se genera mediante un
contador de tipo de dato entero y con un rango maximo igual a 525. El contador ayuda a
determinar en que punto la se
nal Hsync estara en 1 o 0 de acuerdo a la forma de onda
descrita en la secci
on 2.3.2; (41 ciclos de reloj en 0 y 484 ciclos de reloj en 1).
La se
nal de barrido vertical usa para su funcionamiento la se
nal HSync, usa tambien un
contador de tipo entero para determinar el valor (0 o 1) de se
nal. La forma de onda tambien

ESIME

91

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

se describe en la secci
on 2.3.2 y Figura 2.18. El modulo controlador desarrollado, se asegura
de iniciar en estado alto esta se
nal.
Adem
as de las se
nales VSync y HSync es necesario sincronizar los datos RGB que ser
an
enviados a la pantalla. Considerando el marco negro en los margenes de la pantalla (seccion 2.3.2) se construye la se
nal de habilitacion de desplegado de imagen, VDE. Esta se
nal
esta activa cuando los contadores se encuentran en el punto en el que las se
nales RGB deben comenzar a desplegarse. Ambos contadores deben estar en el rango de: 435contador
horizontal5523 y 125contador vertical5284 para que la se
nal VDE este activa y se puedan
enviar datos de im
agenes a la pantalla.
El codigo VHDL que genera las se
nales HSync, VSync y VDE se muestra a continuaci
on:
signal HCnt : NATURAL range 0 to 525 := 0; --horizontal counter
signal VCnt : NATURAL range 0 to 286 := 0; --vertical counter
signal hs, vs: std_logic; -- horizontal/vertical sync
signal vde : std_logic;
process (PCLK_I)--9MHz
begin
if Rising_Edge(PCLK_I) then
if (RST_I = 1) then
HCnt <= 525 - 1;
VCnt <= 286 - 1;
vde <= 0;
hs <= 1;
vs <= 1;
else
if (HCnt >= (41)) and (HCnt < 525) then
hs <= 0;
if (VCnt >= (10)) and (VCnt < 286) then
vs <= 0;
else
vs <= 1;
end if;
else
hs <= 1;
end if;
if ((HCnt >= 43 and HCnt < 523) and (VCnt >= 12 and VCnt <= 286)) then
vde <= 1;
else
vde <= 0;
end if;
end if;
end if;
end process;

3.1.3.

Resultados del Control Implementado.

La placa PCB fabricada se ve en la Figura 3.3, en ella se observa el conector y las lneas
necesarias para interconectar la pantalla TFT-LCD con la tarjeta SP3E. Tambien se observa

IPN

92

ESIME

3.1 Control de la pantalla TFT-LCD.

el circuito integrado MC34063A junto a los componentes que integran el circuito convertidor
de voltaje de subida. Experimentalmente este circuito convertidor proporciona un voltaje de
23.6V y una corriente de 20mA valores suficientes para accionar la luz de fondo de la pantalla.

Figura 3.3: Placa PCB de Interfaz de la Pantalla TFT-LCD y Spartan 3E.

En la Figura 3.3 se muestra la pantalla LQ043T3DX02 desplegando una imagen de prueba


mediante el m
odulo controlador en VHDL, en esta Figura se observa el desplegado de tres
barras de los colores RGB. Con esta prueba de demuestra el correcto funcionamiento de la
activacion de la luz de fondo y el control del FPGA enviando las se
nales de control adecuadas
para mostrar una imagen en pantalla.
Por otra parte los resultados del codigo VHDL se observan en la Figura 3.4, que presenta
las formas de onda que es necesario satisfacer para controlar la pantalla.

3.1.3.1.

Resultados Experimentales de la Fuente de Voltaje.

La fuente de voltaje implementada para activar la luz de fondo presento los siguientes
resultados experimentales; comparados, en la Tabla 3.3, con los resultados esperados.

ESIME

93

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.4: Formas de Onda para el Control de la Pantalla.

Tabla 3.3: Valores te


oricos y experimentales del circuito convertidor de DC a DC de subida
Parametros Teorico

Parametros Experimentales

Voltaje de Salida

23.5 V

23.57V

Corriente de Salida

18.16mA

20.3mA

Voltaje de rizo

134.16 mV

1.32V

El valor obtenido experimentalmente del voltaje de rizo se debe a la ausencia de un


filtrado adicional en la se
nal de voltaje el cual se omitio al ser marcado como opcional en las
especificaciones de dise
no [11].
Los m
aximos valores de funcionamiento para la luz de fondo de la pantalla TFT-LCD son
29.4 V y 20 mA [7]. De acuerdo a estos valores la carga equivalente que proporciona la luz de
fondo de la pantalla es de 1470. Los valores experimentales de corriente y voltaje para una
carga resistiva del valor de 1470 son 23.6V y 17.29mA. Ademas para verificar el rango de
funcionamiento de la fuente se realizo una variacion de la carga resistiva en un rango desde
los 25 hasta los 10 K; la Tabla 3.4 muestra los valores de las muestras tomadas.
La Figura 3.5 muestra una gr
afica del comportamiento de la corriente al aumento de la
carga en el rango antes mencionado desde 25 hasta los 10K.

IPN

94

ESIME

3.2 Control del Modulo RGM-3000.

Tabla 3.4: Muestra de Valores de Voltaje y Corriente Variando la Carga Resistiva


Resistencia()

Corriente(mA)

Voltaje(V)

Resistencia()

Corriente(mA)

Voltaje(V)

25

300

1400

18.2

23.6

50

180

6.1

1500

15.75

23.6

75

150

6.1

1600

14.65

23.6

100

120

6.7

1700

13.93

23.6

200

85

11

1800

13.73

23.6

300

52.7

16.9

1900

13.6

23.6

400

48.8

18.9

2000

13

23.6

500

42.9

20.3

2100

12.1

23.6

600

38.3

22

2200

11.4

23.6

700

34.5

23.2

2300

10.8

23.6

800

30

23.3

2400

10.5

23.6

900

26.6

23.4

2500

10.5

23.6

1000

24.2

23.4

5000

4.7

23.6

1100

21.4

23.6

7500

3.14

23.6

1200

19.9

23.6

10000

2.34

23.6

1300

18.2

23.6

3.2.
3.2.1.

Control del Modulo RGM-3000.


Interfaz Fsica.

Como se menciono en el captulo 1 y se observa en la figura 1.1, el sistema requiere de un


medio para obtener coordenadas de localizacion geograficas y este medio es el modulo GPS
RGM-3000. Se describi
o en la seccion 2.1.5 la estructura fsica y disposicion de los pines del
conector que usa el m
odulo RGM-3000 (ver Tabla 2.3). .
Se expuso que este m
odulo GPS, necesita de 3.3V para funcionar. La principal fuente de
energa, en este proyecto, se proporciona por medio de la tarjeta SP3E y es a traves de esta
que se alimentar
a al m
odulo RGM-3000.

ESIME

95

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.5: Grafico de Carga Contra Corriente.


Por otra parte la informaci
on GPS se enva por una lnea serial (TXA, ver Tabla 2.3) la
cual se debe conectar hacia el FPGA. La informacion se transmite a traves de un estandar
RS-232, por lo que se utiliza un conector DB9 hembra para realizar el empalme del modulo
RGM-3000 con el que se tiene en la tarjeta SP3E. Estas conexiones fsicas se observan en el
diagrama de la figura 3.6.
La lnea TXA se conecta directamente a traves de un conector DB9 hembra al pin correspondiente del conector DB9 macho de la tarjeta SP3E. Se menciono en la seccion 2.2.3.1 que
la tarjeta tiene incluido un circuito integrado que adecua los niveles de voltaje de acuerdo
al estandar RS232. Por ello no es necesaria otra interfaz mas que la conexion fsica entre el
modulo RGM-3000 y la tarjeta Spartan 3E.

3.2.2.

Software de control en VHDL.

El principal objetivo recibir las cadenas GPS que se enva de forma serial por una interfaz
con el m
odulo RGM-3000. De la seccion 2.1.5 se sabe que la transmision de datos seriales en
un estandar RS-232 con las siguientes caractersticas:
Baud Rate: 48000 bps.
Bits de datos : 8.

IPN

96

ESIME

3.2 Control del Modulo RGM-3000.

Figura 3.6: Conexiones necesarias para el funcionamiento del modulo RGM-3000.


Bit de paridad: Ninguno.
Bit de paro: 1.
Por tanto para controlar el m
odulo RGM-3000 debe adecuarse a las caractersticas de
transmisi
on y as recibir los datos GPS.
El codigo VHDL de control generado usa una se
nal de reloj de 50 MHz para sincronizar
la recepci
on y la conversi
on de los datos seriales en datos paralelos. Mediante este reloj se
implementa un contador que ayuda a determinar el momento en que cada bit de la comunicacion serial cambia. El mismo contador determina el punto medio de la duracion del bit
transmitido para as tomar su valor y almacenarlo mediante un registro de corrimiento. El
codigo de este contador y el momento del cambio de bit y punto medio, se ve a continuaci
on:
process (clk, reset) is
begin
if reset = 1 then
baud_counter <= (others=> 0);
elsif rising_edge(clk) then
if reset_counters = 1 then
baud_counter <= (others=> 0);
elsif baud_counter = conv_std_logic_vector(10416,14) then
baud _counter <= (others =>0);
else
baud_counter <= baud_counter + 1;

ESIME

97

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

end if;
end if;
end process;
process (clk,reset)is
begin
if reset = 1 then
baud_clock_rising_edge <= 0;
elsif rising_edge(clk)then
if
baud_counter = conv_std_logic_vector(10416,14) then
baud_clock_rising_edge <= 1;
elsebaud_clock_rising_edge
baud_clock_rising_edge <= 0;
end if;
end if;
end process;
process (clk, reset) is
begin
if reset = 1 then
baud_clock_falling_edge <= 0;
elsif rising_edge(clk) then
if baud_counter = conv_std_logic_vector(5208,14) then
baud_clock_falling_edge <= 1;
else
baud_clock_falling_edge <= 0;
end if;
end if;
end process;
nal se deshabilita
Mientras las se
nal reset counters sea 1 el contador no iniciara. Esta se
cuando se detecta el bit de inicio, de la cadena trasmitida por el modulo RGM-3000, por la
entrada de datos seriales serial data in; de la siguiente manera:
process (clk, reset) is
begin
if (reset = 1) then
receiving_data <= 0;
elsif rising_edge(clk) then
if(all_bits_received = 1) then
receiving_data <= 0;
elsif (serial_data_in = 0) then
receiving_data <= 1;
end if;
end if;
end process;
.
.
.
reset_counters <= not receiving_data;
La se
nal all bits received indica cuando se han recibido la totalidad de bits de la
cadena que transmite el RGM-3000, que en este caso son 10 bits; tomando en cuenta el bit de
inicio , 8 bits de datos y un bit de paro. Este proceso se realiza con la se
nal que indica el final

IPN

98

ESIME

3.2 Control del Modulo RGM-3000.

del lapso en que cada bit es trasmitido (baud clock rising edge), con esta se
nal se hace un
conteo de los bits que se reciben y al llegar el contador a 10 se considera que ha terminado
la cadena que se espera recibir.
A traves de un registro de corrimiento se almacenan los bits hasta que se completa la
transmisi
on de 8 bits de datos. Cuando esto sucede se activa la se
nal received data valid
que indica que se tiene el contenido valido de una cadena transmitida, es decir, un valor
ASCII de 8. Este valor de 8 bits se obtiene por una de las salidas del modulo VHDL creado
(received data). Este proceso se realiza de la siguiente forma:
process (clk, reset) is
begin
if (reset = 1) then
data_in_shift_reg<= (others =>0);
elsif rising_edge (clk) then
if (baud_clock_falling_edge = 1) then
data_in_shift_reg <= serial_data_in & data_in_shift_reg(9 downto 1);
end if;
end if;
end process;
process (clk, reset, all_bits_received) is
begin
if (reset = 1) then
data_reg
<= (others =>0);
elsif rising_edge (all_bits_received) then
data_reg
<= data_in_shift_reg(8 downto 1);
else
data_reg <= data_reg;
end if;
end process;
.
.
.
received_data
<= data_reg;
El m
odulo en c
odigo VHDL elaborado, realiza la tarea de convertir los datos seriales en
paralelos que representan valores ASCII individuales de informacion GPS, sin embargo son
cadenas completas de datos las que se busca. El proceso para obtener dicha cadena se trata
en la secci
on 3.5.1.

3.2.3.

Resultados del Control Implementado.

Mediante software y una PC portatil se obtuvieron las cadenas de informacion del modulo
RGM-3000. Se recolectaron 15 ejemplares de la cadena de informacion geografica GPRMC
que proporciona el modulo RGM-3000, mismas que se observan en la Tabla 2.1.4, con las que

ESIME

99

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

se realizo un promedio de para determinar un valor geografico medio con el cual comparar la
ubicacion con otro dispositivo.

Tabla 3.5: Coordenadas Geograficas del RGM-3000 en la cadena GPRMC

Promedio

Latitud

Longitud

193647.16N

990234.49W

193647.17N

990234.85W

193647.18N

990234.85W

193647.19N

990234.81W

193647.20N

990234.76W

193647.21N

990234.76W

193647.22N

990234.74W

193647.24N

990234.71W

193647.25N

990234.69W

193647.26N

990234.68W

193647.28N

990234.68W

193647.28N

990234.68W

193647.29N

990234.67W

193647.29N

990234.65W

193647.30N

990234.63W

193647.4723N

990234.763W

Con el promedio de las coordenadas geograficas se utilizo un dispositivo movil comercial


para comparar los resultados de ubicacion entre ambos dispositivos. Los resultados comparativos se observan en la figura 3.7 y se calcula un error promedio de la distancia de ubicacion de
6m.; teniendo la mayor exactitud en la ubicacion el dispositivo movil comercial. El marcador
rojo en la figura 3.7 se
nala la ubicacion de las coordenadas obtenidas mediante el modulo
RGM-3000; mientras que el marcador azul proveer la ubicacion actual del dispositivo movil
utilizado.

IPN

100

ESIME

3.2 Control del Modulo RGM-3000.

Figura 3.7: Imagen Comparativa de Ubicacion.


En la figura 3.8 se observa la conexion entre el modulo RGM-3000 mediante conectores
DB9 con la tarjeta Spartan 3E. Esta conexion permite la transmision serial de los datos del
modulo GPS al FPGA.
Mediante el c
odigo VHDL generado se obtiene una de las cadenas de informacion de
localizaci
on geogr
afica. Valiendose de uno de los componentes de la tarjeta SP3E, la LCD de
2x26 caracteres, se muestra en esta pantalla el contenido de la cadena GPS, como se ve en la
figura 3.8.
En la misma figura 3.8 se observa la cadena de informacion RCM (ver seccion 2.1.4) tal
cual el m
odulo RGM-3000 la enva. Con el contenido de la cadena desplegada, se demuestra
el funcionamiento tanto de la interfaz fsica realizada como del control mediante software,
que en conjunto recolectan la informacion GPS satisfactoriamente.

ESIME

101

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.8: RGM-3000 conectado a la tarjeta Spartan 3E.

IPN

102

ESIME

3.3 Control de la Tarjeta SD.

3.3.
3.3.1.

Control de la Tarjeta SD.


Interfaz Fsica.

Los mapas son una parte importante de un dispositivo de localizacion geografica, estos
suelen ser un banco de im
agenes digitales que se almacenan en un dispositivo de memoria.
Retomando informaci
on del captulo 1, se utiliza para almacenar las imagenes de mapas
digitales la tarjeta SD, por ello se elaboro una interfaz de conexion entre la SD Card y la
tarjeta SP3E como se ejemplific
o en la Figura 1.1.
La interfaz fsica de conexi
on con la tarjeta SD debe hacerse a traves de sus 9 pines, esto
es as cuando se usan las 4 lneas de datos disponibles en la tarjeta (SD Bus 4-bits ver secci
on
2.4.2). Sin embargo, se decidi
o utilizar una sola lnea de comunicacion de datos para facilitar
la implementaci
on del programa controlador de la tarjeta SD y hacer un uso mas eficiente de
los pines de conexi
on del FPGA. De esta manera se reducen las lneas de comunicacion, de
nueve a u
nicamente 6.
Potencialmente es posible utilizar el puerto de expansion J1 de 6 pines de la tarjeta SP3E,
que se ubica justo debajo del conector Hirose de 100 pines; como se ve en la Figura 2.12. Este
conector de expansi
on J1 comparte las lneas hacia el FPGA con el conector Hirose de 100
pines por lo que es posible realizar la interfaz de FPGA y tarjeta SD por cualquiera de estos
conectores de expansi
on.
La distribuci
on de los pines de la tarjeta de memoria SD se trato en la seccion 2.4.2 y en la
Figura 2.20. De acuerdo a esta distribucion de lneas, se realizaron algunas adecuaciones, por
medio de una placa PCB, para tener una conexion adecuada. En la Figura 3.9 se observan
las adecuaciones de conexi
on realizadas.
Las especificaciones de conexi
on de la tarjeta SD [8] mencionan que las lneas de datos
(DAT[0:3]) y la de comandos (CMD) deben conectarse a una resistencia de pull up. Utilizando
una de las caractersticas de los bloques de Entrada/Salida del FPGA, vistos en la secci
on
2.2.1.2, se activa la terminaci
on de lnea con resistencia de pull up; esta resistencia tiene un
valor aproximado a los 10K que es el mnimo recomendado por las especificaciones de la SD.
Empleando estas resistencias de pull up se logra no utilizar elementos externos en la placa
PCB de conexi
on entre SD Card y tarjeta SP3E.

ESIME

103

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.9: Conexion entre FPGA y tarjeta SD.

3.3.2.

Software de control en VHDL.

El desarrollo de este control mediante codigo VHDL es el mas extenso e importante en


el sistema. Sin este no se podra tener acceso a un sistema de almacenamiento masivo, y por
tanto a las im
agenes de mapas digitales esenciales para el sistema.
El funcionamiento interno de la tarjeta SD tiene varios elementos que deben se considerados para su comprensi
on y uso. Las funciones o tareas requeridas para controlar y/o entablar
comunicaci
on con la tarjeta SD son: la generacion y envo de comandos, la recepcion de la
respuestas y registros, el suministro de se
nales de reloj, recibir y enviar bloques de datos
desde y hacia la tarjeta SD.
Para controlar e intercambiar informacion con una tarjeta SD es factible separar las
distintas funciones para as realizar el manejo independiente de cada funcion. Por su parte
cada una de estas tareas deben cumplir con ciertos criterios de funcionamiento, tiempos de
espera, procesos con longitudes diferentes de cadenas de bits, comparacion de registros, etc;
detallados en el documento de especificaciones [8].
Mas all
a de las tareas o procesos simplificados se requiere de un sistema o medio para
tener un control del proceso global que esta implcito al establecer un control y comunicaci
on
con la tarjeta SD. El proceso global de control necesario para controlar y/o comunicarse
con la tarjeta SD se expuso en la seccion 2.4.3; este mismo proceso toma la forma de una
maquina de estados finitos (FSM) en el codigo VHDL desarrollado. Esta maquina de estados
desarrolla la secuencia adecuada para cumplir con los procesos de: energizacion, inicializaci
on,
cambio de frecuencia(secci
on 2.4.3), transferencia de datos y sincronizacion en cada proceso

IPN

104

ESIME

3.3 Control de la Tarjeta SD.

independiente de: envo de comando, espera y recepcion de respuestas, etc.


Debido a la cantidad amplia de lneas de codigo VHDL, se presenta el diagrama de esta
maquina de estados en la Figura 3.10, se muestran los estados requeridos para el control
global y la transici
on entre estos; el codigo completo se presenta en el Apendice A. El dise
no de la maquina de estados atiende al proceso que se describe en las especificaciones del
funcionamiento de la tarjeta SD [8]. La transicion entre estados se describe a continuaci
on,
ademas se pueden visualizar las figuras 2.29 y 2.30 donde se presenta en un diagrama de flujo
el proceso que se debe seguir para inicializar la tarjeta y transferir informacion a/desde ella.

Figura 3.10: Diagrama de Maquina de Estados de Control


En la Figura 3.10 se observa que la maquina de estados despues de aplicar energa a la

ESIME

105

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

tarjeta SD inicia (o reinicia) la secuencia de control esperando 74 ciclos de reloj para que el
voltaje de operaci
on se estabilice (seccion 2.4.3.2)[8].
Posteriormente se comienza con la secuencia de envo de comandos de inicializacion y
la recepci
on de sus correspondientes respuestas (Estados: s Generar Comando Predefinido,
s Esperar Transmisi
on Comando Predefinido, s Esperar Respuesta Comando Predefinido,
s Siguiente Comando).
Adem
as de los comandos en la secuencia de inicializacion vista en la Figura 2.29 de la
seccion 2.4.3, se envan algunos comandos adicionales para obtener todos los registros de
funcionamiento de la tarjeta SD. La secuencia predefinida de comandos que se enva a la
tarjeta SD es: CMD0 (Reinicia la tarjeta SD), CMD8(Peticion de condiciones de interfaz),
CMD55(Previo a un comando de aplicacion especial), ACMD41(CMD especial, peticion registro OCR), CMD2(Petici
on registro CID), CMD3 (Peticion registro RCA), CMD9(Petici
on
registro CSD), CMD7(Selecci
on de tarjeta y cambio a estado interno de la tarjeta de transferencia de datos), CMD13(Petici
on de registro de estado).
Despues de enviar estos 9 comandos y estando inicializada la tarjeta SD, es necesario cambiar a la frecuencia de transferencia de datos lo que se hace en el estado s Cambio Frecuencia.
Posterior al cambio de frecuencia se aguarda un comando perteneciente a las tareas descritas
en la secci
on 2.4.3.3. Ya que en este estado se aguarda un comando que podra no ser recibido
inmediatamente, se detiene temporalmente el suministro de la frecuencia de reloj a la tarjeta
SD.
Cuando se recibe la se
nal de envo de un nuevo comando se reactiva el suministro de la
frecuencia de reloj a la tarjeta SD (s Ractivar Reloj ) y se procede a generar el nuevo comando
(s Generar Comando). Despues el proceso es similar al del principio, enviar el comando a la
tarjeta SD y esperar la recepci
on de la respuesta.
Cabe se
nalar que en ambos casos (respuesta de comandos predefinidos y respuestas de
comandos) se realiza una generaci
on y verificacion del CRC; con los comandos y respuestas
respectivamente. Cuando una tarjeta recibe un comando que no reconoce omite la respuesta, o bien recibe el comando y su repuesta contiene alg
un error de transmision. En ambas
circunstancias debe ejecutarse un reenvo del comando inmediatamente anterior al error de
CRC detectado.
Otra consideraci
on en cuanto a las respuestas de la tarjeta SD, es el tiempo que se espera

IPN

106

ESIME

3.3 Control de la Tarjeta SD.

a que la tarjeta SD realice esta operacion. En el caso de los comandos predefinidos, si la


respuesta no llega despues de cierto lapso, se comienza de nuevo el proceso de inicializaci
on.
Por otro lado con los comandos que siguen al proceso de inicializacion, al no llegar una
respuesta de la SD en el tiempo maximo de espera, se verifica el registro de estado de la
tarjeta mediante el CMD13(que es un comando predefinido), si esta operacion no se puede
realizar se considera que se desconecto la tarjeta y se regresa a un estado de reinicio de
operaciones.
El proceso global descrito se auxilia de la ejecucion de procesos mas especficos que a
continuaci
on se exponen.

3.3.2.1.

Generador de Reloj.

Para el proceso de inicializaci


on se debe proporcionar a la tarjeta SD una frecuencia en
el rango de los 100KHz a los 400KHz y para el modo de transferencia de datos el controlador
debe cambiar la frecuencia a la correspondiente para esta tarea[8]. A traves de un contador
binario de 7 bits la frecuencia primordial de la tarjeta SP3E (50MHz) se transforma ,en
300KHz para el estado de inicializacion y en 25 MHz para la tranferencia de datos. El codigo
VHDL de este contador y la creaci
on de las frecuencias se observa a continuacion.
signal counter : std_logic_vector(6 downto 0);
begin
process(i_clk, i_rst)
begin
if (i_rst = 1) then
counter <= (OTHERS => 0);
local_mode <= 0;
else
if (rising_edge(i_clk)) then
if (i_enable = 1) then
counter <= counter + 1;
end if;
if (counter = 64) then
local_mode <= i_mode;
end if;
end if;
end if;
end process;
o_clock_mode <= local_mode;
o_SD_clock <= counter(6) when (local_mode = 0) else counter(1);
o_before_receive <= 1 when ((local_mode = 0) and (counter = 63)) else
((not counter(1)) and (counter(0)))
when (local_mode = 1) else 0;
o_before_send <= 1 when ((local_mode = 0) and (counter = 31)) else
((counter(1)) and (counter(0))) when (local_mode = 1) else 0;

ESIME

107

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

El m
odulo VHDL de la m
aquina de estados de control, utiliza la se
nal i mode para determinar con un 0 cuando se requiere la frecuencia de reloj para el estado de inicializacion y
con 1 para el de transferencia de datos. Por la salida o clock mode, de este modulo VHDL
generador de reloj, se manifiesta el momento en que ha conmutado la frecuencia.
Para habilitar o deshabilitar al contador binario y por tanto la creacion de las se
nales de
reloj pertinentes se utiliza se
nal i enable (ver seccion 2.4.3). El modulo que dirige el proceso
general de controlar la tarjeta SD, activa o desactiva esta se
nal.
Adicionalmente se generan las se
nales o before receive y o before send. La primera
otorga una se
nal que se activa un momento antes de que la se
nal de reloj de salida cambie de estado bajo a estado alto para as alertar del momento oportuno en que se puede
comenzar a recibir informaci
on (respuestas) proveniente de la tarjeta SD. Por otro lado la
nal de reloj actual cambie de
se
nal o before send se dispara medio ciclo antes de que la se
un estado bajo a alto para comenzar la transmision de bits en el punto en que el reloj se
encuentre en un valor de 1.

3.3.2.2.

Generador de Comandos.

La tarea primordial del m


odulo VHDL Generador de Comandos es construir la cadena de
48 bits como se ve en la Figura 2.23 y se realiza ordenando los grupos de informacion que se
requieren. El c
odigo VHDL que realiza esto es:
message_bits <= ("01" & i_command_ID & cmd_argument);
En esta lnea de c
odigo se observa como se conjunta: el bit de inicio, bit de direccion de
transmisi
on, n
umero de identificacion de comando y argumento del comando. El n
umero de
identificaci
on de comando es enviado regularmente por el modulo de control global, aunque los
identificadores de comandos predefinidos se tienen como constantes en este modulo generador,
algunos ejemplos son:
COMMAND0 :
COMMAND2 :
.
.
.
COMMAND7 :
COMMAND13:
.
.
.

IPN

STD_LOGIC_VECTOR(5 downto 0) := "000000";


STD_LOGIC_VECTOR(5 downto 0) := "000010";

STD_LOGIC_VECTOR(5 downto 0) := "000111";


STD_LOGIC_VECTOR(5 downto 0) := "001101";

108

ESIME

3.3 Control de la Tarjeta SD.

COMMAND55 :STD_LOGIC_VECTOR(5 downto 0) := "110111";


ACOMMAND41:STD_LOGIC_VECTOR(5 downto 0) := "101001";
El valor de estos 6 bits es importante ademas para formar el siguiente segmento de la
cadena; el argumento. Dependiendo del ndice la cadena de bits puede o no necesitar datos
adicionales en el campo del argumento, como la direccion de memoria en caso de ser un
comando de escritura, lectura o borrado. Ademas en los 32 bits que componen al argumento
pueden ser enviados datos relevantes y necesarios para completar una tarea especfica para
la que cierto comando es transmitido. Para los comandos predefinidos el argumento esta
tambien generado con anticipaci
on, para los comandos subsecuentes el argumento tambien
debe ser proporcionado y luego almacenado en un registro temporal.
if (i_generate = 1) then
case (i_command_ID) is
when COMMAND7 =>
cmd_argument <= i_RCA & i_argument(15
when COMMAND9 =>
cmd_argument <= i_RCA & i_argument(15
vdots
when COMMAND13 =>
cmd_argument <= i_RCA & i_argument(15
when COMMAND_55_APP_CMD =>
cmd_argument <= i_RCA & i_argument(15
when ACOMMAND41 =>
cmd_argument <= i_OCR;
when others =>
cmd_argument <= i_argument;
end case;
end if;

downto 0);
downto 0);
downto 0);
downto 0);

El m
odulo generador de comandos almacena temporalmente el valor del ndice de comando
para tener la informaci
on del u
ltimo comando enviado. Incluso, con el registro de ndice de
comando, es posible saber si la siguiente instruccion sera un comando de los clasificados como
comandos de aplicaci
on especial, ya que uno de estos siempre es precedido por el comando
CMD55 [8]. Este mismo valor define el tipo de respuesta que se espera recibir, debido a que
cada comando esta relacionado directamente con uno de los 5 tipos posibles de respuestas.
Al conocer la respuesta esperada se puede advertir de la longitud de la cadena que se espera
recibir.
La cadena que se tiene hasta ahora en el registro message bits esta compuesta por 40
bits, para ser enviados deben de ser protegidos por un codigo de redundancia cclica. Este
CRC son 7 bits generador por un submodulo VHDL, dedicado u
nicamente a la creacion de
CRC

ESIME

109

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

CRC7.

Para generar los 7 bits de proteccion de errores para comandos se debe seguir el

proceso que se observa en la Figura 2.24, que se transforma en el siguiente codigo VHDL:
process (i_clk, i_rst)
begin
if (i_rst = 1) then
shift_register <= (OTHERS => 0);
else
if (rising_edge(i_clk)) then
if (i_enable = 1) then
if (i_shift = 0) then
shift_register(0) <= i_datain XOR shift_register(6);
shift_register(1) <= shift_register(0);
shift_register(2) <= shift_register(1);
shift_register(3) <= shift_register(2) XOR i_datain XOR shift_register(6);
shift_register(4) <= shift_register(3);
shift_register(5) <= shift_register(4);
shift_register(6) <= shift_register(5);
else -- shift CRC out (no more calculation now)
shift_register(0) <= 0;
shift_register(6 downto 1) <= shift_register(5 downto 0);
end if;
end if;
end if;
end if;
end process;

Los 40 bits se transmiten de forma serial tanto a la tarjeta como al generador CRC7
mediante un registro de corrimiento, tomando los bits de izquierda a derecha y enviandolos
uno a uno. El registro de corrimiento se auxilia de un contador binario, que utiliza el reloj
de transmisi
on para llevar el conteo bits transmitidos a partir del bit de inicio del comando.
if (produce_next_bit = 1) then
-- Shift message bits.
message_bits(39 downto 1) <= message_bits(38 downto 0);
message_bits(0) <= 0;
end if;
sent_bit_counter: process(i_clk, i_rst, i_generate, produce_next_bit, counter)
begin
if (i_rst = 1) then
counter <= (OTHERS => 0);
else
if (rising_edge(i_clk)) then
if (i_generate = 1) then
counter <= "0000000";
else
if (produce_next_bit = 1) then
counter <= counter + 1;
end if;
end if;
end if;
end if;
end process;

IPN

110

ESIME

3.3 Control de la Tarjeta SD.

Cuando los 40 han pasado por el generador CRC7 y enviados a la tarjeta, comienza
la transmisi
on de los 7 bits de proteccion generados, agregando por u
ltimo el bit de paro;
completando la cadena de 48 bits de un comando.
data_bit_register: process(i_clk, i_rst, i_generate, produce_next_bit, counter)
begin
if (i_rst = 1) then
bit_to_send <= 1;
else
if (rising_edge(i_clk)) then
if (i_generate = 1) then
bit_to_send <= 1;
elsif (produce_next_bit = 1) then
if (sending_CRC = 0) then
bit_to_send <= message_bits(39);
else
if ((counter = 47) or (counter = 48)) then
bit_to_send <= 1;
else
bit_to_send <= CRC_generator_out;
end if;
end if;
end if;
end if;
end if;
end process;

3.3.2.3.

Receptor de Respuestas de la Tarjeta SD.

Una respuesta es la consecuente accion de una tarjeta SD como efecto de haber recibido
un comando. La acci
on de recibir una respuesta, en cuanto a codificacion VHDL, se cumple
con la sucesi
on de varias etapas. Debe iniciarse en un estado de espera, aguardando la se
nal
que confirma el envi
o completo del comando y as pasar a un estado de alerta en busca de un
valor 0 (bit de inicio de respuesta), sobre la linea CMD, que indica el comienzo de la cadena
de respuesta correspondiente al comando enviado.
El bit de inicio de la respuesta dispara o inicia la recepcion de los bits de la cadena
entrante. Es necesario usar un registro de corrimiento para almacenar uno a uno los datos
que llegan desde la tarjeta SD. La respuesta, proveniente de la tarjeta SD, puede tener una
longitud de 48 o 136 bits, este valor de longitud de respuesta es u
til para saber el limite al
que debe llegar el contador binario que lleva el control de los bits recibidos. Este proceso se
lleva a cabo con el siguiente c
odigo VHDL.
process (i_clk, i_rst)
begin
if (i_rst = 1) then
registered_data_input <= (OTHERS=>0);

ESIME

111

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

elsif (rising_edge(i_clk)) then


if ((start_reading_bits = 1) then
registered_data_input(127 downto 1) <= registered_data_input(126 downto 0);
registered_data_input(0) <= i_datain;
end if;
end if;
end process;
process (i_clk, i_rst, counter)
begin
if (i_rst = 1) then
counter <= (OTHERS=>0);
elsif (rising_edge(i_clk)) then
if ((start_reading_bits = 1 or counter <= 48) then
counter <= counter + 1;
else
counter <= (OTHERS=>0);
end if;
end if;
.
.
.
limit <= "00110000" when ((i_response_type = "001") or
(i_response_type = "011") or
(i_response_type = "110")) else
"10001000" when (i_response_type = "010") else
"00000000";
start_reading_bits <= 1 when ((i_datain = 0) and
(counter = "00000000") and
(not (limit = "00000000"))) else 0;
operation_complete <= 1 when (((counter = limit) and
(not (limit = "00000000"))) or
(timeout_counter = 48) or
((timeout_counter = 8) and
(limit = "00000000"))) else 0;
Paralelamente a la recepci
on de datos, los bits son introducidos al generador de CRC7,
deteniendo la entrada de bits a este generador antes de que los u
ltimos 8 bits sean recibidos. Comparando los bits CRC7 enviados por la tarjeta junto con los generados, se pueden
comprobar errores en la transmisi
on. Al ser estos codigos iguales se tendra la certeza de una
recepcion correcta. En caso de que no coincidan se hace notar esto al Generador de Comandos
para reenviar el comando anterior.
CRC_checked <= 1 when ((registered_data_input(0) = 1) and
(CRC_bits = registered_data_input(7 downto 1)))
else 0;
Despues de recibir todos los datos pertenecientes a la respuesta y al recibir el bit de paro
se inicia otra etapa en la cual se aguarda a que la operacion de recepcion termine, lo cual
sucede cuando el contador de bits recibidos llega a la cuenta maxima de bits esperados y/o
el contador de tiempo de espera llega al valor correspondiente del termino de operaciones.

IPN

112

ESIME

3.3 Control de la Tarjeta SD.

process (i_clk, i_rst)


begin
if (i_rst = 1) then
timeout_counter <= (OTHERS=>0);
elsif (rising_edge(i_clk)) then
if ((operation_complete = 1) and (not (timeout_counter = 48)))) then
timeout_counter <= (OTHERS => 0);
end if;
if ((start_reading_bits = 0) and (not (timeout_counter = 48))or
(registered_data_input(0) = 1)) then
timeout_counter <= timeout_counter + 1;
end if;
end if;
end process;
El contador de tiempo de espera se activa en dos diferentes momentos: despues de que el
bit de paro ha sido recibido y cuando se espera el bit de inicio de la respuesta. Al esperar
el bit de inicio el contador funciona por un periodo de 48 ciclos de reloj, si el bit de inicio
no llega en ese periodo se da por excedido el tiempo de espera y por concluida la operaci
on
con un error en la recepci
on. Despues de haberse recibido el bit de paro de la respuesta, el
contador de tiempo de espera funciona durante 8 ciclos de reloj para asegurar que todas las
operaciones restantes terminen correctamente.

3.3.2.4.

Transmisor y Receptor de Datos.

Los datos pertenecientes a archivos contenidos en la tarjeta SD se transfieren en bloques


de longitud de 512 bytes (ver seccion 2.4.2.3). En la practica la transferencia de datos se
realiza mediante la transmisi
on de comando de lectura (CMD 17, CMD18, CMD19, CMD20)
o escritura(CMD23, CMD24, CMD25).
Para facilitar los dos procesos principales (envio y recepcion), el modulo VHDL implementado los realiza mediante una maquina de estados que permite: estructurar el paquete de
datos que se transferir
a a la tarjeta SD, recibir, verificar y almacenar el paquete proveniente
de la tarjeta. Los estados de esta maquina y sus transiciones se muestran en la Figura 3.11.
En general el proceso comienza en un estado espera donde se aguarda por la se
nal que
indica si el siguiente paquete de datos sera ledo o escrito. Ejemplificando el proceso de
escritura de un bloque de datos, la maquina de estados se ubica la siguiente estado donde se
organizan los bits correspondientes a:

ESIME

113

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.11: M
aquina de Estados para el Envo/Recepcion de Datos
Bit de inicio.
Bloque de 512 bytes.
Bits de protecci
on de errores (CRC16).
Bit de paro.
El bit de inicio como se ve en la Figura 2.26 tiene siempre un valor 0. El bloque de datos
es tomado o almacenado en una memoria temporal que fue implementada dentro del FPGA;
la longitud de esta memoria temporal es la misma que la del bloque de datos.

IPN

114

ESIME

3.3 Control de la Tarjeta SD.

El paquete que se transfiere a la memoria SD tambien incluye los 16 bits de CRC que son
tomados del modulo generador e integrados al paquete. Estos deben ser generados de acuerdo
a lo expuesto en la secci
on 2.4.2.3. El codigo VHDL que genera estos 16 bits de protecci
on
de errores es:
process (i_clk, i_rst)
begin
if (i_rst = 1) then
shift_register <= (OTHERS => 0);
else
if (rising_edge(i_clk)) then
if (i_sync_reset = 1) then
shift_register <= (OTHERS => 0);
elsif (i_enable = 1) then
if (i_shift = 0) then
shift_register(0) <= i_datain XOR shift_register(15);
shift_register(4 downto 1) <= shift_register(3 downto 0);
shift_register(5) <= shift_register(4) XOR
i_datain XOR shift_register(15);
shift_register(11 downto 6) <= shift_register(10 downto 5);
shift_register(12) <= shift_register(11) XOR
i_datain XOR shift_register(15);
shift_register(15 downto 13) <= shift_register(14 downto 12);
else
shift_register(15 downto 1) <= shift_register(14 downto 0);
shift_register(0) <= 0;
end if;
end if;
end if;
end if;
end process;
Una vez que se ha integrado el paquete de datos, la maquina de estados cambia a un
estado en el cual se realiza la transmision del paquete; con ayuda de un contador de bits y
bytes pertenecientes al paquete. El bloque de 512 bytes de datos se encuentra en una memoria
temporal y mediante los contadores de bytes y bits, se extrae este bloque para ser transmitido.
if ((current_state = s_RECEIVING_DATA) or
(current_state = s_SEND_DATA)) then
if (not ((bit_counter = "000") and
(byte_counter = "111111111"))) then
if (bit_counter = "000") then
byte_counter <= byte_counter + 1;
bit_counter <= "111";
else
bit_counter <= bit_counter - 1;
end if;
end if;
end if;
.
.
.
addra => byte_counter & bit_counter,
douta => single_bit_out,
Despues de haber terminado de enviar los datos, se pasa a un estado de espera donde se

ESIME

115

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

aguarda el tiempo suficiente para que la tarjeta SD reciba y verifique los datos enviados. Esta
espera de tiempo se realiza mediante un contador binario. Si la se
nal de recepcion exitosa no
llega antes de que el contador de tiempo de espera llegue a su maximo se considera que ha
ocurrido un error en la transmisi
on. Terminada una operacion de escritura (exitosa o fallida)
el modulo regresa a su estado inicial de espera.
process(i_clk, i_rst, current_state, i_sd_clock_pulse_trigger)
begin
if (i_rst = 1) then
timeout_register <= (OTHERS => 0);
elsif (rising_edge(i_clk)) then
if ((current_state = s_SEND_STOP) or
(current_state = s_WAIT_REQUEST)) then
timeout_register <= (OTHERS => 0);
elsif (i_sd_clock_pulse_trigger = 1) then
if (((current_state = s_WAIT_DATA_START) or
(current_state = s_WAIT_BUSY)) and
(not (timeout_register = TIMEOUT))) then
timeout_register <= timeout_register + 1;
end if;
end if;
end if;
end process;
Se ejemplific
o un proceso de escritura de datos, el proceso de escritura es similar a este y
se puede tener una idea de el observando la Figura 3.11. El codigo completo del control del
proceso de escritura/lectura se tiene en el Apendice A.

3.3.3.

Resultados del Control Implementado.

En primera instancia en la Figura 3.12 se observa la placa fabricada, de acuerdo a lo


expuesto en la secci
on 3.3.1, para realizar las pruebas de control individuales sobre la tarjeta
SD. Esta placa de conexi
on para la tarjeta SD se une al puerto de expansion J1 de la SP3E.
Los diferentes m
odulos implementados en VHDL fueron probados en simulaciones individualmente aunque para poder probarse con la tarjeta SD es necesario probarlos en conjunto
y realizar pruebas de acceso a las localidades de memoria de la tarjeta SD y por tanto a los
datos en ella.
Debido a que el principal proceso que se realizara con la tarjeta SD es la lectura de datos,
se realizan las pruebas acceso a los datos almacenados en el primer sector de datos de usuario
(ver secci
on 2.4.4) la cadena Hola Datos de la tarjeta SD, mediante software en una PC
como se muestra en la Figura 3.13.

IPN

116

ESIME

3.3 Control de la Tarjeta SD.

Figura 3.12: Spartan 3E con placa fabricada para la conexion de la tarjeta SD.

Figura 3.13: Datos almacenados en la tarjeta SD.

ESIME

117

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Posteriormente al almacenamiento de datos en la tarjeta por medio de una PC, se pretende leer los datos en la tarjeta SD mediante el modulo de control generado en VHDL para
consecuentemente desplegar en la pantalla LCD de texto, que la tarjeta SP3E tiene integrada,
la cadena de texto que se guard
o con anterioridad. Aunque es una cadena de 30 caracteres y
la tarjeta SD tiene capacidad para una gran cantidad de informacion, se desea u
nicamente comprobar el acceso a los datos en la tarjeta SD mediante el software en VHDL
desarrollado.
El m
odulo creado en VHDL requiere de la direccion fsica de memoria para acceder a los
datos contenidos en la SD correctamente[8]. Para obtener la adecuada direccion de memoria se
pueden usar herramientas de software y as visualizar la direccion correcta o seguir el metodo
de calculo que el est
andar SD da en sus especificaciones [8]. Al igual que el argumento de un
comando, la direcci
on de localidad de memoria (fsica o logica) es una cadena de 32 bits.
Programando el FPGA se usa el controlador por VHDL desarrollado, con el se espera a
que se ejecute el proceso de inicializacion y la lectura de un bloque de datos. En el bloque de
datos que se obtiene de la tarjeta SD esta el mensaje que se desea desplegar. Al observar
en la pantalla del LCD de texto el texto Hola Datos de la tarjeta SD, se puede concluir
que el software en VHDL desarrollado funciona adecuadamente; estos resultados se
pueden ver tambien en la Figura 3.12.

IPN

118

ESIME

3.4 Control de la Memoria MT46V32M16.

3.4.
3.4.1.

Control de la Memoria MT46V32M16.


Interfaz Fsica.

La funci
on de la memoria DDR-SDRAM MT46V32M16 es almacenar temporalmente los
archivos extrados de la tarjeta SD, en este caso especficamente las imagenes de mapas
relacionadas a la ubicaci
on geogr
afica.
Para lograr introducir una cierta cantidad de datos en la memoria SDRAM es indispensable tener un medio de comunicacion y control con la misma. La memoria MT46V32M16 es
un dispositivo integrado desde f
abrica en la tarjeta Spartan 3E por tanto su interfaz fsica se
encuentra ya definida[10]. La Figura 3.14 muestra el diagrama de conexiones entre la tarjeta
SP3E y la memoria MT46V32M16; ademas en la Tabla 3.6 se detallan las conexiones entre
pines del FPGA y los respectivos de la DDR-SDRAM.
Tabla 3.6: Conexi
on entre pines del FPGA y memoria MT46V32M16
DDR SDRAM
MT46V32M16

Pin
FPGA

DDR SDRAM
MT46V32M16

Pin
FPGA

DDR SDRAM
MT46V32M16

Pin
FPGA

A[0]

T1

BA[0]

K5

DQ[2]

L3

A[1]

R3

BA[1]

K6

DQ[3]

L4

A[2]

R2

UDM

J1

DQ[4]

M3

A[3]

P1

LDM

J2

DQ[5]

M4

A[4]

F4

CK N

J4

DQ[6]

M5

A[5]

H4

CK P

J5

DQ[7]

M6

A[6]

H3

UDQS

G3

DQ[8]

E2

A[7]

H1

LDQS

L6

DQ[9]

E1

A[8]

H2

RAS

C1

DQ[10]

F1

A[9]

N4

CAS

C2

DQ[11]

F2

A[10]

T2

CS

K4

DQ[12]

G6

A[11]

N5

WE

D1

DQ[13]

G5

A[12]

P2

DQ[0]

L2

DQ[14]

H6

CKE

K3

DQ[1]

L1

DQ[15]

H5

ESIME

119

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.14: Interfaz fsica entre FPGA y memoria MT46V32M16.


Por ser parte de la tarjeta Spartan 3E, el HDL de control para la memoria MT46V32M16
es proporcionado por la empresa Xilinx. El software Core Generator, del grupo de programas
ISE Desing Suite (ver secci
on 2.6), tiene dentro de sus opciones la herramienta Memory
Interface Generator (MIG) que es usada para crear interfaces de control para memorias
de las diferentes tarjetas FPGA de Xilinx. La herramienta MIG genera archivos VHDL o
Verilog y los m
ultiples archivos necesarios para la sntesis, simulacion y otros procesos en el
desarrollo y programaci
on de aplicaciones en un FPGA.

3.4.2.

Software de control en VHDL.

De acuerdo al objetivo que se tenga al crear el controlador, mediante la herramienta


MIG, deben seleccionarse las opciones necesarias para obtener el controlador adecuado. El

IPN

120

ESIME

3.4 Control de la Memoria MT46V32M16.

controlador creado para la memoria que se usa en este proyecto y las opciones seleccionadas
con la herramienta MIG tiene las siguientes caractersticas:

Longitud de r
afaga de dos columnas.
Latencia CAS1
Tipo de r
afaga secuencial.
Auto actualizaci
on.
Enmascarado de datos.
Frecuencia de trabajo de 100 MHz.
Generado sin DCM.
Modulos generados en VHDL.

En la Figura 3.15, se observa un diagrama a bloques del controlador, en el que se ven todas
la lneas de comunicaci
on y su direccion de transmision con respecto al controlador. Se nota en
la parte superior izquierda, de la misma Figura, las se
nales de reloj que deben proporcionarse
al controlador para cumplir con sus funciones. Ademas se tienen las se
nales indispensables
de control como: envo de comandos, direccion de localidad de memoria, entrada y salida de
datos, etc.
Este m
odulo controlador VHDL, esta dividido en varios submodulos que permite un
analisis m
as especfico de las tareas a realizar y su consecuente ejecucion; estos son:

Controlador de Interfaz. Este submodulo acepta y decodifica los comandos, de escritura,


lectura o inicializaci
on que se desea enviar a la memoria. Este modulo controla el proceso de
incializaci
on cuando se recibe el comando para esta tarea.

Tiempo de espera, en ciclos de reloj, entre el registro de comando de lectura y la disponibilidad de los

datos en los pines de salida.

ESIME

121

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.15: Diagrama del controlador de la memoria DDR-SDRAM.


Enrutamiento de Datos. Este modulo se encarga de la transferencia de datos hacia y
desde la memoria. Las funciones principales de este son: almacenar y transferir los datos a los
bloques de E/S adecuados. Dentro de este submodulo se encuentran los modulos Lectura de
Datos, Control de Lectura de Datos y Escritura de Datos que ejecutan y generan las tareas
y se
nales necesarias para la lectura y escritura de datos, respectivamente.

Control de Sincronizaci
on.

Este modulo genera las se


nales de reloj y de reinicio para

los otros m
odulos que componen al controlador de la memoria DDR SDRAM. Genera y/o
maneja las se
nales de reloj ya sean simples o diferenciales mediante los buffers especializados
en el FPGA. Usualmente se usan dos se
nales de reloj: la que se definio para el funcionamiento
principal y esta misma se
nal de frecuencia pero desplazada 90 grados en su fase (CLK0 y
CLK90). Adem
as se generan, en este modulo, diferentes se
nales de reinicio.

Bloques de Entrada y Salida.

Este modulo contiene el codigo VHDL que maneja los

bloques de entrada y salida del FPGA que seran usados para implementar los puertos, pines
o se
nales que interconectaran a la memoria DDR SDRAM y el FPGA.
De forma similar a otros dispositivos de memoria, este necesita del envio de comandos
para operar, adem
as del cumplimiento de un proceso de inicializacion que se desarrolla de la
siguiente manera.

IPN

122

ESIME

3.4 Control de la Memoria MT46V32M16.

3.4.2.1.

Inicializaci
on de la DDR SRAM.

Antes de usar los comandos de lectura o escritura, el controlador debe inicializar la memoria DDR SDRAM usando el comando especifico para esto. Solamente se puede enviar o usar el
comando de inicializaci
on despues de que todas las se
nales de reinicio han sido desactivadas.
El controlador se encuentra en estado de reinicio durante 200s despues de haber sido energizado. El controlador toma en cuenta la frecuencia maxima a la que puede funcionar para
obtener el valor del conteo m
aximo de espera, por tanto a frecuencias inferiores, el tiempo
que el controlador permanece en estado de reinicio sera mayor. La memoria DDR SDRAM
requiere este retraso de 200s para comprobar que el sistema ha sido energizado y los voltajes de referencia son estables. Cuando se recibe el comando de inicializacion, el controlador
inicia este proceso con la memoria DDR SDRAM. Una vez que el proceso termina el controlador advierte de esto mediante la se
nal Init Done(Inicializacion Terminada). La Figura 3.16
muestra las se
nales que toman parte en el proceso de incializacion y su sicronizacion con las
se
nales de reloj y reinicio. Despues que el proceso ha terminado se puede enviar el siguiente
comando en cualquier momento.

Figura 3.16: Proceso de Inicializacion de la memoria DDR SDRAM.

3.4.2.2.

Escritura.

La operaci
on de escritura comienza enviando el comando para esta operacion al controlador de la memoria, este comando se enva en el momento que inicia el ciclo bajo de la
frecuencia de reloj principal(CLK0). Al enviar un comando de lectura o escritura, se debe
proporcionar la primera direcci
on de memoria simultaneamente con el comando, posterior-

ESIME

123

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

mente se espera la se
nal de confirmacion de recepcion de comando; el tiempo en que la se
nal
de reconocimiento se produce varia, dependiendo del estado del controlador.
La se
nal de reconocimiento se activa en el siguiente ciclo de reloj despues de enviar
el comando, si el controlador no esta ocupado en otros procesos. En caso contrario, si el
controlador se encuentra ocupado ejecutando una instruccion de autoactualizacion, la se
nal
de reconocimiento se activar
a al terminar el periodo de autoactualizacion del controlador.
La primera direcci
on de memoria (fila + columna + banco) debe mantenerse activa durante tres ciclos de reloj despues de la activacion de la se
nal de reconocimiento. Las siguientes
direcciones de memoria deber
an ser proporcionadas cada ciclo de reloj.
La transferencia de datos se sincroniza con la se
nal de reloj defasada 90 (CLK90). La
primera palabra de datos debe enviarse en el primer ciclo alto de esta se
nal de reloj. El ancho
de palabra que se enva al controlador es de 16 bits, este es el doble del ancho de palabra de
la interfaz fsica con la memoria DDR SDRAM, debido a que el controlador divide la palabra
de datos enviada a el en dos y las enva a la memoria en ambos flancos de la se
nal de reloj
(DDR).
El final de una tarea de escritura se marca con la se
nal Burst Done (Rafaga Terminada)
inmediatamente despues de la u
ltima direccion de memoria donde se desea escribir. Dependiendo de la longitud de r
afaga con la que se trabaja, la duracion de la se
nal Burst Done
varia de 1 a 4 ciclos de reloj. La consecuente accion de la recepcion de esta se
nal es que el
controlador desactiva la se
nal de reconocimiento cuando ha cargado los datos exitosamente
en la memoria, adem
as se debe dejar de enviar el comando despues de activarse la se
nal de
rafaga terminada.
El siguiente comando debe ser enviado hasta asegurarse que la se
nal de reconocimiento
esta desactivada. Las operaciones consecutivas de escritura, cada una mediante un
comando, solo son soportadas cuando los datos se encuentran en la misma fila y
banco. En la Figura 3.17 se demuestra como debe realizarse o sincronizarse una operaci
on
de escritura. La Figura muestra la escritura de datos para un controlador con longitud de
rafaga cuatro, mientras se escriben datos en dos localidades de memoria.

IPN

124

ESIME

3.4 Control de la Memoria MT46V32M16.

Figura 3.17: Proceso de escritura en la DDR-SDRAM.

3.4.2.3.

Lectura.

Una lectura de los datos de la memoria se inicia enviando el comando de lectura al


controlador de la memoria DDR SDRAM. Conjuntamente con el comando de lectura se
debe proporcionar la primera direccion de memoria a la que se desea acceder; estas se
nales
se envan en el flanco de bajada del reloj CLK0. Se debe mantener el valor de la primera
direccion durante tres ciclos de reloj despues de que la se
nal de reconocimiento este activa,
las subsecuentes direcciones deben ser proporcionadas cada ciclo de reloj.
En respuesta al comando recibido el controlador activa la se
nal de reconocimiento y se
comporta de igual manera al proceso de escritura.
Los datos ledos se presentan en el puerto user output data y seran validos cuando las
se
nal data valid este activa; la salida de datos esta sincronizada con el reloj CLK90. Un
ejemplo de este proceso se observa en la Figura 3.18.
Para terminar una operaci
on de lectura se debe activar la se
nal burst done durante un
ciclo de reloj de la se
nal CLK0. Esta se
nal debe activarse justo despues de que la u
ltima
direccion de datos sea proporcionada. Al estar activa la se
nal de terminacion de lectura el
comando correspondiente tambien debe ser desactivado.
Cualquier otro comando de lectura que se desee enviar debera ser cuando la se
nal de
reconocimiento de comando este desactivada. Los procesos de lectura consecutivos,
para este controlador, solo est
an permitidos cuando los datos se encuentran en

ESIME

125

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

Figura 3.18: Proceso de lectura para la DDR-SDRAM.


la misma fila o banco.

3.4.2.4.

Auto Actualizaci
on.

La naturaleza de las memoria SDRAM requiere que estas sean actualizadas periodicamente para no perder el contenido de las celdas de memoria. Para actualizar una memoria
de tipo SDRAM se debe acceder periodicamente a la mayor cantidad de filas, en la memoria,
que sea posible, leyendo y reescribiendo los datos en las mismas localidades de memoria. El
proceso de actualizaci
on (lectura y reescritura de datos)se completa internamente.
Abriendo y cerrando la mayor cantidad de celdas, en las filas y bancos de la memoria
se logra no perder el contenido de estas, sin embargo para simplificar el controlador de
la memoria los dispositivos de memoria proporcionan un comando de Auto Actualizaci
on,
que desarrolla esta operaci
on en una fila en cada banco simultaneamente. El dispositivo
SDRAM adem
as contiene un contador interno que itera para cubrir o actualizar todas las
filas posibles. El controlador debe simplemente enviar un n
umero suficiente de comandos de
Autoactualizaci
on (uno por fila de memoria) cada cierto intervalo. El periodo entre cada
comando de autoactualizaci
on esta definido para cada dispositivo en particular y mientras
este proceso se lleva a cabo ning
un otro comando puede ser enviado a la memoria SDRAM.
Este controlador realiza una actualizacion de la memoria en intervalos definidos por la

IPN

126

ESIME

3.4 Control de la Memoria MT46V32M16.

frecuencia de operaci
on. Por ejemplo para una frecuencia de 166 MHz, la peticion de un
proceso de actualizaci
on se activa cada 7.8 S; cuando esto sucede se debe terminar cualquier
operacion en proceso en los pr
oximos 20 ciclos de reloj.
Cuando la memoria ha terminado con el proceso de actualizacion, se activa la se
nal ar done
del controlador. En promedio el proceso de autoactualizacion se toma 40 ciclos de reloj, por
tanto este periodo varia con la frecuencia de reloj que se use con el controlador.
Es primordial tener en cuenta el proceso de autoacutalizacion, ya que interfiere en algunos
casos con la escritura o lectura de datos y debe esperarse a que este proceso se complete para
seguir con sus operaciones de datos con la memoria.
Al obtener el controlador de la memoria DDR SDRAM a traves de la herramienta MIG,
de Xilinx, es certero tener el control de la misma, usando el dise
no obtenido de la manera
adecuada. Conocer como funciona este controlador, proporciona el medio ideal para darle la
funcion deseada al dispositivo de memoria.

3.4.3.

Resultados del Control Implementado.

La prueba para comprobar la comunicacion con la memoria DDR SDRAM se ejecuta de


igual forma que en manual de funcionamiento del controlador de la misma [12]. Obteniendose
los mismos resultados que en [12].

ESIME

127

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

3.5.

Integraci
on de Elementos Para Implementar el
SILOG.

Las secciones anteriores de este captulo han desarrollado y descrito como se elaboraron
los controladores en c
odigo VHDL que permitiran el manejo de los dispositivos constituyentes
del prototipo de SILOG propuesto, sin embargo estos a
un funcionan independientemente y se
necesita de un medio que los haga trabajar en conjunto para obtener los resultados buscados.
Entrelazar estos m
odulos es una tarea mas compleja que solo relacionar las entradas y
salidas correspondientes, adem
as de esto es indispensable tener el conocimiento adecuado
del funcionamiento de las partes independientes y la forma en que proporcionan y requieren
informaci
on para as realizar las transferencias, transiciones, esperas y adecuaciones necesarias
para un funcionamiento
optimo.
La pantalla TFT-LCD es el destino final de la mayora de la informacion que se utiliza,
debido que esta pantalla es el medio principal de visualizacion en el sistema; existen dos
fuentes de datos que deben terminar desplegandose en la pantalla. Por un lado la informaci
on
de coordenadas de ubicaci
on terrestre la cual es texto que proviene del modulo RS232-GPS
y por el otro lado la segunda fuente de datos proviene originalmente de la memoria SD sin
embargo estos datos son acarreados desde esta memoria hasta la DDR SDRAM; a traves
del control del FPGA. La Figura 3.19 muestra un diagrama a bloques de como todos los
elementos independientes se relacionan y la direccion del flujo de datos en el sistema.
El proceso de integraci
on, direccion y control de las diferentes tareas de los modulos
independientes se realiza en una secuencia de eventos necesarios para recolectar la informaci
on
necesaria y su correspondiente exposicion.
Los dos procesos principales de obtencion de informacion y su desplegado se llevan a cabo
de la siguiente forma.

3.5.1.

Obtenci
on y Desplegado de Coordenada Geogr
afica.

Con el m
odulo VHDL desarrollado en la seccion 3.2.2 se convierten los datos seriales del
modulo receptor RGM-3000 en caracteres ASCII individuales pertenecientes a las cadenas
de informaci
on que el mismo receptor provee. Se eval
ua cada caracter que se obtiene y se

IPN

128

ESIME

3.5 Integraci
on de Elementos Para Implementar el SILOG.

Figura 3.19: Conexiones y Flujo de Informacion del Sistema Completo.


compara con los valores que corresponden a los caracteres que componen al identificador de
cadena que en particular se este buscando; en este caso se busca la cadena deInformaci
on
Mnima Recomendada de Navegaci
on o RMC (ver seccion 2.1).
La comparaci
on de los caracteres de identificador de esta cadena se realiza mediante
una maquina de estados. Cuando coinciden los valores iniciales de la cadena, los siguientes
elementos recibidos son almacenados en un registro. El codigo VHDL que realiza este proceso
es el siguiente:
NEXT_STATE_DECODE: process (state, data)
begin
case (state) is
when st2_search_24 =>
if data = x"24" then
next_state <= st3_search_G;
end if;
when st3_search_G =>
if data = x"47" then
next_state <= st4_search_P;
else
next_state <= st2_search_24;

ESIME

129

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

end if;
when st4_search_P =>
if data = x"50" then
next_state <= st5_search_R;
else
next_state <= st2_search_24;
end if;
when st5_search_R =>
if data = x"52" then
next_state <= st6_search_M;
else
next_state <= st2_search_24;
end if;
when st6_search_M =>
if data = x"4D" then
next_state <= st9_ram;
else
next_state <= st2_search_24;
end if;
when st7_search_C =>
if data = x"43" then
next_state <= st9_ram;
else
next_state <= st2_search_24;
end if;
when st8_search_A =>
if data = x"41" then
next_state <= st9_ram;
else
next_state <= st8_search_A;
end if;
when st9_ram =>
if data = x"0D" or data = x"0A" then
next_state <=st10_bypass;
else
next_state <= st9_ram;
end if;
when st10_bypass =>
next_state <=st2_search_24;
end case;
end process;
Ram_Data:process (data_valid, ram_en)
begin
if rising_edge(data_valid) then
if ram_en = 1 then
char_rs232(cntr)<= data;
end if;
end if;
end process;
Despues de almacenar la cadena requerida y comprobada su validez mediante el tercer
parametro de la misma (ver Tabla 2.1.4) es necesario dar a conocer esta informacion mediante
la pantalla TFT-LCD.
Para desplegar en pantalla caracteres alfanumericos, se utilizan dos colores contrastantes
para tener una visualizaci
on adecuada de las palabras, com
unmente se utilizan el negro y
blanco para tal prop
osito, es decir un color para el texto y otro para el fondo.

IPN

130

ESIME

3.5 Integraci
on de Elementos Para Implementar el SILOG.

Para conocer la cantidad de pixeles que componen a un caracter y el color de cada


pixel, y as mostrar correctamente texto en pantalla, se usan representaciones binarias de los
caracteres desplegables, un ejemplo de estas representaciones binarias se ve en la Figura 3.20.

Figura 3.20: Representacion Binaria de Caracteres


Como se ve en la Figura 3.20, las representaciones binarias son una serie de filas y columnas
de bits, que determinan el cual de los dos colores se usa. Cada caracter esta compuesto por
ocho columnas y 16 filas y para almacenar 128 caracteres com
unmente usados es necesario
implementar una memoria ROM.
Generada a traves de c
odigo VHDL la memoria ROM utilizada, es una matriz de bits de
2048 filas por 8 columnas, dentro de la memoria donde se tienen almacenados un total de
128 representaciones binarias de caracteres de texto; en el mismo orden que el codigo ASCII.
El metodo de acceso a estos datos se realiza mediante los dos puertos de la memoria ROM,
uno de ellos es de entrada y se trata de un vector de 11 bits que representa la direccion de la
localidad de memoria a la que se desea acceder, mientras que el otro puerto, de salida, tiene
una longitud de 8 bits por donde se obtienen los datos correspondientes a una fila de bits de
un caracter desplegable.
entity rom is
port (ADDR : in std_logic_vector(10 downto 0);
DATA : out std_logic_vector(7 downto 0));
end rom;
architecture syn of rom is
type rom_type is array (127 downto 0) of std_logic_vector (7 downto 0);
signal ROM : rom_type:= (X"20", X"30", X"81", X"40", X"81", X"23",
X"30", X"62", X"31", X"3B", X"83", X"40",
X"21", X"50", X"40", X"25", X"34", X"24",
X"42", X"83", X"82", X"50", X"81", X"62",

ESIME

131

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

X"43", X"24", X"31", X"12", X"22", X"21",


X"31", X"12", X"22", X"41", X"32", X"32",
X"90", X"02", X"12", X"42", X"90", X"81",
X"23", X"33", X"43", X"31", X"44", X"31",
.........................................);
begin
process (ADDR)
begin
DATA <= ROM(conv_integer(ADDR));
end process;
end;
Con la cadena de datos ASCII de informacion GPS y con la memoria ROM que almacena
los caracteres desplegables, es posible convertir los valores ASCII obtenidos a valores RGB.
De los 11 bits que componen la direccion de entrada a la memoria ROM, los 7 bits superiores
determinan la posici
on del car
acter en el arreglo total y coincide con el valor de un caracter
en codigo ASCII. Los 4 bits inferiores son la posicion de fila en cada caracter; de las 16
posibles. Se toman los valores binarios obtenidos de la ROM y de acuerdo a su valor (1 o
0) se asigna el valor correspondiente RGB de 24 bits que represente el color blanco o negro,
respectivamente. Todo esto se logra mediante el codigo VHDL:
process(i_CLK_9MHz, i_RST, VDE)
begin
if i_RST = 1 then
bitcnt <= (others => 1);
elsif Rising_Edge(i_CLK_9MHz) then
if VDE = 1 then
bitcnt <= bitcnt - 1;
else
bitcnt <= bitcnt;
end if;
end if;
end process;
process(bitcnt, i_RST, VDE)
begin
if i_RST = 1 then
charcnt <= 0;
elsif Rising_Edge(bitcnt(2)) then
if VDE = 1 then
charcnt <= charcnt + 1;
else
charcnt <= charcnt;
end if;
end if;
end process;
process(i_RST, charcnt)
begin
if i_RST = 1 then
ascii <= (others => 0);
else
ascii <= char_ram(charcnt);

IPN

132

ESIME

3.5 Integraci
on de Elementos Para Implementar el SILOG.

end if;
end process;
process(VDE, i_RST, i_VS_GPS)
begin
if i_RST = 1 or VSync = 0 then
linecnt <= (others => 0);
elsif falling_Edge(VDE) then
linecnt <= linecnt + 1;
else
linecnt <= linecnt;
end if;
end process;
addra

<=ascii(6 downto 0) & linecnt;

Instance : rom
PORT MAP (
ADDR
=>
DATA
=>
);

addra,
douta

Se usan las se
nales propias de la sincronizacion de la pantalla TFT-LCD, para ubicar el texto
en alguna parte especfica de la misma y realizar el barrido vertical por las 16 lneas de los
caracteres. Se comienza con la lnea superior de cada caracter, continuando hacia abajo con
las 16 lneas que componen a los caracteres y sus respectivos pixeles individuales, para lograr
mostrar por completo una lnea de texto.
A partir de la cadena de caracteres ASCII obtenida del modulo RGM-3000 y con la
combinaci
on de la memoria ROM de representaciones binarias de caracteres ASCII, se generan u
nicamente los valores RGB que se necesitan para desplegar en pantalla el texto de la
informaci
on GPS obtenida; con el siguiente codigo VHDL:
process(i_CLK_9MHz, i_RST, bitcnt, douta, VSync)
begin
if i_RST = 1 or VSync = 0 then
txt_R <= (others => 0);
txt_G <= (others => 0);
txt_B <= (others => 0);
elsif rising_Edge(i_CLK_9MHz) then
if douta(conv_integer(bitcnt)) = 1 then
txt_R <= (others => 1);
txt_G <= (others => 1);
txt_B <= (others => 1);
else
txt_R <= (others => 0);
txt_G <= (others => 0);
txt_B <= (others => 0);
end if;
end if;
end process;

ESIME

133

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

3.5.2.

Obtenci
on, Decodificaci
on y Desplegado de Mapas Digitales.

La tarjeta SD usa un sistema de archivos FAT (ver seccion 2.4.4), este sistema de archivos
se utiliza para realizar b
usquedas de archivos contenidos en una memoria, en lugar de buscar
un archivo durante todo el volumen de una memoria en la tabla de asignacion de archivos se
tiene una lista de los archivos contenidos y la direccion logica del principio de cada archivo,
lo que agiliza en gran medida la ubicacion de los mismos.
Usualmente la b
usqueda de archivos mediante la tabla de asignacion de archivos se realiza
en sistemas mas complejos como: sistemas operativos de computadoras personales o dispositivos moviles; por tanto usar este metodo para la localizacion de los archivos de imagen en
la tarjeta SD implicara crear un control especializado para utilizar la tabla de asignacion de
archivos. Sin embargo esta etapa no esta considerada en el dise
no original del sistema por lo
que la localizaci
on de los archivos de imagen se realizo de diferente forma.
Para ubicar los diferentes archivos de imagen en formato BMP se utilizo una herramienta
de software para visualizar la direccion en que se encontraba el inicio de cada archivo. La
direccion obtenida mediante software corresponde a la direccion logica de sectores del area
de usuario de la tarjeta SD y esta no es la misma que la direccion fsica necesaria para ser
enviada a traves de un comando de lectura de datos del protocolo SD Bus. Las especificaciones
del formato de datos de la tarjeta SD proporcionan una gua, incluso una formula, para
determinar el inicio del
area de datos de usuario y as conocer o recalcular la direccion fsica
en la que se encuentra cada archivo [8].
Con las direcciones fsicas de localidad de memoria en la tarjeta SD de los archivos se
realizo una peque
na base de datos que relaciona el nombre del archivo y la direccion fsica
necesaria para acceder a los datos correspondientes. En codigo VHDL estas direcciones se
transforman en constantes de 32 bits.
constant
constant
constant
constant
constant
constant
constant
constant
constant

IPN

IMAGE_A
IMAGE_B
IMAGE_C
IMAGE_D
IMAGE_E
IMAGE_F
IMAGE_G
IMAGE_H
IMAGE_I

:
:
:
:
:
:
:
:
:

STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31
STD_LOGIC_VECTOR(31

134

DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO
DOWNTO

0)
0)
0)
0)
0)
0)
0)
0)
0)

:=
:=
:=
:=
:=
:=
:=
:=
:=

x"00050200";
x"000B0200";
x"00110200";
x"00170200";
x"001D0200";
x"00230200";
x"00290200";
x"002F0200";
x"00350200";

ESIME

3.5 Integraci
on de Elementos Para Implementar el SILOG.

Para transportar una imagen completa desde la tarjeta SD a la memoria DDR SDRAM,
se efect
uan m
ultiples operaciones de lectura de bloques de 512 Bytes de la tarjeta SD. Se
inicia obteniendo el primer bloque de un archivo de imagen mediante una correspondiente
direccion predeterminada. Esta direccion se enva en el argumento de un comando de lectura
a la tarjeta SD, mientras la tarjeta se encuentre en modo de transferencia de datos, con esto
se ejecuta la transferencia del primer bloque de datos de un archivo desde la memoria SD a
un buffer temporal en el FPGA.
Con el primer bloque de datos en el FPGA se realiza un analisis de su contenido. La
primera comprobaci
on que se realiza se trata de la verificacion de los primeros dos bytes del
bloque, estos deben corresponder a los caracteres ASCII B y M, que aseguran que se tiene
el primer bloque de un archivo de imagen en formato de mapa de bits.
if SD_buffer_address = x"00" then
if i_SD_bffr_data = x"4D42" then ----BM
Header_BMP(CONV_INTEGER(SD_buffer_address)) <= i_SD_bffr_data;
end if;
end if;
Asegurando que se tiene el bloque inicial de un archivo BMP, se almacenan en un registro
los campos del tama
no total de archivo en bytes y tambien los bytes que determinar el valor
de bytes que se deben recorrer desde el principio del archivo para encontrar datos de pixeles.
El registro del tama
no total de archivo se usa para controlar la cantidad de bloques que
se leeran de la tarjeta SD para obtener el contenido total de un solo archivo de imagen. El
segundo valor almacenado, se usa para conocer la localizacion del inicio de los datos de pixeles
y desde ah comenzar la transferencia de datos u
tiles hacia la DDR SDRAM.
file_size_inbytes <= Header_BMP(3)&Header_BMP(2);
off_bytes
<= Header_BMP(7)&Header_BMP(6);
Se inicia la transferencia a la memoria DDR SDRAM mediante el controlador de la misma
y el correspondiente comando de escritura. Cuando el buffer temporal de 512 bytes se ha
vaciado se llena con un nuevo bloque de datos proveniente de la memoria SD y se realiza la
transferencia de datos hasta terminar con la transferencia del archivo de imagen completo a
la memoria DDR SDRAM.
o_RAM_input_data

<= i_SD_bffr_data;

when st10_fill_buf =>


if SD_buffer_address = x"FF" then

ESIME

135

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

next_state <= st11_up_line;


end if;
when st11_up_line =>
next_state <= st12_check_end_file;
when st12_check_end_file =>
if ((file_size < file_size_inbytes) and (file_size > x"00000000")) then
next_state <= st6_new_ddrrs_sd ;
else
next_state <= st13_store_lst_ddrss;
end if;
Con la imagen en la DDR SDRAM la posterior actividad es recuperar los datos y desplegarla en pantalla junto con las coordenadas GPS obtenidas del dispositivo RGM-3000.
Antes de recuperar los datos de la memoria hay que recordar que los datos de pixeles en
un archivo BMP est
an ordenados de izquierda a derecha en cada fila de pixeles y las filas
estan ordenadas del fondo hacia arriba, es decir, las filas del fondo de la imagen aparecen
primero en el archivo; adem
as cada pixel esta en el orden BGR (ver seccion 2.5.1).
Para recuperar los datos de manera adecuada de la memoria DDR SDRAM se debe
considerar de entre todos los datos que se almacenaron, Donde se ubica el pixel inicial de
cada fila y de la imagen?. El proceso para determinar la ubicacion de esta primera lnea y
sus pixeles correspondientes se realiza mediante un analisis matematico para encontrar la
ubicacion de memoria adecuada. El analisis se transforma en el siguiente codigo VHDL.
DATA_EXCCES_PROC:process (i_CLK_10090, i_RST_N, state, file_size)
begin
if i_RST_N = 0 then
data_excces <=(OTHERS =>0);
elsif rising_edge(i_CLK_10090) then
if state = st0_clk_ready then
data_excces <=(OTHERS =>0);
elsif state = st13_store_lst_ddrss then
data_excces <= x"FFFFFFFE" - file_size;
else
data_excces <= data_excces;
end if;
end if;
end process;
LST_DDRSS_RAM:process (i_CLK_10090, i_RST_N, state, RAM_addr)
begin
if i_RST_N = 0 then
last_ram_ddrss <=(OTHERS =>0);
elsif rising_edge(i_CLK_10090) then
if state = st0_clk_ready then
last_ram_ddrss <=(OTHERS =>0);
elsif state = st13_store_lst_ddrss then
last_ram_ddrss <= RAM_addr;
else
last_ram_ddrss <= last_ram_ddrss;
end if;
end if;
end process;

IPN

136

ESIME

3.5 Integraci
on de Elementos Para Implementar el SILOG.

BMP_LINE_PROC:process (i_CLK_10090, i_RST_N, state, last_ram_ddrss, data_excces)


begin
if i_RST_N = 0 then
line_ddrss <=(OTHERS =>0);
elsif rising_edge(i_CLK_10090) then
if state = st0_clk_ready then
line_ddrss <=(OTHERS =>0);
elsif state = st14_lst_pxl then
line_ddrss <= last_ram_ddrss (b"00000000000000" & data_excces(8 downto 0) & b"00");
elsif state = st16_calculate_line then
line_ddrss <= line_ddrss - (b"000" & x"005a0" & b"00");
else
line_ddrss <= line_ddrss;
end if;
end if;
end process;
Se almacena la u
ltima direcci
on en que se guardaron datos en la DDR SDRAM, a esta le
resta la cantidad de bytes pertenecientes a una fila de pixeles. Se toman en cuenta adem
as
los bytes que no son informaci
on de colores y son datos del formato de archivo.
Al tener la localidad de memoria adecuada se procede a leer los datos en grupos de 6 bytes
los cuales convertir
an en dos pixeles. Es necesario recordar que la memoria SDRAM trabaja
con una frecuencia de 100MHz y la pantalla TFT-LCD con una frecuencia de 9MHz, por
tanto el tiempo necesario para desplegar uno solo de los pixeles es suficiente para reabastecer
continuamente una peque
na memoria de 2 de ellos. En otras palabras, dado que la memoria
SDRAM esta configurada para leer 2 bytes cada rafaga de lectura se acceden a 3 localidades
de memoria para tener, en el FPGA, un peque
no buffer de 6 bytes o lo que es lo mismo
2 pixeles; este proceso se lleva a cabo continuamente mientras se despliega pixel a pixel la
imagen en pantalla.
TWO_PIXEL_DATA:process (i_CLK_10090, i_RST_N, state, rd_pixel_cnt1, select_buff,
i_RAM_data_valid, i_RAM_output_data)
begin
if (i_RST_N = 0 or state = st0_clk_ready) then
PixPix <=(OTHERS =>(OTHERS => (OTHERS =>0)));
elsif falling_edge(i_CLK_10090) then
if i_RAM_data_valid = 1 then
PixPix(CONV_INTEGER(select_buff))(rd_pixel_cnt1)<= i_RAM_output_data;
else
PixPix <= PixPix;
end if;
end if;
end process;
PIXEL_READ_OUT: process (pixel_read, PixPix)
begin
case (pixel_read) is
when "000" =>

ESIME

137

ICE

Desarrollo del Sistema de Localizaci


on Geogr
afica.

RED
<= PixPix(0)(1)(7 downto 0);
GREEN <= PixPix(0)(0)(15 downto 8);
BLUE <= PixPix(0)(0)(7 downto 0);
when "001" =>
RED
<= PixPix(0)(2)(15 downto 8);
GREEN <= PixPix(0)(2)(7 downto 0);
BLUE <= PixPix(0)(1)(15 downto 8);
when "010" =>
RED
<= PixPix(0)(4)(7 downto 0);
GREEN <= PixPix(0)(3)(15 downto 8);
BLUE <= PixPix(0)(3)(7 downto 0);
when "011" =>
RED
<= PixPix(0)(5)(15 downto 8);
GREEN <= PixPix(0)(5)(7 downto 0);
BLUE <= PixPix(0)(4)(15 downto 8);
when "100" =>
RED
<= PixPix(1)(1)(7 downto 0);
GREEN <= PixPix(1)(0)(15 downto 8);
BLUE <= PixPix(1)(0)(7 downto 0);
when "101" =>
RED
<= PixPix(1)(2)(15 downto 8);
GREEN <= PixPix(1)(2)(7 downto 0);
BLUE <= PixPix(1)(1)(15 downto 8);
when "110" =>
RED
<= PixPix(1)(4)(7 downto 0);
GREEN <= PixPix(1)(3)(15 downto 8);
BLUE <= PixPix(1)(3)(7 downto 0);
when "111" =>
RED
<= PixPix(1)(5)(15 downto 8);
GREEN <= PixPix(1)(5)(7 downto 0);
BLUE <= PixPix(1)(4)(15 downto 8);
when others =>
RED
<= x"00";
GREEN <= x"00";
BLUE <= x"00";
end case;
end process;

Asi es como se muestran en pantalla los pixeles correspondientes a la imagen de un mapa


digital. En el momento en que el contador de lneas de horizontales de pixeles llega a 254 se
detiene la lectura de datos de la imagen y se comienzan a mostrar los valores de coordenadas
geograficas que se obtuvieron mediante el dispositivo GPS RMG-3000.
Aunque la relaci
on de im
agenes de mapas digitales y coordenadas geograficas deben relacionarse directa y autom
aticamente, en esta ocasion al ser una primera version del prototipo
propuesto, se plantea una navegacion manual a traves de las imagenes de mapas digitales
mostradas.
Para desplazarse en las im
agenes de mapas digitales se utilizan los botones de presion de la
tarjeta Spartan 3E, revisados en la seccion 2.2.3.1. Estos son cuatro botones que proporcionan
las cuatro direcciones b
asicas para desplazarse, izquierda, derecha, arriba y abajo.

IPN

138

ESIME

3.5 Integraci
on de Elementos Para Implementar el SILOG.

Estos botones cambian la imagen mostrada, cada accion de un boton tiene una relaci
on
directa con la direcci
on de memoria de la tarjeta SD en donde se ubica la imagen de mapa
digital requerido. Esto hace que sea necesario desarrollar un modulo VHDL que controle esta
relacion.
NEXT_IMAGE_DECODE: process (i_CLK, i_RST, active_image, trigger)
begin
if (i_RST = 1) then
next_active_image <= IMAGE_E;
elsif (rising_edge(i_CLK)) then
case (active_image) is
when IMAGE_A =>
if trigger = "0001" then
next_active_image <= IMAGE_G;
elsif trigger = "0010" then
next_active_image <= IMAGE_B;
elsif trigger = "0100" then
next_active_image <= IMAGE_D;
elsif trigger = "1000" then
next_active_image <= IMAGE_C;
end if;
when IMAGE_B =>
if trigger = "0001" then
next_active_image <= IMAGE_H;
elsif trigger = "0010" then
next_active_image <= IMAGE_C;
elsif trigger = "0100" then
next_active_image <= IMAGE_E;
elsif trigger = "1000" then
next_active_image <= IMAGE_A;
end if;
.
.
.
when IMAGE_I =>
if trigger = "0001" then
next_active_image <= IMAGE_F;
elsif trigger = "0010" then
next_active_image <= IMAGE_G;
elsif trigger = "0100" then
next_active_image <= IMAGE_C;
elsif trigger = "1000" then
next_active_image <= IMAGE_H;
end if;
when others =>
next_active_image <= IMAGE_E;
end case;
end if;
end process;

ESIME

139

ICE

Captulo 4.

Implementaci
on Final y Resultados del
SILOG.

De acuerdo a la secci
on 2.6.1 el captulo 3 desarrollo la etapa de elaboracion de una aplicacion mediante un HLD, se describi
o la aplicacion o sistema en el editor de HDL del ambiente
ISE Design Suite; completamente en lenguaje VHDL. Este captulo expone la metodologa
para poner en funcionamiento los procesos desarrollados en codigo VHDL en el FPGA de la
tarjeta Spartan 3E. Tambien se describen los resultados obtenidos y observados al programar
el FPGA.

4.1.

Implementaci
on del SILOG.

Siguiendo el proceso de la seccion 2.6.1, concluida la etapa de elaboracion consecuentemente se debe pasar a la etapa de implementacion. Para esto se hace uso mayoritariamente
de las herramientas de software de Xilinx y principalmente del navegador de proyecto del
ambiente ISE Desing Suite. La Figura 4.1 muestra parte de la ventana del navegador de
proyecto de Xilinx con los archivos fuente del prototipo de SOLOG.

141

Implementaci
on Final y Resultados del SILOG.

Figura 4.1: Ventana del Navegador de Proyecto con archivos Fuente.

Se observa en el panel izquierdo, la jerarqua de archivos fuente. Se tiene como archivo


principal al nombrado Top SILOG y en el se encuentran instanciados los archivos de control
en VHDL descritos en el captulo 3.

IPN

142

ESIME

4.1 Implementaci
on del SILOG.

Se pueden visualizar, en orden descendente, los controladores: de la interfaz RS232 para el control del m
odulo GPS, de la pantalla TFT-LCD, de la tarjeta SD, de la memoria
DDR SDRAM como n
ucleo proporcionado por Xilinx y la logica adicional de funcionamiento
como: el generador de reloj, el control de botones de navegacion y la maquina de estados de
control general.
En el mismo panel se observa el archivo Top.ucf que contiene especificaciones de sincronizacion respectivas al controlador de la memoria DDR SDRAM. En el tambien se encuentra
la asignaci
on de pines del FPGA, es decir, las conexiones del FPGA con los dispositivos
externos. Estas mismas especificaciones incluyen el estandar de voltaje usado en cada lnea
de conexi
on seg
un fue necesario. El texto completo del archivo TOP.ucf se muestra en el
Apendice A
Dentro de la jerarqua, mostrada en la Figura 4.1, se observan los controladores de dispositivos externos junto a los subrutinas de control necesarias en cada uno de ellos. Dentro
de estas subrutinas se encuentran bloques de memoria que son usados como buffer en el caso
del modulo SD Card Memory Block y como memoria de datos de caracteres ASCII para el
caso del archivo fuente ROM memory.
Todos estos archivos en conjunto deben pasar por el proceso de sntesis. En la parte
izquierda baja del panel de dise
no (Figura 4.1) se observan los tres procesos principales que
deben ser ejecutados para implementar la aplicacion. Basta con realizar un doble click en el
icono de cada proceso para ejecutar los programas adecuados automaticamente.
Al ejecutar el proceso de Synthesize - XTS toda la descripcion hecha en VHDL se convierte en un archivo NGC (descrito en la seccion 2.6.1.1). Ademas el software de sntesis
XTS compila (depura) los circuitos o estructuras elaboradas y proporciona advertencias o
informaci
on de errores encontrados. Sin ning
un error que detenga la siguiente fase, se pueden
ejecutar los procesos de interpretacion, asignacion, ubicacion y conexion que se engloban en la
parte de Implement Design en el panel izquierdo de la ventana del Navegador de Proyecto. Al
terminar estos procesos el navegador arroja un reporte de los recursos del dispositivo FPGA
que fueron utilizados, un resumen de este reporte se ve en la Figura 4.2.
Adem
as del reporte de uso de recursos la Figura 4.3 muestra graficamente como se sit
uan
los elementos fsicos, que componen al codigo VHDL desarrollado, en el dispositivo FPGA.
Concluidos los procesos de interpretacion, asignacion, ubicacion y conexion, por u
ltimo

ESIME

143

ICE

Implementaci
on Final y Resultados del SILOG.

Figura 4.2: Resusmen de Utilizacion de Recursos del FPGA XC3S500E

IPN

144

ESIME

4.1 Implementaci
on del SILOG.

Figura 4.3: Distribucion de los Componentes Logicos en el Dispositivo FPGA.

ESIME

145

ICE

Implementaci
on Final y Resultados del SILOG.

resta generar el archivo .BIT que se usara para configurar o programar el dispositivo FPGA.
Al dar doble click en el apartado Generate Programming File se ejecuta el proceso de creacion del archivo de cadena de bits que contiene toda la informacion u
til al FPGA. Una vez
generado este archivo, que tendr
a el nombre del archivo principal junto con la extension bit
(Top SILOG.bit).
Para programar o configurar el FPGA se requieren de dos recursos: el archivo de cadena
de bits y un medio o herramienta para trasladar este al FPGA. La tarjeta Spartan 3E usada
en este proyecto incluye en su dise
no intrnseco una interfaz JTAG-USB para configurar
los dispositivos programables en ella, por tanto lo u
nico necesario es conectar la tarjeta a
una PC y ejecutar desde el software iMPACT la exploracion para reconocer los dispositivos
programables en ella; de acuerdo a lo expuesto en la seccion 2.6.1.2. Los resultados de tal
exploraci
on y la ventana principal del software iMPACT se muestra en la Figura 4.4.

Figura 4.4: Ventana Principal del Software iMPACT


Para programar el FPGA detectado se selecciona el archivo de cadena de bits generado
con anterioridad y se ejecuta el proceso de configuracion haciendo doble click en la secci
on
Program del panel de control de la parte izquierda baja de la ventana del software iMPACT

IPN

146

ESIME

4.2 Resultados Observados.

como se ve en la Figura 4.4. Despues de configurar al FPGA, toda la logica dise


nada se
transfiere al dispositivo y este comienza a realizar las tareas que se dispusieron para el; por
tanto se puede verificar el funcionamiento del sistema elaborado.

4.2.

Resultados Observados.

En el captulo 2 se expuso el desarrollo, funcionamiento y resultados obtenidos de los


elementos individuales que componen el sistema que se desarrolla. Para probar este sistema
en conjunto, despues de haber escrito el codigo para relacionar y poner en funcionamiento
los procesos de los diferentes componentes, se descarga al FPGA el programa final.
Para probar este sistema se requieren de dos condiciones: La primera es que el sistema
este energizado con una fuente de 5V y la segunda es que, al se un sistema de localizaci
on
GPS, debe estar en a cielo abierto; o en una ubicacion que permita a la antena GPS tener
en vista los satelites para as el dispositivo RGM-3000 calcule la posicion geografica donde se
encuentra.
Al poner en funcionamiento el sistema se espera visualizar en la parte baja de la pantalla
las coordenadas geogr
aficas que el modulo RGM-3000 proporciona. Ademas esta prueba de
funcionamiento verifica si la relaci
on entre tarjeta SD, memoria DDR-SDRAM y pantalla es
correcta al observar, con la prueba, la forma en que se despliegan las imagenes de mapas.
En la Figura 4.5se observan los elementos constituyentes al sistema desarrollado, conectados a la tarjeta Spartan 3E, en funcionamiento. Al estar el sistema basado en la tarjeta de
desarrollo Spartan 3E la energa requerida se toma de la misma tarjeta, es decir, el voltaje
necesario para el sistema se obtiene a traves de la corriente electrica y un adaptador de voltaje
de 127V a 5V con 4A de corriente.
Despues de programar el FPGA, los resultados mas visibles se notan en la pantalla TFTLCD, en ella se observa en primer lugar el mapa correspondiente a desplegar (predeterminado)
aunque con algunos puntos blancos en la imagen. En la parte baja de la misma tambien
se observan, cambiando cada segundo, los datos GPS en coordenadas geograficas y junto
con estas datos de otro tipo como: fecha actual, hora actual y altitud. A partir de estas
observaciones se deduce el comportamiento de los otros modulos controladores elaborados.
Observando las coordenadas en pantalla es evidente el funcionamiento de la interfaz RS232

ESIME

147

ICE

Implementaci
on Final y Resultados del SILOG.

Figura 4.5: Sistema en Funcionamiento.

IPN

148

ESIME

4.2 Resultados Observados.

creada para recopilar las cadenas ASCII envidas por el modulo RGM-3000. De esta misma
forma se comprueba el funcionamiento de la conversion de datos ASCII a colores RGB desplegables, proceso que describi
o en la seccion 3.5.1.
Para comprobar que estos datos son realmente del modulo RGM-3000 se desconecta la
interfaz RS232 que une a este dispositivo y a la tarjeta Spartan 3E, con lo cual se observa
que en la pantalla se dejan de percibir cambios en las coordenadas y la hora actual.
Con la visualizaci
on de la imagen de un mapa digital en pantalla se deduce que tres de
los controladores elaborados cumplen con sus tareas, estos son: el controlador de la pantalla
TFT-LCD, el controlador de la tarjeta SD y ademas el controlador de la memoria DDR
SDRAM. Se deduce el buen funcionamiento ya que se observan en la pantalla la informaci
on
desplegada de manera adecuada de las imagenes de mapas digitales que son trasportadas
desde la tarjeta SD donde inicialmente residen hacia el FPGA para ser desplegadas en la
pantalla. Tambien cumple su funci
on el controlador de la memoria DDR SDRAM debido a
que esta es una intermediaria entre la tarjeta SD y la pantalla TFT-LCD para las imagenes.
Un metodo de comprobaci
on de los elementos que integran el sistema es la desconexi
on
de los mismos y as verificar el posible cambio en el funcionamiento del sistema. Debido a
que la memoria DDR-SDRAM esta fija en la tarjeta Spartan 3E no es posible desconectarla
sin embargo al desconectar la tarjeta SD una vez que el sistema esta funcionando este sigue
presentando una imagen en pantalla, esto es normal pues los datos de la imagen han sido
transferidos de la tarjeta SD hacia la memoria temporal DDR-SDRAM.
Al realizar la misma desconexi
on de la tarjeta SD y reiniciar el sistema su funcionamiento
cambia y se observa una pantalla negra, es decir, no se muestra la imagen de un mapa digital
aunque se observan los datos GPS. Este comportamiento es precisamente esperado de acuerdo
a las condiciones en que se pone en funcionamiento el sistema.
La u
ltima parte fsica del sistema a poner a prueba son los botones de navegacion, estos
deberan al presionarlos cambiar la imagen que se observa en pantalla de modo que sea
visible el desplazamiento en un mapa. Al realizar pruebas de estos botones se observo un
funcionamiento adecuado del 50, es decir, el funcionamiento esperado se obtiene solo la
mitad de las veces de la pruebas. El error observado es que al presionar alguno de los botones
de desplazamiento la imagen que se obtiene en pantalla se encuentra distorsionada.

ESIME

149

ICE

Implementaci
on Final y Resultados del SILOG.

4.3.

An
alisis de los Resultados.

El sistema dise
nado presenta dos errores en su funcionamiento. Tras un analisis, a partir
de la verificaci
on en circuito, se detecto la posible causa de los puntos blancos visibles en la
imagen en pantalla. En la Figura 4.6 se observan mas a detalle los resultados observables en
pantalla.

Figura 4.6: Resultado en Pantalla


La causa principal radica en la metodologa usada para transferir la imagen desde la
tarjeta SD a la memoria DDR-SDRAM y posteriormente desplegarla.
Este metodo fue descrito en la seccion 3.5.2. Se plantea la transferencia de la imagen
desde la tarjeta SD en bloques de 512 Bytes, es decir, la imagen se traspasa completamente
en bloques de esta longitud. Tales bloques se mantienen temporalmente en un buffer dentro
del FPGA y desde ah se trasladan a la memoria DDR-SDRAM en pares de bytes; es as como
bloque a bloque se transportan los datos de pixeles de la tarjeta SD a la memoria RAM.
Teniendo todos los datos de pixeles en la memoria temporal RAM para desplegamos se
leen de la misma forma en pares de bytes; debido al funcionamiento intrnseco del controlador
de la DDR SDRAM. Ya que un solo pixel se compone de 3 bytes, el dise
no ejecuta tres procesos

IPN

150

ESIME

4.3 An
alisis de los Resultados.

de lectura para tener 6 bytes, en una peque


na memoria temporal, y por tanto 2 pixeles para
desplegar.
Esta precisa acci
on de leer 6 bytes es la que provoca la visualizacion de puntos blancos en
pantalla. En ciertos momentos la lectura sucesiva de dos pixeles llega al punto donde una lnea
de la memoria DDR-SDRAM se termina y algunos de los 6 bytes que deben leerse quedan
en la lnea siguiente. Sin embargo las especificaciones del controlador de la memoria DDR
SDRAM estipulan que la lectura sucesiva de datos en diferentes lneas no esta permitida [12].
Por tanto cuando este caso llega a suceder y algunos de los 6 bytes necesarios para dos pixeles
se encuentran en dos lneas diferentes de la memoria SDRAM, el controlador solamente lee
los datos de la lnea inicial y no continua con la lectura de aquellos datos que se encuentren
en la siguiente; dejando incompleta la informacion de color de ambos o uno de los pixeles.
El sistema, al tomar esta informacion de pixeles para despegarla no la encuentra completa y
la informaci
on produce la codificacion RGB observando un pixel con un color aparentemente
blanco.
El segundo error se trata de la distorsion de los mapas digitales al presionar los botones
de navegaci
on y por tanto cambiar entre imagenes. Despues de una revision del codigo, modificaciones del mismo y reverificaciones en circuito no se logro determinar la causa precisa
de este mal comportamiento del sistema. Se consideran entre las posibilidades una sincronizacion incorrecta en el momento de cambiar de imagen debida a la variedad de frecuencias
con que se trabaja en los diferentes dispositivos, se debe recordar que la tarjeta SD trabaja
a 25 MHz, la memoria DDR-SDRAM a 100MHz y 100MHz con un desplazamiento de 90
grados en su fase para los datos, y por u
ltimo la pantalla TFT-LCD trabaja a 9 MHz, la
sincronizaci
on de estos dispositivos a diferentes frecuencias puede ser la posible causa de la
distorsion en el cambio de im
agenes. Otra posible causa de este error pudiera ser la metodologa de traslado de datos de un dispositivo a otro o lo que es lo mismo el control general que
se implement
o para unificar los controladores independientes.

ESIME

151

ICE

Conclusiones y Lineas Futuras.

En conclusi
on el sistema cumplio en su mayor parte con el funcionamiento esperado,
logrando la visualizaci
on deseada en primera instancia. Los errores encontrados tienen cabida
al estar implementando una primera version de sistema actual, la posterior adecuacion con
certeza lograr
a rectificar tales errores.
Por tanto se logr
o en esta primera etapa tener control certero sobre los elementos de
hardware seleccionados para el sistema, aunque aun debe mejorarse el sistema para observar
un comportamiento similar a un dispositivo comercial.
Debe tomarse en cuenta ademas, de manera bastante importante, que el sistema fue
totalmente desarrollado en c
odigo VHDL con lo que este sistema contiene un n
umero amplio
de lneas de c
odigo que deben ser analizadas para rectificar el sistema.
Es importante recalcar que el controlador desarrollado para la tarjeta SD a traves de un
FPGA, no es implementado por el puerto de comunicaciones SPI, con esto se debe entender
que la forma en que se desarroll
o este controlador permite una mayor cantidad de datos
intercambiada entre FPGA y SD. Con esto, ademas de ser u
til al actual sistema, el controlador
aqu desarrollado para la tarjeta SD tambien es u
til en m
ultiples aplicaciones que podran ser
desarrolladas posteriormente.
Finalmente, la implementaci
on de al menos cuatro controladores independientes y su
consecuente funcionamiento en conjunto es el verdadero logro y avance que debe tomarse en
cuenta para valorar este proyecto.
Las recomendaciones propuestas para mejorar el dise
no de SILOG son:
Dise
nar un control de frecuencias de reloj con mejor compatibilidad.
Dise
nar un control de archivos FAT para la tarjeta SD para mejorar la b
usqueda de

153

Conclusiones y Lineas Futuras.

archivos.
Relacionar activamente las imagenes de mapas digitales con coordenadas geograficas.
Dise
nar un metodo de almacenamiento hacia la memoria DDR-SDRAM diferente para
mostrar en pantalla las im
agenes activamente de acuerdo a las coordenadas geograficas.

IPN

154

ESIME

Ap
endice A C
odigos en VHDL.

Se anexa al documento un CD-ROM que contiene el codigo VHDL elaborado para este
proyecto.

155

Bibliografa

[1] James Bao-yen Tsui. Fundamentals of global positioning system receivers: a software
approach. John Wiley & Sons, Inc., 2000.
[2] Direcci
on General de Normas de Sistemas de Difusion de la Subsecretara de Comunicaciones y Desarrollo Tecnologico de la Secretara de Comunicaciones y Transportes.
Especificaciones y requerimientos para la instalaci
on y operaci
on de estaciones de radiodifusi
on sonora moduladas en amplitud, Enero 2000.
[3] Ra
ul Ruiz Meza; Jose Manuel Riera Sals. Obtencion de conductividad del suelo mediante
mediciones de campo electrico. In XXI Simposium Nacional de la Uni
on Cientfica
Internacional de Radio, pages 155159, 2006.
[4] RoyalTek Company LTD. RGM-3000/REB-3000 Operational Manual, 1.3 edition, Mayo
2002.
[5] Stuart Sutherland. Verilog HDL, Quick Reference Guide. Sutherland HDL Inc., 2001.
[6] Peter J. Ashenden. VHDL Tutorial. Elsevier Science, 2004.
[7] SHARP. Device Specification For TFT-LCD Module.
[8] SD Card Association. SD Specifications Part 1 Physical Layer Simplified Specification
Version 4.10.
[9] Kamran; Ebrahim Mansoor; Talha Umar Ahmad, Jahanzeb; Raza. Fpga based implementation of baseline jpeg decoder. pages 29:129:6, 2009.
[10] Xilinx. Spartan-3E FPGA Starter Kit Board User Guide, 1.2 edition, Enero 2011.

157

BIBLIOGRAFIA

[11] Semiconductor Components Industries. MC34063A, MC33063A,NCV33063A 1.5 A,


Step-Up/Down/Inverting Switching Regulators. Semiconductor Components Industries,
rev.10 edition, Abril 2002.
[12] Xilinx. Memory Interface Solutions User Guide, 3.6 edition, Septiembre 2010.
[13] Elliot D. Kaplan. Understanding GPS Principles and Applications, chapter 1. Artch
House, Boston & London, 1996.
[14] Pratap Misra; Per Enge. Global Positioning System: Signals, Measurements and Performance, chapter 1. Ganga-Jamuna Press, Lincoln, MA, 2th edition, 2011.
[15] Jagoba Arias Perez; Jose Luis Martn Gonzalez. Electronica Digital. Delta Publicaciones,
2007.
[16] M. Mano, M.M.R.E.G.G.D. S
anchez, and R.E. Garca. Dise
no digital. Pearson Educacion, 2003.
[17] Jan Yilbar Daniel Lundstr
om. Experimental material physics, liquid crystal materials,
1998.
[18] Observatorio Regional de la Sociedad de Informacion. Sistemas de Localizaci
on e Informaci
on Geogr
afica. Junta de Castilla y Leon, 2009.
[19] Xilinx. ISE In-Depth Tutorial, 13.1 edition, Marzo 2011.
[20] Xilinx. Sparta-3 Generation FPGA User Guide, 1.8 edition, Junio 2011.
[21] John Miano. Compressed Image File Formats. 1999.

IPN

158

ESIME

You might also like