Вы находитесь на странице: 1из 153

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERA ELECTRNICA Y ELCTRICA



UNIDAD DE POST GRADO

Diseo y simulacin de un sistema para la programacin
de un robot mvil utilizando herramientas VHDL

TESIS
para obtener el grado acadmico de Magster en Microelectrnica

AUTOR
Dario Utrilla Salazar

Lima - Per
2008









DISEO Y SIMULACIN DE UN
SISTEMA PARA LA PROGRAMACIN DE
UN ROBOT MOVIL, UTILIZANDO
HERRAMIENTAS VHDL.


Por


Daro Utrilla Salazar



Tesis para obtener el grado de Magister en Ingenieria
Electronica en la especialidad de Microelectronica.

Asesorado por:

Dr. Carlos Silva Crdenas.
Dr. Werner Pacheco Lujan.


Lima, Abril de 2008.






DEDICATORIA

A Dios, el Ser Supremo Iuente eterna e inIinita de sabiduria y conocimientos,
por ser la razon de nuestra existencia y por brindarme la oportunidad de explorar un
diIerencial de conocimientos del universo inIinito.

A mis padres, Gregorio Utrilla Reyes y Dora Salazar Quispe, que, con sus
ejemplos me ensearon el camino de la busqueda del conocimiento a traves de la
conIianza en Dios y la practica de los valores humanos y la Ie.

A mi Iamilia; mi esposa Esther del Pilar, por compartir mis sueos en todos
estos aos, y su apoyo para alcanzar mis objetivos; a mis hijos: Gloria Carmen, Dario
Gregory, Gloria Esther, Luz Esther, Dario Jesus y en memoria de Dora Esther y
Raquel Esther; por ser mi Iuente de inspiracion para dar siempre un paso mas, a mis
objetivos y permitirme mostrar lo maravilloso de la vida y la naturaleza.

A mis hermanos TeoIilo, Elizabeth, Gloria y Daniel; que siempre son mis
amigos y con quienes comparto maravillosos momentos de Iamilia.

A, todas las personas que buscan el camino del exito y que jamas aceptan el
Iracaso. Por que existe la verdad universal que todo lo podemos con la Ie en Dios.

Finalmente, a todos mis colegas, Iamiliares y amigos que me han brindado sus
valiosas sugerencias y sabios consejos, para que el presente inIorme de Tesis sea una
realidad.



AGRADECIMIENTOS

Deseo expresar mi sincero, proIundo y eterno agradecimiento a mis
Asesores: Dr. Carlos Silva Cardenas y Dr. Werner Pacheco Lujan, por la direccion,
asesoramiento de la Tesis; aun con sus recargadas agendas, me han brindado su
valioso tiempo, orientaciones, consejos y su eIiciente asesoria. Gracias a los cuales ha
sido posible la realizacion de la investigacion recogida en este trabajo de Tesis.

Al Consejo Nacional de Ciencia y Tecnologia (CONCYTEC), por su apoyo
para la realizacion de este trabajo.

A Xilinx y Altera por el valioso apoyo como Iuentes de inIormacion, asi como
las herramientas computacionales proporcionadas.

A Iberchip, por el interes y apoyo a los proyectos latinoamericanos.

A mis proIesores de la Maestria de Microelectronica; Dr. Carlos Silva
Cardenas, Dr. Werner Pacheco Lujan, Dr. Pablo Hector Rivera RioIano, Dr. Fernando
Vilca Ghezzi, M.Sc. Oscar Agurto C.; por el alto espiritu de maestros y amigos
quienes me brindaron sus conocimientos, experiencia; mostrandome la senda de la
Microelectronica y su gran importancia en el desarrollo de los pueblos.

Al Ing. AlIredo Granados Ly, docente de la Universidad Nacional Mayor de
San Marcos; colega y amigo, por sus valiosas sugerencias proporcionadas para
enriquecer el contenido de la Tesis.

A mis compaeros de la Maestria de Microelectronica, por la amistad brindada
durante el tiempo de estudios hasta la culminacion y el desarrollo de nuestros
proyectos.

Tampoco puedo dejar de agradecer especialmente a mis padres Gregorio y
Dora; quienes con sus consejos me orientan a la perseverancia y busqueda del
conocimiento. Asimismo a mi Iamilia y a Esther del Pilar por compartir mis sueos y
brindarme toda su paciencia y apoyo en la edicion de esta memoria.

Finalmente, quiero agradecer a Dios, Iuente eterna de la vida y sabiduria, Sin
EL no habria proposito de vivir. Todo seria envano. Todo lo que soy lo debo a EL.






















INDICE GENERAL

DEDICATORIA III
AGRADECIMIENTOS IV
INDICE GENERAL VI
RESUMEN IX
ABSTRACT XI
LISTADO DE FIGURAS XIII
LISTADO DE TABLAS XVII
INTRODUCCIN XVII

CAPITULO 1
CARACTERISTICAS Y PERSPECTIVAS DE LOS ROBOTS.

1.1 DeIinicion, importancia y evolucion de la robotica 1
1.2 ClasiIicacion y aplicacion de los robots. 3
1.3 Mercado de la robotica y perspectivas Iuturas. 5


CAPITULO 2

TCNICAS DE DISEO DIGITAL AVANZADO Y DESCRIPCIN
DEL SISTEMA A DISEAR.

2.1 Diseo digital avanzado y metodologia de diseo. 7
2.2 Caracteristicas del ASICs. vs. FPGA 10
2.2.1 Diseo de ASIC. 13
2.2.2 Caracteristicas del FPGA. 14
2.3 Herramientas computacionales para el diseo digital avanzado. 17
2.4 Analisis y descripcion del esquema en bloques del sistema propuesto. 23
2.4.1 Subsistema interIaz de comunicacion computador FPGA. 24
2.4.2 Subsistema detector de posicion del robot. 25
2.4.3 Subsistema de control y programacion del robot. 25
2.4.4 Subsistema monitor de posicion del robot. 25
2.4.5 Subsistema de control de motores paso a paso. 25
2.5 Funcionamiento del sistema a disear. 26



CAPITULO 3
DISEO DEL SISTEMA DE PROGRAMACIN DEL ROBOT

3.1 Generalidades 27
3.2 Diseo del interIaz de comunicador computador- FPGA. 30
3.2.1 Seales de entradas y salidas del interIaz. 31
3.2.2 Analisis del diseo y operacion del interIaz. 34
3.3 Diseo del detector de posicion del robot. 37
3.3.1 Analisis y operacion del detector de posicion. 38
3.3.2 Diseo de la interIaz de comunicacion PS/2 del mouse. 41
3.3.3 Diseo de acumuladores. 41
3.3.4 Diseo de 'Contadorm 43
3.3.5 Implementacion del circuito Iinal detector de posicion. 44
3.4 Diseo de la unidad de control y programacion del robot. 45
3.4.1 Seales de entradas y salidas. 45
3.4.2 Analisis del diseo y operacion. 47
3.5 Diseo del subsistema monitor de posicion. 55
3.5.1 Diseo del circuito 'Visor y 'Visor-Alt. 56
3.6 Diseo del subsistema de control de motores de paso a paso. 57
3.6.1 Paso completo 'Full Step 59
3.6.2 Medio paso 'HalI Step 59
3.6.3 Bloque 'ContPaso. 61
3.6.4 Bloque 'ControlPasos 62
3.6.5 Bloque 'MotorPaso. 63

CAPITULO 4

DESARROLLO Y SIMULACIN DE PROGRAMAS
4.1 Entorno de programacion y simulacion digital del diseo. 65
4.1.1 MaxPlus II. 68
4.1.2 Web Pack Project Navigator 68
4.2 Programas y simulacion del subsistema interIaz de comunicacion. 69
4.2.1 Programa de comunicacion computador-FPGA. 69
4.2.2 Programa del diseo del modulo receptor. 74
4.3 Programas y simulacion del subsistema detector de posicion . 77
4.3.1 Programa detector de posicion. 77
4.3.2 Programa y simulacion del 'Contadorm 79
4.3.3 Programa de interconexion del circuito detector de posicion. 80
4.3.4 Programa para lectura de coordenadas. 81
4.4 Programa principal y simulacion para el subsistema de control 85
4.5 Programas y simulacion del subsistema monitor de posicion. 88
4.5.1 Programa de monitoreo de posicion. 88
4.5.2 Programa del decodiIicador numerico. 91
4.6 Programas y simulacion del subsistema de control de motores de paso. 93

CAPITULO 5
RESULTADOS OBTENIDOS
5.1 Resultados obtenidos del diseo. 96
5.2 Implementacion del diseo 97
5.3 Reportes Iinales del procesamiento de los programas 102
5.4 Perspectivas de implementacion con ASIC en nuestro pais. 106

CONCLUSIONES 108

BIBLIOGRAFIA 110

ANEXOS
ANEXO A
ARQUITECTURA DE PLD COMERCIALES

A.1 Evolucion de los PLD y el porque de los FPGA 113
A.2 Tecnologia de los FPGA XILINX. 115
A.3 Arquitectura de los modulos SPARTAN de XILINX 115
A.3.1 ConIiguracion 116
A.3.2 Bloques de entrada y salida 117
A.3.3 Elementos de almacenamiento 118
A.3.4 Los bloques logicos conIigurables 120
A.3.5 Los Slices- El generador de Iunciones 120
A.3.6 Los bloques de RAM 121
A.3.7 Los multiplicadores dedicados 121
A.4 Perspectivas del diseo electronico basado en los FPGA 121
A.4.1 Arquitectura de un FPOA a 1 GHz. 122
A.4.2 Soporte de algoritmos 124
A.5 Sistemas de desarrollo 124
A.6 Flujo de diseo 124

ANEXO B
EVALUACION DE LOS COSTOS E IMPLEMENTACION

B.1 Evaluacion de los costos de implementacion con el uso de FPGA 126
B.2 Costos de personal 128
B.3 Costos totales aproximados 129

ANEXO C
CARACTERISTICAS TECNICAS DE LA FAMILIA
SPARTAN-3 (XILINX)
C.1 Caracteristicas tecnicas de FPGA Spartan-3 131



LISTADO DE FIGURAS
Captulo 1:
Figura 1.1 Mercado de comercializacion de los robots y sus perspectivas.

Captulo 2:
Figura 2.1 Metodologias de diseo segun escala de integracion de ICs.
Figura 2.2 Ciclos de desarrollo de un ASIC vs. FPGA.
Figura 2.3 Etapas de proceso de diseo de un ASIC.
Figura 2.4 Arreglo logico programable en campo (FPGA).
Figura 2.5 Implementacion de un circuito en base a un LUT.
Figura 2.6 Implementacion de un circuito combinacional en base a su tabla de
verdad.
Figura 2.7 Tabla de busqueda como registro de desplazamiento.
Figura 2.8 Estructura Iuncional del diseo digital avanzado.
Figura 2.9 Posible trayectoria del 'robot movil.
Figura 2.10 Diagrama de bloques del sistema para la programacion del 'robot
movil.

Captulo 3:
Figura 3.1 Diagrama de interconexion del XC3S200E con los dispositivos
planteados en el diseo.
Figura 3.2 Vista superior de la tarjeta de desarrollo.
Figura 3.3 Vista inIerior de la tarjeta de desarrollo.
Figura 3.4 Conexion del puerto RS-232 con el FPGA utilizando el MAX3232.
Figura 3.5 Circuito generador de baudios del puerto serial.
Figura 3.6 Diagrama con los procesos a implementarse en VHDL para generar las
Velocidades de Tx y Rx.
Figura 3.7 Diagrama de estados del modulo 'receptoruart.
Figura 3.8 Circuito interIaz 'modreceptor.
Figura 3.9 Subsistema 'receptoruart
Figura 3.10 Conector PS/2 del PC para teclados y Mouse.
Figura 3.11 Diagrama de tiempos del Bus PS/2.
Figura 3.12 Trama generada por el Mouse cuando es usado.
Figura 3.13 Valores positivos y negativos de las coordenadas X e Y con respecto a
la posicion actual del 'mouse.
Figura 3.14 Circuito de comunicacion del 'mouse.
Figura 3.15 Circuito acumulador para valores de X e Y.
Figura 3.16 Diseo del circuito acumulador.
Figura 3.17 Circuito 'contadorm.
Figura 3.18 Circuitos utilizados para el diseo de 'contadorm.
Figura 3.19 Circuito Iinal del detector de posicion del robot.
Figura 3.20 Subsistema detector de posicion.
Figura 3.21 Seales de entradas y salidas de la unidad de control.
Figura 3.22 Ingreso de coordenadas a la unidad de control.
Figura 3.23 Recepcion de la cuenta acumulada del desplazamiento del Mouse.
Figura 3.24 Visualizacion de la distancia recorrida por el robot movil.
Figura 3.25 Circuito Iinal de la unidad de control y seales I/O.
Figura 3.26 Diagrama de estado de la unidad de control.
Figura 3.27 Salida del sistema en el estado S0.
Figura 3.28 Salida del sistema en el estado S1.
Figura 3.29 Salida del sistema en el estado S2.
Figura 3.30 Salida del sistema en el estado S4.
Figura 3.31 Salida del sistema en el estado S5.
Figura 3.32 Estado del sistema antes del desplazamiento del robot.
Figura 3.33 Estado del sistema cuando llega a la posicion Iinal, (estado S9).
Figura 3.34 Valores que se debe enviar a los display para visualizar un numero.
Figura 3.35 Secuencia de valores periodicos para visualizar 4 numeros en los
'displays.

Figura 3.36 Circuito que se encarga de visualizar valores en los 'displays del modulo
SPARTAN-3.
Figura 3.37 Algunos tipos de motores PAP.
Figura 3.38 Diagrama de bloques de un sistema con motor PAP.
Figura 3.39 Circuito de control de motor PAP unipolar.
Figura 3.40 Diagrama de bloques del circuito de prueba.
Figura 3.41 Circuito para el control de movimiento de motor PAP.
Figura 3.42 Diagrama del control del circuito CONTPASO.
Figura 3.43 Circuito Final para el control de motores PAP.

Captulo 4:
Figura 4.1 Proceso de implementacion de un sistema digital en un FPGA.
Figura 4.2 Diagrama de simulacion para la velocidad de 115,200 bps.
Figura 4.3 Diagrama de simulacion para la velocidad de 57,600 bps.
Figura 4.4 Diagrama de simulacion para la velocidad de 38,400 bps.
Figura 4.5 Diagrama de simulacion para la velocidad de 19,200 bps.
Figura 4.6 Diagrama de simulacion para la velocidad de 9,600 bps.
Figura 4.7 Diagrama de simulacion para la velocidad de 4,800 bps.
Figura 4.8 Diagrama de simulacion para la velocidad de 2,400 bps.
Figura 4.9 Diagrama de simulacion para la velocidad de 1,200 bps.
Figura 4.10 Diagrama de tiempos del dato de prueba F5h..
Figura 4.11 Respuesta del circuito de acumuladores.
Figura 4.12 Respuesta del circuito 'contadorm.
Figura 4.13 Circuito 'VISOR implementado en VHDL.
Figura 4.14 Simulacion del circuito Visor por 20 ms.
Figura 4.15 Circuito de control para motores PAP.
Figura 4.16 Diagrama de tiempos del circuito de control de motores PAP
Implementado en el FPGA.



Captulo 5:
Figura 5.1 Implementacion Iinal del 'robot movil.
Figura 5.2 Puerto RS-232 para comunicacion PC-FPGA.
Figura 5.3 Sistema sensorial de posicion.
Figura 5.4 Circuito de potencia de motores PAP y motor de control de giro de las
ruedas delanteras..
Figura 5.5 Motores PAP para realizar la traccion del 'robot movil.
Figura 5.6 Bateria para alimentar los motores PAP..
Figura 5.7 Comunicacion computador-FPGA.
Figura 5.8 Reporte Iinal generado por la ejecucion de los programas.
Figura 5.9 Directorio de programas organizados para el 'robot movil.
Figura 5.10 Reporte general del procesamiento del sistema de control.
Figura 5.11 Diagrama esquematico del diseo Iinal del sistema.
Figura 5.12 Reporte de errores de operacion.
Figura 5.13 Asignacion de Iunciones a los pies del FPGA.
Figura 5.14 Reporte de retardos en el sistema.

Anexo A
Figura A.1 Alternativas de implementacion de sistemas digitales.
Figura A.2 Diagrama de la arquitectura de la Iamilia Spartan-3 de Xilinx.
Figura A.3 Diagrama simpliIicado de un bloque de entrada/salida correspondiente
al Spartan-3.
Figura A.4 Arreglo de los 'Slices dentro del CLB.
Figura A.5 Multiplicadores dedicados incorporados en el FPGA Spartan-3.
Figura A.6 Arquitectura del FPOA de la compaia MathStar.
Figura A.7 Arquitectura del FPOA.
Figura A.8 Herramientas para diseo con los dispositivos FPOA.

Anexo B
Figura B.1 Costo total con el diseo por dispositivo (FPGA,MGA,CBIC).




LISTADO DE TABLAS
Captulo 1

Captulo 2
Tabla 2.1 Tipos de ASICs segun arquitectura de Iabricacion.

Captulo 3
Tabla 3.1 Velocidades y numero de cuentas a realizar en el diseo del modulo
UART.
Tabla 3.2 Pines del conector PS/2 utilizados en el FPGA.
Tabla 3.3 Tiempo de las seales generadas durante la comunicacion.
Tabla 3.4 Secuencia de excitacion de un motor PAP a paso completo.
Tabla 3.5 Secuencia de excitacion de un motor PAP en medio paso.

Captulo 4
Tabla 4.1 CodiIicacion de los circuitos :VISOR y VISORALT.

Anexo A
Tabla A.1 Caracteristicas y parametros del FPOA.

Anexo B
Tabla B.1 Evaluacion de costos de Iabricacion del FPGA, MGA y CBIC.

Anexo C
Caracteristicas tecnicas de la Iamilia Spartan-3. (Xilinx).



RESUMEN

En el desarrollo de esta Tesis, se realizo el diseo y simulacion del sistema de
control de un 'robot movil utilizando herramientas de programacion VHDL (Very
high speed integrated circuit Hardware Description Language, lenguaje descriptivo de
hardware para circuitos integrados de muy alta velocidad) Project Navigator de
Xilinx y MaxPlus II de Altera; para realizar la sintesis, simulacion e implementacion
en un dispositivo FPGA (Field Programmable Gate Array, arreglo de compuertas
programables en campo).

El proceso de programacion del 'robot movil se realiza desde un computador a
traves del puerto serie RS-232; una vez que la unidad de control recibe los datos de la
posicion Iinal, debe activar a los motores PAP (Paso a Paso), a Iin de que el movil
inicie el movimiento para avanzar o retroceder. La activacion de los motores
dependera de los valores acumulados en los registros de distancia de la unidad de
control. Si los valores son menores al indicado por el computador, entonces Iorzara a
que los motores avancen hacia adelante o hacia atras. La comparacion en todo
momento lo realiza la unidad de control y como salida del control se tienen las seales
que gobiernan a dos motores paso a paso (PAP), en el cual uno de ellos realiza el
desplazamiento hacia adelante o hacia atras y el segundo motor paso a paso se
proyecta para realizar el control de giro de las llantas delanteras hacia la izquierda o
derecha.

Como elemento sensor de posicion a partir del punto de origen se emplea, los
mecanismos del 'Mouse PS/2, permitiendo desarrollar con alto nivel de precision (a
nivel de milimetros); este subsistema sensorial es muy importante ya que, le indicara al
'robot movil donde se encuentra ubicado; haciendo que active los motores paso a
paso para llegar al punto Iinal. Este subsistema estara Iormado por un circuito de
comunicacion serial PS/2 de tal manera que interactua con la electronica que poseen el
'Mouse PS/2 de la computadora. Se aprovechara el mecanismo de ubicacion que
poseen estos dispositivos para que el 'robot movil encuentre su punto de reIerencia
con respecto al punto Iinal. Hay que tener en cuenta que los comandos de
comunicacion ya estan establecidos por los Iabricantes del Mouse y es el que utilizara
para lograr el objetivo.

























ABSTRACT

In the development oI this thesis it was made the design and simulation oI the
system oI control oI a 'mobile robot having used tools oI programming VHDL (Very
High Speed Integrated Circuit Hardware Description Language, descriptive language
hardware integrated circuit Ior very high speed) Project Navigator Xilinx and
MaxPlus II oI Altera, soon to make the synthesis, simulation and implementation in a
device FPGA (Field Programmable Gate Array, settling in Iield programmable gate).

The programming process oI the 'mobile robot is made Irom a computer through
the serial port RS-232; once the control unit receives the data oI the Iinal position
must activate to motors PAP (Step by step), in order that the moving body initiates the
movement to advance or to back down. The activation oI the motors will depend on
the accumulated values in the distance registries oI the control unit. II the values are
smaller to the indicated one by the computer, then it will Iorce to that the motors
advance Iorwards or backwards. The comparison at any moment makes the control
unit. and as exit oI the control the signals that govern step by step to two motors
(PAP), in which are had one oI them makes the displacement Iorwards or backwards
and the second motor step by step is in project to make the control oI turn oI the Iront
rims towards the right leIt or.

As an sensorial element oI position Irom the point oI origen is used, the
mechanisms oI 'Mouse PS/2, allowing to develop with high level oI precision (at
level oI millimeters); sensory subsystem is most important since, it will indicate the
'mobile robot to him where it is located; causing that activates the motors oI step by
step arriving at Iull stop. This subsystem will be Iormed by a circuit oI serial
communication PS/2 in such a way that it interacts with the electronics that has
'Mouse PS/2 oI a computer. The mechanism will take advantage oI location that has
these devices so that the 'mobile robot Iinds its datum point with respect to Iull stop.
It is necessary to consider that the communication commandos already are settled
down by the manuIacturers oI the mouse and is the one that will use to obtain your
objective.



























INTRODUCCION

El adelanto tecnologico alcanzado en los ultimos 50 aos por la humanidad ha
sido tal, que es superior a la suma de los avances alcanzados hasta antes de los aos
1950s. Esto se debe en gran medida a la electronica digital, cuya implementacion ha
permitido progresos importantes en la ciencia, en la industria, en las comunicaciones y
en la vida cotidiana 1]. El mayor representante de ello es la computadora digital,
herramienta sin la cual es imposible imaginar los logros obtenidos en el tiempo
considerado, como por ejemplo el programa espacial, control de transito aereo,
robotica, automatizacion de procesos en la industria, Internet; por mencionar algunos.
Todo ello gracias al desarrollo de circuitos integrados cada vez de mayor nivel de
integracion a bajo costo 12], 13], 16].

En el presente trabajo de Tesis se describe una sintesis de la vision actual de la
robotica, sus tecnologias y aplicaciones; sin orientar al diseo cinematico ni dinamico
del 'robot movil; pero si, se proIundiza en el diseo y simulacion del sistema de
control de su movimiento utilizando tecnologia microelectronica y diseo digital
avanzado que comprende el uso de herramientas computacionales de programacion en
hardware (Programacion VHDL), asimismo para su realizacion se ponen en practica
los conocimientos de diIerentes areas de la ingenieria entre ellas la electronica,
electrica, mecanica, inIormatica 3]. Los que hacen que el proyecto presente
caracteristicas interesantes y prometedores.

Ademas en lo reIerente a los conocimientos inIormaticos que se plantean, se
destaca, porque estos cubren aspectos tan diversos como el estudio de las principales
tendencias de modelizacion de conocimientos de la inteligencia artiIicial y la
programacion a nivel de hardware 15], desarrollando las interIaces del usuario para la
operacion del 'robot movil y el programa de control de los elementos mecanicos del
sistema 5].

Otro aspecto del trabajo de Tesis que resulta atractivo, es el estudio completo de
la robotica movil, permitiendo desarrollar el analisis de todos los subsistemas que
comprende, conIormandose de modo integral en la estructura de la Tesis. Asi se
deberan analizar con proIundidad el subsistema interIaz de comunicacion, subsistema
sensorial, subsistema de monitorizacion y subsistema del control de movimiento 2],
27].
El subsistema sensorial esta basado en los principios de operacion de periIericos
(Mouse) del computador personal 6].
El subsistema de movimiento centra sus Iundamentos en teorias de la ingenieria
electrica y mecanica 10].
El subsistema de control Iundamenta su desarrollo en conocimientos de multiples
areas debido a diversas naturalezas de los sistemas sensoriales y de los actuadores que
controla 2]. Asi comprende campos que son la ingenieria electronica desarrollado con
el uso del diseo digital avanzado, la inIormatica y en Iuncion del sistema sensorial. El
aspecto de la inteligencia artiIicial del diseo utiliza recursos de programacion con
VHDL que permite orientar la implementacion hacia los dispositivos ASIC (Aplication
SpeciIic Integrated Circuit, Circuitos integrados de aplicacion especiIica) 'Full
custom (Dispositivos integrados Iabricados con caracteristicas totalmente
personalizados) o 'Semicustom (Dispositivos integrados con estructura regular de
dispositivos basicos (transistores) preIabricados que el usuario puede personalizar y
completar las ultimas etapas del proceso tecnologico) 11], 15].

Para el proyecto en mencion, no se pretende realizar un robot autonomo, por lo
que el sistema de mando es desde un computador, el cual indicara al 'robot movil las
acciones a realizar.

Los objetivos del trabajo de Tesis son multiples, siendo el objetivo primario, el
diseo de una arquitectura generica de desarrollo para este tipo de sistemas utilizando
la programacion VHDL para su implementacion en un FPGA en el menor tiempo y al
menor costo. Asi en el proyecto se deIine una arquitectura general estableciendo cada
uno de los modulos de los que se compone y las interIaces que lo interrelacionan. De
esta manera, en proyectos Iuturos sencillamente se debera realizar un analisis de cada
uno de los modulos e interIaces planteados y adaptarlos en Iuncion del proposito
especiIico que se plantee en cada caso.

Ademas se proyecta desarrollar el diseo y simulacion de un prototipo del 'robot
movil, con el Iin de estudiar el abanico de posibilidades que oIrece el mercado a nivel
de arquitecturas de control, de componentes mecanicos, sensores, herramientas de
desarrollo, etc.

En todo momento se tiende a que el desarrollo del mismo sea Iacilmente
reproducibles por cualquier diseador con los conocimientos minimos de diseo digital
avanzado. Para lo cual se pretende emplear, en el mayor de los casos posibles,
herramientas de libre distribucion capaces de operar en las plataIormas de
comunicaciones mas comunmente utilizadas (Project Navigator de Xilinx y Max
Plus de Altera en sus diIerentes versiones) 17], 20]. Asimismo para la eleccion de los
materiales de implementacion se seguira el mismo proposito, utilizando materiales de
Iacil adquisicion y economicos donde las herramientas para que su tratamiento sean de
uso comun.

En el desarrollo de la presente Tesis, se consideran los capitulos siguientes:

En el capitulo 1, se realiza una breve introduccion a los robots y sus tecnologias
de inIormacion asociadas. Se presenta una sintesis de la robotica y sus objetivos. Se
describe algunas aplicaciones dentro del mundo productivo, de sus servicios, su
impacto y perspectivas Iuturas en nuestro medio.

En el capitulo 2, se describe el estudio de las tecnicas de diseo digital avanzado
y un analisis de las arquitecturas de ASIC y FPGA; indicando la evolucion de las
mismas en sus diIerentes versiones; para luego establecer el planteamiento del diseo
del 'robot movil y desarrollar su simulacion e implementacion en un FPGA.

En el capitulo 3, se plantea la problematica general del robot: como desplazarlo,
control de su movimiento e interaccion inteligente con el mundo que lo rodea,
asimismo describe en Iorma completa el diseo del sistema inteligente que desarrolla
el control y ejecucion de la programacion del 'robot movil; deIiniendo una estructura
estandar analizando cada uno de los modulos que constituye. Partiendo de este
paradigma de desarrollo se realiza un analisis de los diversos subsistemas que
constituye el presente proyecto.

En el capitulo 4, se desarrollan los aspectos de programacion desarrollados en
Iuncion a la arquitectura del diseo, utilizando el soItware Project Navigator Version
7.1 de Xilinx, luego mostrandose los resultados de las simulaciones realizadas
utilizando el soItware MaxPlus II de Altera.

En el capitulo 5, se describen los resultados obtenidos del diseo, simulacion e
implementacion del 'robot movil y se indica sus caracteristicas de su
Iuncionamiento.

En los anexos se adjuntan inIormacion relacionada a la evaluacion de los PLDs
(Programmable Logic Device, dispositivos logicos programables) comerciales en
Iuncion a las tecnologias de Iabricacion, especiIicaciones tecnicas y las perspectivas de
diseo electronico basada en los FPGA.
Asimismo se realiza el analisis de evaluacion de los costos de implementacion
del sistema de control del 'robot movil basado en el FPGA y ASIC. Y se muestran
inIormacion tecnica relacionada con el proyecto de Tesis.











CAPITULO 1

CARACTERISTICAS Y PERSPECTIVAS DE LOS
ROBOTS

1.1 Definicin, importancia y evolucin de la robtica.

En este capitulo se desarrolla la deIinicion basica de los conceptos relacionados
con la robotica y en Iorma particular con la robotica movil; sus aplicaciones y las
posibilidades que existen para realizar programas de control aplicados en sistemas
roboticos.
Segun la deIinicion del termino 'robot, es un sistema generalmente mecanico,
que desempea tareas automaticamente, ya sea de acuerdo a supervision humana
directa, a traves de un programa predeIinido, siguiendo un conjunto de instrucciones
generales o utilizando tecnicas de inteligencia artiIicial 2], 3], 5]. Generalmente
estas tareas reemplazan, asemejan o extienden el trabajo humano y representan la
motivacion de construir mecanismos de control que actuen en Iorma automatica para
mejorar la calidad e incrementar la produccion 10].
La Robotica y la automatizacion desde sus inicios siempre han oIrecido al sector
industrial un excelente compromiso entre productividad y Ilexibilidad, una calidad
uniIorme de los productos, una sistematizacion de los procesos y la posibilidad de
supervisar y/o controlar las plantas segun diIerentes parametros y criterios.
Destacandose su importancia por las ventajas siguientes 4], 10]:
Incremento de la productividad.
Alta Ilexibilidad de operaciones.
Excelente calidad de produccion.
Mejora de la seguridad industrial.

Como resultado, la robotizacion permite mejorar la calidad y las condiciones de
trabajo, sustituyendo tareas penosas por otras que se eIectuen en condiciones mucho
mas ventajosas. Pero, ademas, el desarrollo de la automatizacion en la produccion y
mejorar la calidad de vida del ser humano 25].
Gracias al desarrollo de las tecnologias de inIormacion asi como de la mecanica
y la electronica, se posibilito el desarrollo de los primeros robots en la decada de los 50
del siglo pasado. Su introduccion en la industria a principios de los 60 como
elementos manipuladores, motivo el interes en los investigadores para lograr
manipuladores mas rapidos, precisos e incluso moviles 7]. Posteriormente en la
decada de los 70 se extiende el campo de aplicacion, continuando con la evolucion de
los mismos y siendo especialmente beneIiciada con el desarrollo de los dispositivos
electronicos programables (Microprocesadores, microcontroladores, procesador digital
de seales (DSP), controlador logico programable (PLC)) 15]; ampliando la
investigacion de la inteligencia artiIicial que combinado con la robotica permitieron el
desarrollo de robots con niveles de inteligencia y realizar movimientos o tareas cada
vez complejas.
Particularmente el desarrollo de los robots moviles surge en la decada de los 70
como banco de pruebas experimentales para estudiar las tecnicas de inteligencia
artiIicial y ante la necesidad de ampliar el campo de actuacion de la robotica en la
industria ya que inicialmente estaba limitado al uso en estructuras Iijas. En esa decada
se iniciaron con el uso industrial de los 'robots moviles, con multiples Iunciones,
siendo el prioritario la Iuncion de desplazamiento siguiendo trayectorias preIijadas o
aplicando tecnicas de inteligencia con sensores que permiten evitar colisiones con
objetos que se encuentran en su recorrido 40], 43]. Siendo su estructura compuesta
por actuadores de locomocion que le permiten desplazarse, un sistema de sensores que
le permiten percibir aspectos de su entorno y un modulo controlador que contiene el
soItware de control, permitiendo realizar la navegacion sobre entornos no
estructurados de los que se posee un conocimiento incierto mediante la interpretacion
de la inIormacion suministrada a traves de los sensores y del estado actual del robot
movil 40], 47].


1.2 Clasificacin y aplicaciones de los robots.

Una primera y simple clasiIicacion de los robots en Iuncion de sus caracteristicas
mecanicas 2], 39] es:
Fijos o manipuladores: en los que la base del 'Robot esta Iija en un punto del
espacio en el que se encuentra.
Moviles: en estos la base no esta Iija y se puede mover con una cierta libertad por
el espacio (aunque puede existir algun tipo de restriccion).
Los robots moviles tienen la base no Iija, tiene cierta libertad para moverse por el
espacio, ya sea en el plano o en el espacio tridimensional. Estos robots pueden estar
unicamente Iormados por la base o tambien por una estructura similar a los
manipuladores con la unica excepcion y complicacion respecto a su controlabilidad
porque la base no esta Iija 27].

Una de sus principales diIicultades del 'robot movil es determinar su posicion
dentro de una zona determinada. Se pueden realizar estimaciones segun una posicion
inicial por metodos odometricos, o bien utilizar mecanismos de posicionamiento
basados en el sistema de percepcion de que disponga; existen multitud de sistemas
sensores como sonar, laser, inIrarrojos, radares, etc. 3], aunque no es el unico Iin de
estos, ya que la percepcion del robot le ha de servir para interaccionar con los
elementos del ambiente.

Todo robot movil se debe plantear las dos preguntas basicas: Donde estoy?
Como llego al objetivo?. Sin duda para resolver estas cuestiones se debe recurrir a la
planiIicacion de movimientos por medio de actuadores del sistema y a tecnicas de
planiIicacion, manteniendo quizas una representacion del ambiente por el que se
mueve.

En sintesis, el uso de los robots esta justiIicado en aplicaciones en los que se
realizan tareas molestas o arriesgadas para el trabajador humano; entre ellas el
transporte de material peligroso, las excavaciones mineras, la limpieza industrial o
inspeccion de plantas nucleares son ejemplos en donde el robot movil puede
desarrollar su labor y evitar exponer la salud del trabajador. Otro tipo de aplicaciones
donde este tipo de robots complementa la actuacion del operador lo componen las
labores de vigilancia, de inspeccion o asistencia a personas incapacitadas 25].
Asimismo en, aplicaciones de tele operacion donde existe un retrazo sensible a las
comunicaciones, resulta interesante el uso de vehiculos con cierto grado de autonomia

Asimismo, la aplicacion de robots industriales esta ampliamente extendida en
todo tipo de Iabricas y empresas industriales, obteniendo con ellos reduccion de costos,
aumento de la productividad, mejora de la calidad en la produccion y eliminacion de
condiciones peligrosas de trabajo o mejora de las mismas 10]. De este modo, la
empresa industrial, a traves de inversiones tecnologicas en el campo de la
automatizacion industrial, podra aumentar su competitividad en el mercado, en caso de
no aplicar la tecnologia robotica en sus procesos de Iabricacion esta, con el riesgo de
quedarse rezagada en el mercado.
La potencia del soItware en el controlador determina la utilidad, inteligencia y
Ilexibilidad del 'robot movil; dentro de las limitantes del diseo mecanico y la
capacidad de los sensores por lo que deben ser clasiIicados de acuerdo a su
generacion, a su nivel de inteligencia, control y del lenguaje de programacion 29].
Esta clasiIicacion reIleja la potencia del soItware en el controlador, en particular, la
soIisticada interaccion de los sensores.
Cada aplicacion del sistema 'robot lleva consigo su propia problematica y sus
soluciones aIines; no obstante muchos diseadores consideran que la automatizacion
de procesos a traves de robots esta en sus inicios, es un hecho innegable que la
introduccion de la tecnologia robotica en la industria, ya ha causado un gran impacto.
Es necesario hacer mencion de los problemas de tipo social, economicos e incluso
politico, que puede generar una mala orientacion de robotizacion de la industria. Se
hace indispensable que la planiIicacion de los recursos humanos, tecnologicos y
Iinancieros se realice de una manera inteligente.
1.3 Mercado de la robtica y perspectivas futuras.
Las ventas anuales de robots industriales en Estados Unidos y Japon paises
potenciales en desarrollo de robots, se ha incrementado a razon del 27.5 de acuerdo a
estadisticas del ao 1981 a 2002 22], 31]. El incremento de esta tasa se debe a
Iactores diversos, entre ellos:
El desarrollo de la microelectronica permite obtener cada vez dispositivos
electronicos integrados programables 'Iull custom y 'semi-custom de mayores
niveles de integracion por circuito integrado; asi como el desarrollo de
herramientas computacionales, permitiendo obtener diseos mas complejos y
eIicientes en el menor tiempo y bajo costo 11].
'Full-custom son aquellos dispositivos electronicos integrados que han sido
desarrollados totalmente por el diseador hasta el nivel de transistores de un modo
totalmente personalizado.
'Semi-custom son dispositivos electronicos integrados cuyo diseo esta limitado
a las posibilidades de la estructura preIabricada y se realiza con base en una
biblioteca de celdas pre-caracterizadas para cada Iamilia de dispositivos.
Se incrementa el numero de potencial humano en la industria que tienen
conocimiento de la tecnologia robotica y su eIicacia para multiples aplicaciones de
gran utilidad.
La tecnologia de la robotica mejora progresivamente, con la aplicacion de
dispositivos programables (inteligencia artiIicial), de manera que permiten a los
'robots desarrollar tareas mas complejas y ser mas amistosos con el usuario,
sencillos de interactuar con diversos sistemas Iisicos.
El mercado de los 'robots crece, y su demanda se extiende en todas las areas del
conocimiento humano expandiendose mas alla de las grandes empresas y llega a
las pequeas empresas, asi como a los hogares.
En la Figura No 1.1 se muestra la estadistica del volumen de ventas en el
mercado de la robotica desde el ao 1995 y su proyeccion hasta el ao 2025.

Figura No 1.1 Mercado de comercializacion de los robots y sus perspectivas 40].
La robotica es una tecnologia con multiples perspectivas para el Iuturo; si
continuan las tendencias actuales y si los estudios de investigacion en el laboratorio
actualmente en curso se convierten Iinalmente en una tecnologia Iactible, asi como el
desarrollo de la microelectronica y nanoelectronica; los 'robots del Iuturo seran
unidades moviles con mayores recursos, capacidades de sensores multiples y con
mayor nivel de inteligencia para el procesamiento de datos y de calculo que las
grandes computadoras actuales. Seran capaces de procesar seales que le brinden a los
'robots la caracteristica sensorial humana (Vision, audicion, olIato, tacto, gusto) y
desplazarse de modo totalmente autonomo 25].






CAPITULO 2


TCNICAS DE DISEO DIGITAL AVANZADO Y
DESCRIPCIN DEL SISTEMA A DISEAR


2.1 Diseo digital avanzado y metodologa de diseo.

El desarrollo de la tecnologia microelectronica ha hecho posible un crecimiento
exponencial de la densidad de integracion de transistores por circuito integrado,
teniendo como uno de los principales eIectos, la miniaturizacion de estos dispositivos
semiconductores, asimismo la estandarizacion en los procesos de Iabricacion y el
diseo asistido por computadora utilizando herramientas de soItware cada vez mas
potentes, permitiendo desarrollar cierto nivel de abstraccion en el proceso de diseo de
los componentes electronicos 16].

Es un proceso que se inicio con la Iabricacion del primer transistor (1948),
continuando con la Iabricacion del primer circuito integrado SSI (Small Scale
Integration, integracion en pequea escala) realizado a Iinales de la decada de los aos
50 del siglo pasado, hasta llegar al diseo VLSI (Very large Scale Integration,
integracion a muy grande escala) 1]. Los circuitos electronicos han tenido diIerentes
metodologias de diseo; algunos de los cuales han desaparecido, otros se mantienen
aun vigentes y otros han evolucionado haciendo que su presencia sea mas notoria en
los nuevos sistemas electronicos actuales.

Entre las diIerentes metodologias de diseo podemos mencionar a los sistemas
digitales basados en:

Los Circuitos Integrados de Aplicacion EspeciIica (ASIC)

Celdas Normalizadas (Standar Cell)

Arreglo de Compuertas (Gate Array)

Arreglo de Compuertas Programable en Campo (FPGA)

Dispositivos Programables Complejos (CPLD)

Arreglo de Objetos Programable en Campo (FPOA)

Microprocesadores, microcontroladores, procesadores digitales de seales.

En la decada de los aos 80 del siglo pasado los Iabricantes de circuitos
integrados consideraban como metodologias de diseo para la implementacion de
sistemas electronicos las cinco primeras arquitecturas (Ver Figura 2.1). De los cuales
el diseo utilizando las celdas normalizadas y arreglo de compuertas (Standard Cell y
Gate Array) se utilizan en menor cantidad debido a que la implementacion Iinal
depende de los Iabricantes.


Figura 2.1 Metodologias de diseo segun escala de integracion de ICs.

- -C CK KT TO OS S L LS SI I. .
- -M ME EF F ~ ~1 16 6 s ss s. .
- -P Pe eq q m me em mo or ri ia as s.
- -r re eg gi is st tr ro os s~ ~1 10 00 0
- -F Fu un nc c. . C Co om mp pl le ej ja as s. .
- -M Me em mo or ri ia as s. .
L Lo og gi ic ca a d di ig gi it ta al l
d de e a al lt ta a d de en ns si id da ad d
A Al lt ta a d de en ns si id da ad d
A Al lt to o v vo ol lu um me en n
A An na al lo og go o/ /D Di ig gi it ta al l
A Al lt ta a p pe er rI Io or rm ma an nc ce e
M Mu uy y a al lt to o v vo ol lu um me en n
C CP PL LD D
F FP PG GA A
G GA AT TE E
A AR RR RA AY Y
C CE EL LL L
B BA AS SE ED D
A AS SI IC C

Por otro lado desde el desarrollo de los dispositivos FPGAs en 1985, es posible
que cada vez, se diseen sistemas electronicos programables utilizando dispositivos
integrados de mayores escalas de integracion, asi como el desarrollo y uso de
herramientas de sintesis y simulacion muy potentes que practicamente se puede
considerar de un diseo digital con la ventaja de que es el usuario quien se encarga de
deIinir el comportamiento Iinal del circuito integrado 15].
Las ventajas del uso de la logica programable son:

Reduccion de espacio en placa.
EIicacia en el costo.
Diseo rapido del sistema.
Flexibilidad en el diseo.
Facil cambio en el diseo.
Alta velocidad.
Amplio campo de programacion.
Inventario pequeo.
Seguridad contra copias.

Figura 2.2 Ciclos de desarrollo de un ASIC vs. FPGA

Los ciclos de desarrollo incrementan los ingresos de manera potencial (la
especiIicacion, la implementacion, la veriIicacion, el prototipado y la evaluacion),
como se muestra en la Figura 2.2, haciendo posible que los productos basados en
FPGA esten en el mercado en el menor tiempo posible.

2.2 Caractersticas del ASICs. vs. FPGA.

La denominacion de ASIC (Application SpeciIic Integrated Circuit, Circuito
integrado de aplicacion especiIica), implica que se ha desarrollado un alto grado de
densidad de integracion debido a la sustitucion de otros circuitos integrados estandar
los cuales tenian en conjunto, una Iuncion especiIica en el sistema electronico al que
pertenecia. Pero esta implicancia ha evolucionado en el tiempo de tal Iorma que en la
actualidad tiene una connotacion mas amplia y se reIiere a diseos de alta perIormance
logrados gracias a los diseadores, quienes utilizando herramientas computacionales
soIisticadas pueden cubrir la demanda cada vez mas creciente que requiere el mercado
respecto a las prestaciones, Iuncionabilidad, caracteristicas personalizadas y
complejidad. Actualmente se entiende que un circuito integrado de aplicacion
especiIica tiene componentes tales como transistores con parametros que satisIacen las
necesidades del diseador quien se encarga de 'modelar al componente brindandole
una 'personalidad distinta de lo que poseen los dispositivos comerciales estandar, de
este modo se logra un dispositivo integrado con caracteristicas 'muy personalizados
respecto a sus parametros electricos y de arquitectura..


Por lo mencionado, se plantean diIerentes tipos de ASICs, los que dependen de
la herramienta que lo origino y la metodologia de diseo que se utilizo; por lo que se
puede aIirmar que cada tipo de ASIC puede ser desarrollado e implementado en una
variedad de Iormas, brindando a los diseadores actuales alguna ayuda para adoptar
decisiones sobre costos balanceados, Iuncionamiento, tecnologias utilizables tales
como : CMOS, ECL bipolar, TTL bipolar y el Galio-Arsenico; podran ser
seleccionados para suministrar al diseador ASIC, la Ilexibilidad necesaria para
desarrollar dispositivos optimos respecto a densidad, velocidad y potencia disipada.

Respecto a la clasiIicacion de los ASICs se puede mencionar, que hay varias
Iormas de eIectuar, considerando diversos Iactores, entre ellos la tecnologia de
Iabricacion, arquitectura de diseo, velocidad, capacidad de almacenamiento, tipos de
soportes, etc. Las industrias especializadas estan de acuerdo de los tipos Iundamentales
de circuitos integrados para ser de aplicacion especiIica 16].


a) Celdas Normalizadas (Standar Cell)

b) Arreglo de Compuertas (Gate Array)

c) Arreglo de Compuertas Programable en Campo (FPGA)

d) Dispositivos Programables Complejos (CPLD)

e) Arreglo de Objetos Programable en Campo (FPOA)

I) Full Custom


En la categoria 'Full-custom el diseador es responsable por el diseo de todas
las capas del circuito integrado que participan hasta en mas de 30 procesos separados.
Estos dispositivos totalmente personalizados (Full-custom) incluyen la posibilidad que
las celdas logicas como las mascaras durante el proceso de diseo sean personalizados.
Un microprocesador es un claro ejemplo de un circuito totalmente personalizado, los
diseadores pasan muchas horas optimizando el area del microprocesador haciendo
este proceso muchas veces de manera manual. Personalizar todas las caracteristicas de
un circuito integrado a los diseadores les permite por ejemplo incluir circuitos
analogicos, optimizacion de celdas de memoria o estructuras mecanicas en un CI. Los
circuitos totalmente personalizados son muy costosos en el diseo y en la Iabricacion.
El tiempo dedicado a la Iabricacion de un chip totalmente personalizado (Es el tiempo
necesario para desarrollar el chip, no incluye el tiempo de diseo) es tipicamente 8
semanas. Estos circuitos especializados para una aplicacion especiIica son llamados
'Full-custom ASIC 15], 17].

Las primeras categorias son considerados circuitos integrados 'Semi-custom
porque permiten omitir determinados segmentos del proceso de diseo en la etapa de
Iabricacion y son controlados o pueden ser personalizados por el diseador.
Adicionalmente tenemos las celdas logicas prediseadas y hay cierta posibilidad de
que las mascaras sean personalizadas. Utilizando estas celdas pre-diseadas de una
biblioteca de celdas hace que el diseo sea mucho mas Iacil de realizar. Tenemos dos
tipos de ASIC parcialmente personalizados: los ASIC basados en celdas normalizadas
(Standard Cell) y los ASICs basados en arreglo de compuertas (Gate Array). Teniendo
en cuenta esto describimos a los ASICs semi-programables, para lo cual todas las
celdas logicas son prediseadas y ninguna de las caras de las mascaras estan
personalizadas.

Tambien tenemos a dos nuevos tipos de ASIC totalmente programables: los
dispositivos logicos programables (PLD) y los arreglos de compuerta programable en
campo (FPGA). Realizando una sintesis, entre los diIerentes dispositivos de ASIC
tenemos:

Tipo de ASIC Familia / Miembro
Personalizacin
de las
mscaras
Personalizacin
de celdas
lgicas
Totalmente
personalizados
Analgico/Digital Total Algunos
Parcialmente
personalizados
Basado en celdas (CBIC) Total Ninguno
Basado en mscaras de
arreglo de compuertas
(MGA)
Algunos Ninguno
Programables
Arreglo de compuertas
programable en campo
(FPGA)
Ninguno Ninguno
Dispositivo Lgico
Programable (PLD)
Ninguno Ninguno

Tabla 2.1 Tipos de ASICs segun arquitectura de Iabricacion, 28].






2.2.1 Diseo de ASIC.

Para disear un ASIC (Circuito Integrado de Aplicacion EspeciIica) 28], 30],
31], los pasos que normalmente se realizan son los siguientes:

Entrada de diseo: Introduccion del diseo en un entorno de procesamiento
ASIC utilizando un lenguaje de descripcion de hardware o bien una entrada de
esquematicos.

Sntesis lgica y/o analgica: Utilizando un sintetizador logico automatico es
posible producir un listado (Netlist) que describe la logica y sus conexiones. Por el
contrario las partes analogicas deben sintetizarse manualmente, si bien existen
algunas herramientas en Iase de desarrollo que permiten algun tipo de sintesis
automatica analogica.

Particin del sistema: Division del sistema en secciones que puedan ser
implementadas independientemente y luego realizar la conexion entre si.

Simulacin pre-layout: Comprobacion de que el diseo Iunciona correctamente.

Planificacin de la superficie: Distribucion de los bloques del ASIC sobre la
superIicie del chip.
Colocacin: Distribucion de las celdas dentro de un bloque.

Conexionado: Realizacion de las conexiones entre celdas y bloques.

Extraccin: Obtencion de los modelos electricos de las interconexiones y
elementos electricos de las interconexiones y elementos parasitos del circuito a
partir de las mascaras y los parametros del proceso de Iabricacion.

Simulacin post-layout: Comprobacion de que el diseo Iunciona correctamente
una vez incorporado el eIecto de las interconexiones y elementos parasitos.




















Figura 2.3 Etapas de proceso de diseo de un ASIC 16].


2.2.2 Caractersticas de FPGA.

Los FPGA (Field Programmable Gate Array, arreglo de puertas programable en
campo) contiene bloques logicos CLB (ConIigurable Logic Block, bloque logico
conIigurable) relativamente independientes entre si (Ver Figura 2.4). Estos bloques
logicos pueden interconectarse mediante conexiones programables para Iormar
circuitos mayores e individualmente son mas pequeos que una macrocelda en un PLD
(Programmable Logic Device, dispositivo logico programable). Los CLB`s se
encuentran distribuidos a traves de todo el chip. Entre los principales Iabricantes de
FPGAs tenemos: Xilinx, Altera, Pluslogic, Cypress, Actel, etc. 20].

El primer FPGA lo introdujo Xilinx en el ao 1985. La programacion de los
FPGAs de Xilinx estan basados en celdas SRAM, por lo que cada vez que se aplica el
voltaje de alimentacion, se reconIigura con la inIormacion que lee desde una PROM
externa al FPGA o desde el computador. Un FPGA basado en SRAM admite un
numero ilimitado de reconIiguraciones sin necesidad de borrados previos 24].











Figura 2.4 Arreglo Logico Programable en Campo (FPGA)

El elemento logico basico del FPGA es el CLB, quien es el encargado de
implementar una Iuncion logica en base a un circuito llamado 'Tabla de Busqueda o
simplemente LUT (Look Up Table), el cual es un multiplexor trabajando como un
generador de Iunciones. En la Figura 2.5 se muestra un ejemplo de la implementacion
de un circuito combinacional o secuencial en base a un LUT.



















Figura 2.5 Implementacion de un circuito en base a un LUT

El multiplexor de 16 entradas y una salida tiene la ventaja que implementa todas
los productos logicos que se requieran con 4 variables de entrada que vienen a ser los
selectores del multiplexor.

Una 'Tabla de Busqueda (LUT) se puede comportar como varios circuitos en
uno; entre ellos:

Permite generar Iunciones (Figura No. 2.6), almacenando la tabla de verdad del
circuito a implementar con 4 variables. El inconveniente que tiene es que no puede
implementar circuitos con muchas variables de entrada. Respecto al retardo de la
Tabla de busqueda es constante.













Figura 2.6 Implementacion de un circuito combinacional en base a su
tabla de verdad.

Se puede comportar como una memoria con una capacidad de 16 x 1 bit. Se puede
visualizar en la Figura 2.6 que las entradas (A, B, C y D) de la tabla de verdad se
pueden interpretar como las direcciones de una memoria y la salida (Z) seria el
dato almacenado en cada una de las posiciones de la memoria.

Se puede conIigurar como un registro de desplazamiento de 16 bits, teniendo un
retardo de 16 periodos de reloj para la salida Q15 (Figura No. 2.7).






















Figura 2.7 Tabla de busqueda como registro de desplazamiento.


2.3 Herramientas computacionales para el diseo digital avanzado.

El diseo digital avanzado es un conjunto de tecnicas asistidas por computadora
que permiten metodos de diseo eIiciente de circuitos de alta complejidad y
rendimiento como son los FPGAs.

Los objetivos del diseo digital avanzado son:

Gestionar la complejidad: reduciendo el esIuerzo humano, ya que las herramientas
actuales utilizan compiladores que traducen a nivel de ecuaciones una descripcion
de un circuito de un lenguaje de descripcion de hardware.

Incrementar la productividad reduciendo el ciclo de diseo y por tanto el tiempo
de lanzamiento de los productos. Hasta hace algunos aos atras la mayor diIicultad
que encontraban los diseadores era la posibilidad de integrar diseos complejos en
tiempos cada vez mas cortos.

Aumentar la calidad del circuito en terminos de rendimiento (velocidad), costes
(area), consumo de potencia y Iiabilidad, evaluando un mayor numero de
diseos y reduciendo errores mediante la automatizacion.

Por lo mencionado se puede aIirmar que, para tener exito en el diseo de
circuitos integrados de alto nivel se requieren:

a. Una metodologia adecuada, que consiste en el conjunto de tareas a realizar durante
el diseo y el orden en que deben ser realizadas.

b. El uso de un lenguaje de descripcion de hardware potente que sea independiente
de la metodologia de implementacion, como el VHDL (Very High Description
Language).

c. De un conjunto de herramientas de las cuales se destacan las de simulacion y
sintesis.


El termino diseo asistido por computadora CAD (Computer Aided Design,
diseo asistido por computador) y CAE (Computer Aided Engineering, ingenieria
asistido por computador); se utilizan para hacer reIerencia a las herramientas de
soItware que nos ayudan a desarrollar la industria microelectronica. 'CAD es el
termino mas general y se aplica a las herramientas que se utilizan en la electronica con
relacion al diseo Iisico, tales como programas de composicion de circuitos integrados
IC (Integrated Circuit, circuito integrado) y PCB (Printed Circuit Board, tarjetas de
circuito impreso). 'CAE se usa con Irecuencia para reIerir a las herramientas de
diseo conceptual, tales como editores de diagramas esquematicos, simuladores de
circuitos y compiladores PLD, pero sin embargo se pueden usar en Iorma
intercambiable.



En las decadas pasadas, era Irecuente en el diseo digital utilizar los diagramas
esquematicos mediante el uso de bloques o diagramas circuitales; sin embargo el
surgimiento de los lenguajes de descripcion de hardware ligado a los dispositivos de
logica programable y la tecnologia ASIC a gran escala genero una transIormacion
radical al procedimiento para el desarrollo de diseos digitales cada vez mas
complejos.

En el diseo de un 'soItware (Programa de aplicacion) los lenguajes de
programacion de alto nivel han incrementado el nivel de abstraccion de modo que los
programadores pueden disear sistemas cada vez mas extensos y complejos, en
comparacion con los programas en lenguaje ensamblador desarrollado manualmente.
La situacion en el diseo del hardware es muy similar a lo mencionado, utilizando
herramientas de sintesis VHDL y Verilog permiten desarrollar dispositivos y
verdaderos sistemas hardware cada vez mas extensos, con el cual podemos optimizar
los millones de compuertas logicas que oIrecen las tecnologias mas avanzadas ASIC y
FPGA.

El uso de los HDL (Hardware Description Language, lenguaje descriptivo de
hardware) se han incrementado gracias a la disponibilidad de las herramientas de
sintesis, pero los lenguajes no sintetizables ya existian desde hace algun tiempo.

Estas herramientas normalmente utilizan uno de los modelos siguientes para cada
elemento logico 18]:

a) Modelo de comportamiento:

En este tipo de modelo, el soItware 'decodiIica la Iuncion basica del elemento
logico. Por ejemplo en una compuerta OR EXCLUSIVA producira una salida '1 con
retardo t pLH despues de que sus entradas son diIerentes y producira una salida '0
con retardo t pHL despues de que sus entradas son iguales.



b) Modelo Estructural:

En este modelo los elementos mas grandes pueden ser modelados al conectar
grupos de elementos mas pequeos que tengan modelos de comportamiento.

El lenguaje VHDL utiliza ambos tipos de modelos, por lo que se conoce como
modelos de soItware debido a que el comportamiento del circuito integrado es
simulado enteramente mediante un soItware; muchos circuitos integrados incluyendo
los microprocesadores y otros tipo VLSI requieren enormes modelos de soItware, que
por lo general los Iabricantes no proporcionan tales modelos (Son considerados
inIormacion conIidencial). Para evitar este problema las empresas innovadoras de
CAD han desarrollado un tercer modelo:

c) Modelo Fsico:

Denominado modelo de Hardware. En este modelo la copia real y Iuncional de
un circuito integrado se conecta a la computadora que ejecuta la simulacion; el
simulador aplica entradas al circuito integrado real y observa las salidas, los que se
pueden utilizar como entradas para otros modelos en la simulacion. En la Figura 2.8 se
muestra la estructura Iuncional del diseo digital avanzado.

Con el crecimiento cada vez mas complejo de los diseos digitales ha generado
la necesidad de describir los circuitos digitales de la Iorma mas eIiciente y sencilla: Un
lenguaje de descripcion que oIrece la posibilidad de un alto nivel de abstraccion
adecuado entre todos sus similares es el VHDL, el que alcanzo mayor aceptacion entre
los diseadores, por ser un estandar y un campo amplio de aplicaciones, desde el
modelado para la simulacion de circuitos, hasta la sintesis automatica de circuitos.








Figura 2.8. Estructura Iuncional del diseo digital avanzado 18].

Las ventajas mas importantes del VHDL son:

a) Permite disear y modelar un sistema en varios niveles de
abstraccion: Ilujo de datos, estructural y algoritmico.

b) Una descripcion en VHDL es independiente de la implementacion
Iinal del proyecto. Puede ser sintetizado sobre un FPGA o un ASIC.
Incluso puede servir para simulacion exclusivamente.

c) Permite el diseo Top-Down y modular, es decir dividir un sistema
complejo en subsistemas mas sencillos, tantas veces como sea
necesario hasta poder resolver cada modulo (subsistema) por
separado. Ello Iacilita la prueba de cada modulo en Iorma
independiente y da mas seguridad al correcto Iuncionamiento del
sistema Iinal.

d) Es un estandar (IEEE Std 1076-1987,IEEE Std 1076-1993). No
obstante, hay que pedir que cada Iabricante muestre sus propias
librerias con Iunciones utiles no deIinidas en el estandar. En el
presente trabajo se utiliza con el estandar del ao 1993.

Inicialmente VHDL, Iue diseado para el modelado de circuitos digitales, su
aplicacion en sintesis (implementacion hardware) no Iue inmediata, aunque la
soIisticacion de las actuales herramientas es tal que permite implementar diseos en un
alto nivel de abstraccion. En los capitulos siguientes se aplican los Iundamentos del
VHDL pensando en su uso para programar dispositivos de tipo PLD o ASIC; no
conviene olvidar que el VHDL en si mismo no esta asociado a ningun dispositivo
programable, es una descripcion de un circuito electronico en alto nivel.

De cualquier modo, una descripcion que sea sintetizable es casi siempre valida
para simulacion, mientras que una descripcion para simulacion puede tener mas
problemas en el proceso de compilacion sobre un dispositivo hardware.

Las herramientas mas utilizadas son el Max Plus II del Iabricante Altera, el
cual admite entradas VHDL, sintesis en PLD de Altera, asi como simulacion de los
Iicheros Iuente para programar los PLD (Ficheros jedec, jed o poI). Es una
herramienta muy potente que tiene ademas ventajas con captura esquematica,
analizador de tiempos y posibilidad de interIase con herramientas de otros Iabricantes.
Y el Quartus II de Altera, el cual es una herramienta potente para simulacion y sintesis
de circuitos secuenciales con herramientas aun mas potentes.

Del Iabricante Xilinx, se tienen el Web Pack Project Navigator, el cual admite
entradas VHDL, sintesis en PLD, con mas herramientas de sintetizacion, y el
ModelSim de Mentor Graphics, herramienta muy potente de simulacion digital.






2.4 Anlisis y descripcin del esquema en bloques del sistema
propuesto.

Para realizar el diseo del sistema para la programacion de un robot movil en
primer lugar se analizo el sistema de posicionamiento, ya que la electronica a disear
debe generar el desplazamiento del 'robot movil de un punto de origen a un punto de
destino. Para ello se debe tener en cuenta el recorrido que deberia seguir hasta llegar al
objetivo. Para lograr este objetivo se debe tener un punto de reIerencia de donde se
deberian realizar las mediciones de la trayectoria recorrida (Figura 2.9).














Figura 2.9 Posible trayectoria del 'robot movil

La inIormacion del punto Iinal debe ser conIigurado (programado), desde el
computador, el robot movil debe recibir esta inIormacion e iniciar su desplazamiento,
mostrando en 'displays visualizadores en todo momento el desplazamiento
realizado. Por lo que el diagrama de bloques del sistema desarrollado se muestra en la
Figura 2.10, en donde se indican los diIerentes subsistemas a disear como son:

Subsistema de InterIaz de comunicacion con el computador.
Subsistema de programacion y control del robot.
Subsistema de detector de posicion del robot.
Subsistema de monitor de posicion del robot.
Subsistema de control de motores de paso a paso.





















Figura 2.10 Diagrama de bloques del sistema para la programacion del 'robot
movil

A continuacion se describen las Iunciones que realizaran cada subsistema y los tipos de
seales de entrada y salida que manejara cada uno de ellos.

2.4.1 Subsistema interfaz de comunicacin computador - FPGA.

Este subsistema tiene como Iuncion recibir las coordenadas del punto Iinal del
desplazamiento del 'robot movil. Para la comunicacion se utilizara el puerto de
comunicacion serial asincrono RS-232 que tienen todos los computadores, por lo que
este subsistema consiste en el diseo de un receptor UART que sea capaz de trabajar
con las diIerentes velocidades estandar de comunicacion: 1200bps, 2400bps, 4800bps,
etc. El diseo del receptor UART debe considerar el Iormato de los datos en una trama
UART como son la presencia de los bits de inicio y parada.




2.4.2 Subsistema detector de posicin del robot.

Este subsistema sensorial es muy importante ya que, le indicara al 'robot movil;
donde se encuentra ubicado haciendo que el 'robot movil active los motores paso a
paso para llegar al punto Iinal. Este subsistema estara Iormado por un circuito de
comunicacion serial PS/2 de tal manera que interactua con la electronica que poseen el
'Mouse de una computadora. Se aprovechara el mecanismo de ubicacion que poseen
estos dispositivos para que el 'robot movil encuentre su punto de reIerencia con
respecto al punto Iinal. Hay que tener en cuenta que los comandos de comunicacion ya
estan establecidos por los Iabricantes del dispositivo (Mouse) y es el que se utilizara
para lograr este Iin.

2.4.3 Subsistema de control y programacin del robot.

Es la unidad encargada de gobernar a los otros subsistemas ya que es aqui donde
se analiza el desplazamiento a realizar por el robot movil. Consiste en una maquina de
estados que esta pendiente de la posicion del punto de origen y la posicion desplazada
por el movil para llegar al punto Iinal.

2.4.4 Subsistema monitor de posicin del robot.

Es la unidad encargada de mostrar en un panel visualizador con 'displays
numericos de 7 segmentos, la distancia recorrida por el 'robot movil. Tambien se
visualizara la inIormacion que se envia desde el 'mouse hacia el sistema digital
(FPGA) la posicion en que encuentra a partir del punto de origen hasta llegar al punto
Iinal.

2.4.5 Subsistema de control de motores paso a paso.

Es el encargado de generar las seales de control y mando para los motores paso
a paso. Esta Iormado por una maquina de estados para generar la secuencia
correspondiente de acuerdo a donde se ubique el punto Iinal.



2.5 Funcionamiento del sistema a disear.

El Iuncionamiento del sistema a disear, se puede sintetizar en los pasos
siguientes:

El robot movil se ubica en un determinado punto de origen (o reIerencia) dentro
del area en la cual se puede desplazar.

Espera a que, desde el computador se le envie las coordenadas del punto Iinal.


Con esta inIormacion el 'robot movil inicia la activacion de los motores paso a
paso orientandose por el desplazamiento positivo o negativo (avance o retroceso)
realizado desde el punto de origen o reIerencia hasta el punto Iinal.

Llega al punto Iinal y se detiene hasta la espera de enviarle nuevas coordenadas.
Por las caracteristicas de diseo del 'mouse se debe tomar en consideracion,
que el punto donde se detiene el 'robot movil sera su nuevo punto de reIerencia.





CAPITULO 3

DISEO DEL SISTEMA DE PROGRAMACIN DEL
ROBOT


3.1 Generalidades.

Las caracteristicas de la tarjeta de desarrollo utilizada para este proyecto son:

1. Un FPGA con codigo XC3S200E de 256 pines del tipo BGA (Ball Grid Array)
equivalente a 200,000 compuertas.
2. Memoria PROM (PlatIorm Flash) de 2Mbits XCF02S que se utiliza como
memoria de conIiguracion para el FPGA.
3. Jumper de conIiguracion para el FPGA, para lectura de datos de la PROM o
conIigurar al FPGA para otras Iuentes..
4. Memoria SRAM de 1 Mbyte; asincrona IS61LV25616AL-10T de 10ns.
5. Puerto VGA de 3 bits para 8 colores.
6. Puerto serial RS-232 de 9 pines.
7. Driver Transmisor/Receptor MAX232.
8. Segundo canal del Transmisor/Receptor RS-232.
9. Puerto PS/2 para teclado o mouse.
10. Cuatro displays numericos de 7 segmentos del tipo de anodo comun.
11. Ocho 'switchs conmutadores.
12. Ocho Leds de salida.
13. Cuatro pulsadores 'push button de contacto abierto.
14. Oscilador a cristal de 50 Mhz.
15. Zocalo para un segundo oscilador a cristal.
16. Pulsador 'push button para seleccionar modo de conIiguracion del FPGA.
17. Pulsador 'push button para Iorzar la reconIiguracion del FPGA.
18. Led que indica cuando el FPGA ha sido conIigurado satisIactoriamente.
19,20,21. Puertos de expansion del 'Spartan-3 con conectores de 40 pines.
22. Puerto JTAG.
23. Cable de carga de bajo costo.
24. Puerto JTAG para la conIiguracion del FPGA.
25. Adaptador para alimentacion de 5V DC a la tarjeta.
26. Led indicador de 'Power-on
27. Regulador de voltaje de alimentacion de 3.3 V DC.
28. Regulador de voltaje de alimentacion de 2.5 V DC.
29. Regulador de voltaje de alimentacion de 1.2 V DC.

En la Figura 3.1 se muestra el diagrama en bloques del planteamiento inicial del
sistema de control del 'robot movil, en el cual se consideran el FPGA alimentado
desde el computador a traves del puerto serial con el interIaz MAX 3232, asi como las

Figura 3.1 Diagrama de interconexion del FPGA XC3S200E
con los dispositivos planteados en el diseo.




Figura 3.2 Vista superior de la tarjeta de desarrollo.


Figura 3.3 Vista inIerior de la tarjeta de desarrollo.
seales generadas del sensor de posicion (mouse de computador); a partir de estos
datos, el sistema de control propuesto debe generar inIormacion de la programacion
del 'robot movil (posicion Iinal que debe alcanzar), iniciando la energizacion a traves
de 'drivers (ampliIicadores de corriente) de los motores paso a paso que permitiran
desplazar al 'robot movil; simultaneamente el sistema permitira visualizar a traves de
los 'displays numericos la posicion actual del 'robot movil ' en tiempo real, hasta
alcanzar el objetivo (llegar al punto Iinal) especiIicado en la programacion del sistema.

3.2 Diseo del interfaz de comunicacin computador-FPGA.

En el modulo SPARTAN-3 se dispone un MAX3232 que es un circuito
integrado cuya Iuncion es de adaptar las seales de salida/entrada digital del FPGA a
niveles electricos del estandar RS-232 capaces de transmitir y recibir inIormacion
serial asincrona desde cualquier sistema que soporte tambien este tipo de
comunicacion.

En la Figura 3.4, se muestra el MAX3232 y la interconexion con el FPGA.






















Figura 3.4 Conexion del Puerto RS-232 con el FPGA utilizando el MAX3232.

Se implementa el modulo UART en el FPGA para que establecer la comunicacion
con una computadora personal (PC), a partir del cual, el FPGA recibira los valores
'X,Y (coordenadas para la ubicacion Iinal del movil).

En primer lugar se realiza el diseo de un generador de baudios conIigurable para
que las comunicaciones se realicen a las siguientes velocidades:
1200 bps (duracion de un bit: 833.3333 us)
2400 bps (duracion de un bit: 416.6667 us)
4800 bps (duracion de un bit: 208.3333 us)
9600 bps (duracion de un bit: 104.1667 us)
19200 bps (duracion de un bit: 52.0833 us)
38400 bps (duracion de un bit: 26.0416 us)
57600 bps (duracion de un bit: 17.3611 us)
115200 bps (duracion de un bit: 8.6805 us)

Como el oscilador que utiliza el modulo SPARTAN-3 es de 50MHz, se debe
generar a partir de esta Irecuencia, la seal de reloj para el generador de baudios.

3.2.1 Seales de entradas y salidas del interfaz

El generador de baudios a implementar debe tener las siguientes entradas y
salidas:



Figura No 3.5 Circuito generador de baudios del puerto serial



Donde:

Baud2:0~ : entrada de tres bits para seleccionar la velocidad de
comunicacion en bits por segundo (bps).
BAUD Vtx/rx
000 115200 bps
001 57200 bps
010 38400 bps
011 19200 bps
100 9600 bps
101 4800 bps
110 2400 bps
111 1200 bps


Clk : Entrada de reloj de 50 Mhz.
ClrDiv : Entrada de reset para el generador de reloj del
Receptor.
Reset : Entrada de reinicio del generador de baudios.
ClkRx : Frecuencia de recepcion.
ClkTx : Frecuencia de Transmision.
Top62 : Salida de reloj para el modulo receptor.

El diagrama con los diIerentes procesos a implementar en VHDL para generar
las velocidades de transmision y recepcion, se muestra en la Figura 3.6; donde se va a
generar una seal periodica de acuerdo a la Irecuencia de bits por segundo (bps). La
velocidad de Transmision (ClkTx) sera de acuerdo al valor que indique la seal
'baud.
Para generar la velocidad de recepcion se duplicara la velocidad de baudios por
segundo. La razon de duplicar esta Irecuencia es para eliminar la posibilidad de que
una seal de interIerencia (ruido) haga que el circuito responda de una manera erronea
al bit de START. Para tener una mayor seguridad se podria haber aumentado la
velocidad de baudios por segundo de tal manera de asegurar el tiempo que dura cada
uno de los bits que se esten recibiendo.





Figura 3.6: Diagrama con los procesos a implementarse en VHDL para generar las
velocidades de Tx y Rx.

Velocidad
(bps)
Tiempo de bit
(seg)
T = 20ns
(Osc=50MHz)
Nmero de
cuentas
Divisor / 62
Nmero de
cuentas
1200

0.000833333 0.00000002 41,666.67 672.04 671
2400

0.000416667 0.00000002 20,833.33 336.02 335
4800

0.000208333 0.00000002 10,416.67 168.01 167
9600

0.000104167 0.00000002 5,208.33 84.01 83
19200

0.000052083 0.00000002 2,604.17 42.00 41
34800

0.000028736 0.00000002 1,436.78 23.17 22
57600

0.000017361 0.00000002 868.06 14.00 13
115200

0.000008681 0.00000002 434.03 7.00 6

Tabla 3.1 Velocidades y numero de cuentas a realizar en el diseo del modulo UART.


3.2.2 Anlisis del diseo y operacin del interfaz (mod_receptor)

Luego del diseo del generador de baudios se procede con el diseo de la unidad
de recepcion; en el cual vemos que el modulo 'receptoruart trabajara con la seal
(CLKRX) al doble de la Irecuencia de la seal de reloj de transmision (CLKTX)
para veriIicar que los datos recibidos correspondan a la Irecuencia de comunicacion
previamente establecida.

Para lo cual se implementara una maquina de estado que estara sincronizada con
la seal de reloj de recepcion (CLKRX). Una vez establecida la seal de reloj por el
modulo generador de baudios la maquina esperara la ocurrencia del 'bit de START
de los datos a recibir.



Figura 3.7 Diagrama de estados del modulo 'receptoruart.

Por lo menos la seal de START debe durar 2 pulsos de reloj (CLKRX) para
pasar a recibir los otros 8 bits de DATOS. No se considera la recepcion del 'bit de
STOP (Se asume en todo momento que siempre estara presente y su valor es '1
(UNO LOGICO). En la Figura 3.7 se muestra el diagrama de estados del modulo
receptor implementado.
En el estado IDLE se espera a que se reciba el 'bit de START de la trama de
recepcion, caso contrario estara en el mismo estado hasta que se reciba el primer 'bit
de inicio (START).
En el estado STARTRX se veriIica que el 'bit de START dure por lo menos 2
pulsos de reloj de CLKRX, caso contrario se asumira que la seal de START no dura
lo suIiciente por lo que habra un error en la comunicacion de los datos.
En el estado RXOVF se activa la seal de error: RxErr y se espera a que la seal
de los datos de entrada (RX) regrese al estado en alto.
En el estado EDGERX veriIica si ya se recepcionaron los 8 bits de datos.
En el estado SHIFRX se lee el valor del 'bit de entrada (RX) y se almacena en
el registro de recepcion de datos RXREG. Este registro es de desplazamiento y
primero se almacena el 'bit de menor peso (corrimiento a la derecha).
La seal STOPRX coloca el dato recepcionado de 8 bits en paralelo al exterior
del circuito, activando la seal RXRDYi para indicar que se han recibido los datos
seriales (8 bits).
Por lo que el bloque 'modreceptor a implementar debe tener las siguientes
entradas y salidas:


Figura 3.8 Circuito interIaz 'modreceptor


Por lo que el subsistema 'receptoruart, esta constituido por ambos circuitos:
'baudios y 'modreceptor, como se muestra en la Figura 3.9

Figura 3.9 Subsistema 'receptoruart.

Donde :

Baud2:0~ : entrada de tres bits para seleccionar la velocidad de
comunicacion en bits por segundo (bps).
BAUD Vtx/rx
000 115200 bps
001 57200 bps
010 38400 bps
011 19200 bps
100 9600 bps
101 4800 bps
110 2400 bps (seleccionado)
111 1200 bps

Clk : Entrada de reloj de 50 Mhz.
ClrDiv : Entrada de reset para el generador de reloj del
Receptor.
Reset : Entrada de reinicio del generador de baudios.
ClkRx : Frecuencia de recepcion.
Dato (7:0) : Dato de coordenadas de punto Iinal.
Rxvalido : Recepcion de dato valido.

3.3 Diseo del detector de posicin del robot.

Para el presente diseo se realizaron analisis de diversos tipos de sensores que
nos podrian brindar inIormacion del Iactor 'distancia como son: los sensores de
desplazamiento lineal, sensores de posicion y sensores de movimiento. Pero se
encontro que las caracteristicas tecnicas de estos sensores no permiten obtener
inIormacion con alto nivel de precision sobre la distancia recorrida por un 'robot
movil.
Por citar algunos de ellos, por ejemplo tenemos los sensores de distancia de
ultrasonidos, que utilizan vibraciones del aire de la misma naturaleza que el sonido
audible pero de una Irecuencia mas elevada con Irecuencias desde 20,000 Hz hasta
5,108 KHz. no audibles por el oido humano.
Se alcanzan longitudes de onda que se aproximan a la luz visible. Ejemplo: el
SRF235 es un medidor de distancias por ultrasonidos de alta Irecuencia y haz estrecho
con conexion I2C de multiples aplicaciones dentro de la robotica movil.
Un sensor SRF235 utilizado junto a un sonar de 40KHz crea una combinacion de
deteccion de gran eIicacia. Otro sensor de distancia es el SRF04 capaz de detectar
objetos y calcular la distancia a la que se encuentra en un rango de 3 a 300 cm. Pero
ninguno de los dispositivos mencionados permite determinar, ni indicarnos la
distancia recorrida por el 'robot movil y todos ellos requieren de obstaculos para
determinar la distancia recorrida o por recorrer.
Ante esta situacion se analizo el principio sobre el cual se Iundamenta el
mecanismo que utiliza el 'mouse de las computadoras, ya que este subsistema de
entrada le brinda la inIormacion al sistema operativo del computador sobre la
ubicacion y desplazamiento del 'mouse, con un alto nivel de precision. Por esta razon
luego de investigar sobre los diversos tipos de sensores de posicion, evaluando sus
caracteristicas tecnicas y costos se selecciono para el proyecto de Tesis, el uso de este
subsistema (mouse) porque reune las especiIicaciones tecnicas de operacion optimas
para el diseo y en relacion al costo, representa la alternativa mas economica en
relacion a otros sensores de posicion.





3.3.1 Anlisis y operacin del detector de posicin.

En la tarjeta de desarrollo de SPARTAN3 encontramos un puerto PS2 para
teclado y/o 'Mouse implementado en el conector mini-DIN de 6 pines, como se
muestra en la siguiente Figura 3.10:









Figura 3.10 Conector PS/2 del PC para teclados y/o mouse.

En la siguiente Tabla 3.2, se muestra los pines utilizados en el FPGA
destinados a la comunicacion con el conector PS2.












Tabla 3.2 Pines del conector PS/2 utilizados en el FPGA.

Ambos, el teclado y el 'Mouse usan dos hilos del bus serial PS2 para
comunicarse con cualquier dispositivo, que en este caso sera el Modulo
SPARTAN3 de XILINX. El bus PS2 incluye las seales de reloj y datos.
Ambos, el 'mouse y el teclado utilizan seales de temporizacion similares y
usando 11 bits por palabra incluyendo el 'bit de 'START, 'STOP y
'PARIDAD. Asi mismo los paquetes de datos son organizados de manera
diIerente para el 'mouse que para el teclado. La interIase del teclado y el
'mouse permite la transIerencia de los datos en ambos sentidos.

En la siguiente Tabla 3.3 se muestra los tiempos de las seales generadas
durante la comunicacion. Las seales de reloj y datos son solo manejadas cuando
ocurre una transIerencia de datos, caso contrario permanecen en un modo
suspendido de alto.


Tabla 3.3 Tiempo de las seales generadas durante la comunicacion.

Aqui se muestra el diagrama de tiempos:












Figura 3.11 Diagrama de tiempos del Bus PS/2

El 'Mouse genera una seal de reloj y datos cuando es accionado
mediante el movimiento, en otros casos esta seal permanece en estado alto.
Cada vez que el 'Mouse es movido, envia 3 palabras de 11 bits cada uno al
'host (en este caso para el modulo SPARTAN 3).

Cada palabra de 11 bits contiene el 'bit de START que siempre es un 0`,
seguido de los 8 bits de datos (primero el 'bit menos signiIicativo), seguido por
el 'bit de paridad impar y termina con el 'bit de STOP que siempre es 1`.

Cada transmision de datos contiene un total de 33 bits, donde los bits: 0,11
y 22 siempre son los bits de START y los bits: 10, 21 y 32 siempre son los 'bits
de STOP. Los tres campos de datos que contienen la inIormacion del
movimiento (desplazamiento del origen y sentido) se muestra en la Figura 3.12.


Figura 3.12 Trama generada por el 'Mouse cuando esta en uso.


El dato es valido en los Ilancos de bajada de la seal de reloj y periodo de
reloj puede variar entre 20KHz a 30KHz.

En la Figura 3.13 se muestra el empleo de las coordenadas relativas, asi
mientras que el 'mouse esta en movimiento a la derecha, genera valores
positivos del campo 'X y se mueve a la izquierda, genera valores negativos.
En otro caso, si el 'mouse esta en movimiento hacia delante genera valores
positivos en el campo 'Y, y si se mueve en sentido opuesto (hacia abajo)
generara valores negativos en el campo 'Y. Los bits 'XS e 'YS en el byte de
estado (Status byte) deIine el signo de cada valor, donde un 1` indica que el
valor es negativo.

















Figura 3.13 Valores positivos y negativos de las coordenadas 'X e 'Y
con respecto a la posicion actual del 'mouse.

La magnitud de 'X e 'Y representa el desplazamiento de movimiento
del 'mouse desde su posicion original (relativa). Si el 'mouse se mueve muy
rapido superando las magnitudes que se puede almacenar en los campos 'X e
'Y los bits del registro de estado: 'XV e 'YV indicaran que se ha excedido
del maximo valor permitido ocurriendo una condicion conocida como
desbordamiento (OVERFLOW).

Si el 'mouse se esta moviendo continuamente, la transmision de 33 bits
se vuelve a repetir cada 50 ms. aproximadamente.

Los campos 'L y 'R indicaran si se ha pulsado los botones de izquierda
o derecha respectivamente. Un valor en alto (1`) indicara que han sido
presionados.

3.3.2 Diseo de la interfaz de comunicacin PS/2 del mouse.

Se diseo el circuito que permite establecer la comunicacion del 'mouse
con el FPGA, donde los unicos campos que nos interesan para esta aplicacion
son: 'XS,X e 'YS,Y.













Figura 3.14 Circuito de comunicacion del 'mouse.

3.3.3 Diseo de acumuladores.

La Iuncion de este circuito es ir acumulando la magnitud de 9 bits del
desplazamiento que ha ocurrido en uno de los ejes del 'Mouse. El valor
corresponde a la cantidad desplazada tanto en el eje horizontal (derecha o
izquierda) como en el eje vertical (arriba o abajo) desde su ultima posicion. El
valor se va acumulando en un registro de 16 bits por lo que podria almacenarse
un desplazamiento de 65536 posiciones. Si se desea aumentar la cantidad del
desplazamiento lo unico que se tendria que hacer es aumentar el tamao del
registro acumulador.



Figura 3.15. Circuito acumulador para valores de X e Y

El circuito ACUMULADOR tomara la seal solo si recibe la seal de reloj
(clk). Esta ultima seal se toma de la salida FINTRAMA del circuito
SERIEPS2.
El circuito implementado es el siguiente:


Figura 3.16 Diseo del circuito acumulador

Se puede apreciar que con la seal de RESET borramos la cuenta
acumulada que contiene el desplazamiento realizado por el 'mouse. El valor
del desplazamiento relativo del 'mouse se va acumulando al valor almacenado
hasta el momento del ultimo desplazamiento en el instante que ocurra la seal de
FINTRAMA.(Figura 3.16)

Este circuito se aplicara para memorizar la distancia desplazada desde el
punto inicial (0,0) hasta la posicion instantanea en que se encuentra el 'robot
movil en su desplazamiento de avance o retroceso.

3.3.4 Diseo de ~Contador_m.

La Iuncion de este circuito es ir acumulando el valor del desplazamiento
que es multiplo del valor incrementado hasta el momento. Esto se debe a que el
sensor del 'Mouse es muy sensible a los desplazamientos, por lo que creo
conveniente ir acumulando el desplazamiento positivo (adelante o derecha) o
negativo (atras o izquierda) a 9 bits que se tiene el circuito ACUMULADORES
en un Iactor de 16.

Este valor sera el que envie a la unidad de control para indicar el
desplazamiento realizado por el 'mouse.

Figura 3.17 Circuito 'contadorm


El circuito recibe como entrada de reloj el cuarto 'bit de la cuenta del
circuito 'acumuladores (cada 16 estados de 'ACUMULADORES es un estado
del 'contadorm), que se sincroniza con la seal de reloj de 50MHz del modulo
Spartan-3. Tambien toma como indicador, el incremento positivo o negativo
segun el bit de signo del circuito 'SERIEPS2. En la Figura No 3.18 se muestra
el circuito implementado.




















Figura 3.18 Circuitos utilizados para el diseo de CONTADORM


3.3.5 Implementacin del circuito final detector de posicin.

Se realiza la interconexion de los circuitos desarrollados, para desarrollar
la deteccion sensorial de la posicion del 'robot movil, el cual se muestra en la
Figura 3.19; y todo este subsistema constituye el subsistema 'mouse, cuyo
esquema con sus seales de entradas y salidas se muestra en la Figura 3.20.



Figura 3.19 Circuito Iinal del detector de posicion del robot.


Figura 3.20 Subsistema detector de posicion.


3.4 Diseo de la unidad de control y programacin del robot.

Esta es la unidad de mayor importancia de todo el sistema, ya que es aqui
donde se procesan las decisiones sobre el Iuncionamiento del 'robot movil. A
continuacion se describen las seales de entrada y salida de esta unidad.

3.4.1 Seales de entradas y salidas.

En la Figura 3.21 se muestra el diagrama de bloques del sistema, en el cual
se observa que la unidad de control debe recibir inicialmente la seal del dato
valido del puerto serial asincrono implementado en el FPGA. Con esta
inIormacion la unidad de control sabe, si el desplazamiento es hacia adelante o
hacia atras y tambien la magnitud de la distancia expresado en centimetros que
debe desplazarse.

A continuacion la unidad de control genera las seales de mando para los
motores paso a paso los cuales al ser activados inician el movimiento del robot
de acuerdo al sentido indicado.

Cuando el robot movil inicia su movimiento, el 'mouse va indicando a la
unidad de control, la magnitud del cuanto es el desplazamiento realizado. Dicha
inIormacion es mostrada en los 'displays numericos a 7 segmentos con que
dispone el modulo SPARTAN 3.



Figura 3.21 Seales de entradas y salidas de la unidad de control

Donde :

CUENTAHOR7:0~ : Desplazamiento horizontal.
CUENTAVER7:0~ : Desplazamiento vertical.
UARTRX7:0~ : Dato de programacion.
clk : Seal de reloj.
datoval : Recepcion de dato valido.
reset : Seal de reinicio del sistema.
A3:0~ : Dato a display.
B3:0~ : Dato a display.
C3:0~ : Dato a display.
D3:0~ : Dato a display.
CPL : Seal de numeros negativos.
MOTORDER : Seal de giro a la derecha.
MOTORDOWN : Seal de retroceso.
MOTORIZQ : Seal de giro a la izquierda.
MOTORUP : Seal de avance.
Selvisor : Selecciona inIormacion en display.


3.4.2 Anlisis del diseo y operacin.

El diseo de la unidad de control consiste en una maquina de estados
encargado de recibir y generar las diIerentes seales de control de todas las
unidades diseadas hasta el momento.

La unidad de control recibira los datos enviados por el circuito de
recepcion de datos: RECEPTORUART, (Ver Figura 3.22) que es la encargada
de recibir los coordenadas X e Y de la ubicacion Iinal del movil. Estos datos
provienen de la computadora conectada al puerto serial del modulo SPARTAN3.



Figura 3.22 Ingreso de coordenadas a la unidad de control

La unidad de control tambien recibira del circuito 'MOUSE el
desplazamiento vertical u horizontal como un numero de 8 bits con signo. Este
numero debe ser acumulado para indicar el desplazamiento realizado que
corresponde a la posicion actual del movil.(Ver Figura 3.23).


Figura 3.23 Recepcion de la cuenta acumulada del desplazamiento del Mouse
La inIormacion de la distancia recorrida sera visualizada por la unidad de
control mediante los cuatro 'DISPLAYs NUMERICOS que dispone el
modulo SPARTAN3. Por lo que la unidad de control debera enviar al circuito
VISOR los valores de la distancia recorrida en binario natural y el circuito
VISOR se encargara de mostrarlos en los 'DISPLAYs. Como se dispone con
cuatro 'DISPLAYs la inIormacion de la distancia recorrida se mostrara en el
sistema de numeracion hexadecimal (dos 'DISPLAYs mostraran el recorrido
en el eje horizontal y los otros dos 'DISPLAYs mostraran el recorrido en el
eje vertical), por lo tanto la distancia recorrida podra variar entre 00H a FFH
para el eje horizontal y vertical.
(Ver Figura No 3.24)

Figura 3.24 Visualizacion de la distancia recorrida por el robot movil

Hay una seal de RESET externa que le indicara a la unidad de control que
debe reiniciar la maquina de estado sea cualquier operacion que este realizando.
La seal de START indica a la maquina que el proceso se da por iniciado y esta
a la espera de los valores que le envie el circuito UART.
Una vez que la unidad de control recibe los datos de la posicion Iinal debe
activar a los motores de paso para que el movil comience ha avanzar o
retroceder y que vaya a la izquierda o derecha. La activacion de los motores
dependera de los valores acumulados en los registros de distancia de la unidad
de control. Si los valores son menores al indicado por el computador, entonces
Iorzara a que los motores avancen hacia delante (vertical) y a la derecha
(horizontal). La comparacion en todo momento lo realiza la unidad de control.
En la Figura 3.25 se muestra el diagrama del circuito Iinal implementado
conIormado por todos los bloques diseados hasta el momento. La seal de reloj
es de 50MHz y es la que sincroniza las diIerentes operaciones en todos los
circuitos.























A continuacion se muestra la Figura 3.26 en el que se describe el diagrama de
estados del Iuncionamiento de la unidad de control.

Figura 3.26. Diagrama de estados de la unidad de control.

En el estado S0 (Inicial) la unidad de control muestra en los 'displays
barras horizontales intermedias para indicar al usuario que esta listo para operar.
Estas barras horizontales se muestran por la codiIicacion que tiene el circuito
VISORALT. La salida para el movimiento de los motores se encuentran
desactivados. La unidad de control no cambia de estado hasta que no se pulse el
boton de START.


Figura 3.27 Salida del sistema en el estado S0.


En el estado S1, la unidad de control muestra la letra h (posicion
horizontal de destino) en dos 'displays numericos para indicar que esta a la
espera de la posicion 'X que le debe enviar el computador. La seal 'datoval
es la que indica que hay un dato recibido del computador y hara que la maquina
cambie al estado S2.
Figura 3.28 Salida del sistema en el estado S1

En el estado S2, la unidad de control mostrara el valor 'X (eje horizontal
a desplazarse) recibido desde el computador en los otros dos 'displays. Pasara
al siguiente estado S3 cuando se desactive la seal 'datoval.

Figura 3.29 Salida del sistema en el estado S2.

En el estado S3 la unidad de control realiza en retardo de
aproximadamente de 1 (un) segundo, utilizando para ello un contador de 27 bits
(la cuenta debe llegar hasta 50`000,000). Cuando haya transcurrido un segundo
pasara al siguiente estado S4.

En el estado S4, la unidad de control muestra la letra v (posicion vertical
de destino) en dos 'displays para indicar que esta a la espera de la posicion
'Y que le debe enviar el computador. La seal 'datoval es la que indica que
hay un dato recibido del computador y permitira que la maquina cambie al
estado. S5.

Figura 3.30 Salida del sistema en el estado S4


En el estado S5, la unidad de control mostrara el valor 'Y (eje vertical a
desplazarse) recibido desde el computador en los otros dos 'displays. Pasara
luego al siguiente estado S6 cuando se desactive la seal 'datoval.


Figura 3.31 Salida del sistema en el estado S5.


En el estado S6 la unidad de control realiza en retardo de
aproximadamente de 1 (un) segundo, utilizando para ello un contador de 27 bits.
Cuando haya transcurrido un segundo pasara al siguiente estado S7.

En el estado S7, la unidad de control muestra ahora en los 'displays la
posicion inicial 'X e 'Y que corresponde a: 00 y 00 respectivamente. En este
estado se realiza la comparacion de los valores recibidos en los estados S2 y S5
que corresponden a las posiciones Iinales 'X e 'Y respectivamente con lo
avanzado (es lo acumulado del desplazamiento realizado), y de acuerdo a las
comparaciones activa uno u otro motor como se muestra en las siguientes
condiciones, donde:

FINHOR : Posicion Iinal horizontal.
FINVER : Posicion Iinal vertical.
CUENTAHOR : Posicion avanzada en eje horizontal.
CUENTAVER : Posicion avanzada en eje vertical.

Y los valores que adoptaran las salidas hacia el control de los motores son:

FINHOR CUENTAHOR MOTORUP OFF
MOTORDOWN ON

FINHOR CUENTAHOR MOTORUP OFF
MOTORDOWN OFF

FINHOR ~ CUENTAHOR MOTORUP ON
MOTORDOWN OFF

FINVER CUENTAVER MOTORDER OFF
MOTORIZQ ON


FINVER CUENTAVER MOTORDER OFF
MOTORIZQ OFF

FINVER ~ CUENTAVER MOTORDER ON
MOTORIZQ - OFF


Figura 3.32 Estado del sistema antes del desplazamiento del robot.


En el estado S8 la unidad de control ha llegado a la posicion Iinal, por lo
que las salidas a los motores se deben desactivar. En el mismo estado se espera
un tiempo de medio segundo en la cual los 'displays estan apagados
completamente. Transcurrido el tiempo de medio segundo, la maquina de estado
se transIiere al estado siguiente S9.

En el estado S9 la unidad de control muestra los valores que corresponden
a la posicion 'X e 'Y Iinales. En el mismo estado se espera un tiempo de
medio segundo en la cual los 'displays estan activos mostrando el valor Iinal
'X e 'Y. Transcurrido el tiempo de medio segundo, la maquina de estado se
transIiere al estado siguiente S8.




Figura 3.33 Estado del sistema cuando llega a la posicion Iinal (estado S9).


3.5 Diseo del subsistema monitor de posicin.


La tarjeta de desarrollo SPARTAN-3 tiene cuatro 'displays numericos (7
segmentos) controlados por los pines del FPGA como se indica en la siguiente
Figura 3.34. Cada 'display tiene su propia entrada de control y los segmentos
estan unidos como se muestra en la Figura indicada.

Para activar a un segmento se debe enviar un nivel bajo (0`) y con otro
nivel logico bajo (0`) al 'bit de control que activa al 'display correspondiente.
Por ejemplo en la Figura3.31 se muestra el valor que el FPGA debe enviar a los
controles del 'display (AN3, AN2, AN1 y AN0) y los segmentos
correspondientes (A,B,C,D,E,F,G,DP) para visualizar el numero 2.

Figura 3.34 Valores que se deben enviar a los 'displays para visualizar un
numero












Figura 3.35 Secuencia de valores periodicos para visualizar 4 numeros en los
displays.

En la Figura 3.35 se muestra las Iormas de onda de la secuencia periodica
de valores que se deben enviar a los pines de control de los 'displays para
visualizar numeros diIerentes en cada uno de los cuatro 'displays.

3.5.1 Diseo del circuito ~VISOR Y ~VISOR_ALT.

De acuerdo al comportamiento del circuito se deben visualizar en los
'displays las coordenadas 'X e 'Y de la ubicacion Iinal del movil, asi como
la distancia que va recorriendo desde el punto inicial (0,0).

Para esto se disean dos circuitos llamados VISOR y VISORALT que se
utilizaran para mostrar el codigo a 7 segmentos de los numeros binarios con que
trabaje el sistema.

El circuito diseado es el siguiente:


Figura 3.36 Circuito que se encarga de visualizar valores en los 'displays del
modulo SPARTAN-3

Las seales Q1,Q0 (dos bits) se encargan de habilitar a un 'display y
mostrara el valor a 7 segmentos en el 'display habilitado. Los valores que
tomara la seal 'Q esta a una Irecuencia de 200Hz. Esta velocidad de barrido
de cada uno de los 'displays permiten que se muestre un valor estatico dando
la sensacion de que se tienen cuatro 'displays de Iorma independiente.
Hay un circuito que se encarga de multiplexar uno de los cuatro valores
(E0, E1, E2 o E3) y codiIicarlo a su correspondiente codigo a siete segmentos
para que se visualice en uno de los cuatro 'displays. (Ver Figura 3.36)

3.6 Diseo del subsistema de control de motores paso a paso.
Para obtener el movimiento del 'robot movil se realizo el diseo de una
unidad controladora para motores paso a paso. Esta unidad debe ser capaz de
controlar diIerentes tipos de motores de paso, como explicaremos a
continuacion.
Todo motor electrico, y en particular el motor PAP (Paso a Paso), es
basicamente un conversor electromecanico, que transIorma la energia electrica
en mecanica; pero de un modo tan peculiar que constituye en la actualidad una
categoria muy singular. En eIecto, mientras que un motor convencional gira
libremente al aplicar una tension comprendida dentro de ciertos limites (que se
corresponden de un lado al par minimo capaz de vencer su propia inercia
mecanica y de otro, a sus propias limitaciones de potencia); el motor PAP esta
diseado de tal manera que gira un determinado angulo proporcional a la
"codiIicacion" de tensiones aplicadas a sus entradas (4, 6, etc.).

.






Figura 3.37. Algunos tipos de motores PAP
La posibilidad de controlar en todo momento con esta codiIicacion permite
realizar desplazamientos angulares lo suIicientemente precisos, dependiendo el
angulo de paso (Resolucion angular) del tipo de motor (valores desde 1,80 hasta
90). En la Figura 3.37, se muestran algunos tipos de motores PAP. De este
modo, si por ejemplo el numero de grados por paso es de 1,80, para completar
una revolucion seran necesarios 200 pasos.
De la misma manera que se puede posicionar el eje del motor, es posible
controlar la velocidad del mismo, el cual sera en Iuncion directa de la Irecuencia
de variacion de las codiIicaciones en las entradas. De ello se deduce que el
motor paso a paso permite obtener precision y periodicidad que lo habilita para
trabajar en sistemas abiertos sin realimentacion.
La conmutacion se debe manejar de manera externa con un controlador
electronico en nuestro caso implementado con un FPGA y tipicamente, los
motores y sus controladores se disean de manera que el motor se pueda
mantener en una posicion Iija y tambien para que pueda hace girar en el sentido
horario o antihorario.
Para realizar el control de los motores PAP, re requiere generar una
secuencia determinada de pulsos; asimismo es necesario que estos pulsos sean
capaces de entregar la corriente necesaria para que las bobinas del motor se
exciten, y permitan generar movimiento en el eje del motor 34].

Por lo general, el diagrama de bloques de un sistema de control de motores
PAP es el que se muestra en la Figura 3.38.



Figura 3.38. Diagrama de bloques de un sistema con motor PAP.

Existen dos Iormas basicas de hacer Iuncionar este tipo de motores PAP
(paso a paso) atendiendo al avance del rotor bajo cada impulso de excitacion:

3.6.1 Paso completo ~FULL STEP.
En este modo de operacion el rotor avanza un paso completo por cada
pulso de excitacion y para ello su secuencia ha de ser la correspondiente a la
expuesta anteriormente, para un motor cuya operacion es presentada en la Tabla
3.4 para ambos sentidos de giro, las ON indican los interruptores que deben
estar cerrados, mientras que las 'OFF indica interruptor abierto.

Paso S1 S2 S3 S4 Paso S1 S2 S3 S4
1 ON OFF OFF ON 1 ON ON OFF OFF
2 OFF OFF ON ON 2 OFF ON ON OFF
3 OFF ON ON OFF 3 OFF OFF ON ON
4 ON ON OFF OFF 4 ON OFF OFF ON
1 ON OFF OFF ON 1 ON ON OFF OFF
Sentido horario (a) Sentido antihorario (b)
Tabla 3.4 Secuencia de excitacion de un motor PAP a paso completo

3.6.2 Medio paso ~HALF STEP.
Con este modo de Iuncionamiento el rotor avanza medio paso por cada
pulso de excitacion, presentando como principal ventaja una mayor resolucion
de paso, ya que disminuye el avance angular (la mitad que en el modo de paso
completo). Para conseguir tal cometido, el modo de excitacion consiste en
hacerlo alternativamente sobre dos bobinas y sobre una sola de ellas, segun se
muestra en la Tabla 3.5 para ambos sentidos de giro.
Segun se muestra, las seales generadas para los motores son de 4 bits y
generalmente se puede construir un driver que utilice estas secuencias para
cualquier motor paso a paso. Y la Irecuencia a la cual se generan estas seales se
obtiene dividiendo la Irecuencia de reloj del sistema del bloque principal.


Paso Excitacion de Bobinas Paso Excitacion de Bobinas
S1 S2 S3 S4 S1 S2 S3 S4
1 ON OFF OFF ON 1 ON ON OFF OFF
2 OFF OFF OFF ON 2 OFF ON OFF OFF
3 OFF OFF ON ON 3 OFF ON ON OFF
4 OFF OFF ON FF 4 OFF OFF ON OFF
5 OFF ON ON OFF 5 OFF OFF ON ON
6 OFF ON OFF OFF 6 OFF OFF OFF ON
7 ON ON OFF OFF 7 ON OFF OFF ON
8 ON OFF OFF OFF 8 ON OFF OFF OFF
1 ON OFF OFF ON 1 ON ON OFF OFF
Sentido horario (a) Sentido antihorario (b)

Tabla 3.5 Secuencia de excitacion de un motor PAP en medio paso

Ademas como el FPGA no es capaz de generar la corriente suIiciente para
excitar a las bobinas del motor paso a paso, se utilizan diIerentes tipos de
'drivers(ampliIicadores de corriente), como el ULN2803, utilizado en este
diseo.

Figura 3.39. Circuito de control de motor PAP unipolar.
En la Figura 3.39, podemos apreciar un circuito para controlar un motor
paso a paso unipolar mediante el uso del I.C. ULN2803, el cual es una 'Array
de 8 transistores tipo Darlington capaces de manejar cargas de hasta 500mA. Las
entradas de activacion (A, B , C y D) que son directamente controlados por el
circuito diseado en el FPGA.
El subsistema del controlador del motor de paso a paso se muestra en la
Figura 3.40, en el cual vemos que esta constituido por dos bloques:


Figura No 3.40 Diagrama de bloques del circuito de prueba .



3.6.3 Bloque ~CONT_PASO.

Es el bloque que se disea, para el control del motor paso a paso en
condiciones de Iuncionamiento normal (No programado); por lo que se
consideran las seales siguientes:

clk : (entrada) Seal de reloj del circuito secuencial, para controlar la
rapidez de rotacion del motor PAP.
Sec : (entrada) Seal constituida por dos bits; que conIigura el tipo de
secuencia para la rotacion del motor PAP .
Ena : (entrada) Seal que permite habilitar o inhabilitar el IC para el
Iuncionamiento del dispositivo.
Sentido : (entrada) Seal que conIigura el sentido de rotacion del motor PAP.
Z : (Z3-Z0) (salidas) Seales de salidas del dispositivo que son
entregados a la etapa de potencia para la rotacion del motor PAP.



Figura 3.41 Circuito para el control del movimiento de motor PAP



3.6.4 Bloque ~CONTROL_PASOS.

Es el bloque que se habilita, cuando el control del motor PAP se conIigura
en modo 'programado, para lo cual se debera ingresar un numero binario de 8
bits (200 estados) el cual representa el total de pasos del motor PAP, el cual
equivale a la rotacion de 1.8 grados/paso.

Las seales de este bloque son los siguientes:
Iorma : (entrada) seal que conIigura el modo de operacion del motor: modo
normal o modo programado.
Clk : (entrada) seal de reloj que ingresa al bloque 'ControlPasos y a
traves de una puerta logica 'And al bloque 'ContPaso para
sincronizar operacion de circuito secuencial.
Start : (entrada) seal de ordena el inicio de la operacion del bloque
'ControlPasos en operacion de modo programado.
Pasos : (entradas) Bus de 8 bits que representa un numero binario que
conIigura el total de pasos de rotacion del motor PAP.
Z : (salida) Seal de salida del bloque 'ControlPasos el cual es
habilitado ('1) durante la operacion del bloque 'ControlPasos.


Figura 3.42 Diagrama del control del circuito CONTPASO
3.6.5 Bloque ~MOTOR_PASO.
Es el bloque que representa el total del circuito de control de prueba para
los motores PAP, en el cual se consideran las seales de:

Forma : (entrada) seal que conIigura el modo de operacion del motor: modo
normal o modo programado.
Clk : (entrada) seal de reloj que ingresa al bloque 'ControlPasos y a
traves de una puerta logica 'And al bloque 'ContPaso para
sincronizar operacion de circuito secuencial.
Start : (entrada) seal de ordena el inicio de la operacion del bloque
'ControlPasos en operacion de modo programado.
Pasos : (entradas) Bus de 8 bits que representa un numero binario que
conIigura el total de pasos de rotacion del motor PAP.
Sec : (entrada) Seal constituida por dos bits; que conIigura el tipo de
secuencia para la rotacion del motor PAP .
Ena : (entrada) Seal que permite habilitar o inhabilitar el IC para el
Iuncionamiento del dispositivo.
Sentido : (entrada) Seal que conIigura el sentido de rotacion del motor PAP.
Z : (Z3-Z0) (salidas) Seales de salidas del dispositivo que son
entregados a la etapa de potencia para la rotacion del motor PAP.



Figura 3.43 Circuito Iinal para el control de motores PAP.



































CAPITULO 4

DESARROLLO Y SIMULACION DE PROGRAMAS,

4.1 Entorno de programacin y simulacin digital del diseo.

La implementacion de un diseo logico en un FPGA se realiza usualmente
con un soItware de desarrollo en donde se desarrolla generalmente las siguientes
etapas: ver Figura 4.1.

1. Se ingresa la descripcion logica del circuito usando un lenguaje de
descripcion de hardware de alto nivel, tales como VHDL o Verilog. Tambien
se podria utilizar para el diseo un editor esquematico.

2. Debe usar un soItware (Sintetizador logico) para transIormar el HDL
(Hardware Description Language, lenguaje descriptivo de hardware) o
circuito esquematico en una lista de conexiones (Netlist). Este 'Netlist se
ajusta a una descripcion de varias compuertas logicas interconectadas para
realizar la descripcion del diseo.

3. Usar herramientas para mapear las compuertas logicas y sus interconexiones
en el FPGA. Realizando el ajuste (Fitting), que es el proceso por el cual se
toma la logica producida por la sintesis y la optimizacion luego se coloca en
el dispositivo, transIormando la logica para obtener el mejor ajuste.

4. Luego que la Iase de implementacion ha sido completada, un programa
extrae el estado de los 'Switch en la matriz de ruteo y genera una cadena de
bits (Bitstream) donde los unos y ceros corresponde a los 'Switch abiertos
y cerrados.

5. Esta cadena de bits (Bitstream) es bajado en el FPGA. La electronica en el
FPGA conmuta los 'Switchs abriendolos o cerrandolos en respuesta a los
bits del 'bitstream. En esta etapa ya podemos aplicar seales de entradas
para veriIicar la operacion de nuestro diseo.


En la Figura 4.1 se muestra el proceso de desarrollo del diseo de un
sistema basado en el FPGA.


Figura 4.1 Proceso de implementacion de un sistema digital en un FPGA 19].








Entre las diIerentes herramientas de soItware podemos mencionar:

a) MAXPLUS II de ALTERA

b) WEB-PACK PROJECT NAVIGATOR DE XILINX


4.1.1 MAX+PLUS II

Es una herramienta soItware integral distribuida por ALTERA; que
permite desarrollar el diseo e implementacion de sistemas digitales mediante
logica programable; y en el proceso de instalacion crea dos directorios:
C:/ max2work
C:/maxplus2
En el primero se almacenan los trabajos creados por el usuario, tambien contiene
los directorios en el cual se encuentran ejemplos de diseo. En el segundo se
encuentran los recursos entre ellos: las herramientas de ingreso del diseo, el
compilador, el editor de posicionamiento/conexionado, el analizador temporal,
el programador entre otros 11], 47].


4.1.2WEB-PACK PRO1ECT NAVIGATOR






Es una herramienta distribuida por XILINX encargado de realizar la
sintesis, optimizacion y ajuste del diseo. Tiene diIerentes Iormas de entradas de
diseo: editor de texto (entrada VHDL y Verilog), editor graIico (esquematico) y
un editor de diagrama de estados. Esta herramienta es una interIaz que se
implementa sobre todo el conjunto de programas que participan en el diseo.
Cada uno de estos programas actua sobre una etapa del diseo.
Presenta ademas las caracteristicas de ayudar a conectar los diversos
programas de manera coherente siguiendo el Ilujo de diseo y homogeniza las
llamadas a los programas utilizando una misma interIaz independientemente si
el programa es de XILINX u otro Iabricante 19], 48].

4.2 Programacin y simulacin del subsistema interfaz de
comunicacin.

Esta interIaz de comunicacion computador-FPGA, es denominado
'receptoruart, el cual esta constituido de dos circuitos, siendo el primero el
circuito 'baudios y el segundo es el circuito 'modreceptor; el diseo de cada
circuito se encuentra explicado ampliamente en las secciones 3.2.1 y 3.2.2.

4.2.1 Programa de comunicacin Computador - FPGA.

En esta seccion se muestra el listado del programa que implementa el
generador de baudios; como es conocido, todo puerto de comunicacion serial
asincrono debe transmitir o recibir los bits a una determinada velocidad y el
generador de baudios es el encargado de establecer los tiempos de duracion de
los bits. El generador de baudios diseado tiene la capacidad de establecer las
velocidades de comunicacion estandarizadas que varian desde 1200 bps a
115200 bps seleccionados por el usuario.
El programa que implementa este circuito se llama 'baudios y Iue desarrollado
utilizando el soItware Project Navigator de Xilinx. Las simulaciones se
realizaron con el programa MaxPlus II de Altera.
-- ==========================================================
-- Diseo del Generador de baudios para las velocidades de
-- 1200 bps, 2400 bps, 4800 bps, 9600 bps,
-- 19200 bps, 38400 bps, 57600 bps, 115200 bps
-- Para la frecuencia de 50MHz
-- ==========================================================
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity baudios is
port ( clk,reset: in std_logic;
baud: in std_logic_vector(2 downto 0);
Top62: buffer std_logic;
ClrDiv: in std_logic;
clk_Tx, clk_Rx: out std_logic);
end baudios;

architecture solucion of baudios is
-- signal Top62: std_logic;
signal Divisor, Div62: std_logic_vector(9 downto 0);
signal ClkDiv: std_logic_vector (8 downto 0);
signal RxDiv: std_logic_vector(7 downto 0);

begin


-- Seleccin de la generacin de los Baudios
process (reset, clk)
begin
if reset='1' then


Divisor <= (others=>'0');
elsif clk='1' and clk'event then
case Baud is
when "000"=> Divisor <="0000000110";-- 115200 bps
when "001"=> Divisor <="0000001101";-- 57600 bps
when "010"=> Divisor <="0000010100";-- 38400 bps
when "011"=> Divisor <="0000101001";-- 19200 bps
when "100"=> Divisor <="0001010011";-- 9600 bps
when "101"=> Divisor <="0010100111";-- 4800 bps
when "110"=> Divisor <="0101001111";-- 2400 bps
when "111"=> Divisor <="1010011111";-- 1200 bps
when others=> Divisor <="0000000110";-- 115200 bps
end case;
end if;
end process;

--=========================================================
-- Generador del clk/62
process (reset, clk)
begin
if reset='1' then
Top62 <= '0';
Div62 <= (others=>'0');
elsif clk='1' and clk'event then
Top62 <= '0';
if Div62 = Divisor then
Div62 <= (others=>'0');
Top62 <= '1';
else
Div62 <= Div62 + 1;
end if;
end if;
end process;

--=========================================================
-- Generacin del reloj de transmisin
process (reset, clk)
begin
if reset='1' then
clk_Tx <= '0';
ClkDiv <= (others=>'0');
elsif clk='1' and clk'event then
clk_Tx <= '0';
if Top62='1' then
ClkDiv <= ClkDiv + 1;
if ClkDiv = 61 then
clk_Tx <= '1';
ClkDiv <= (others=>'0');
end if;
end if;
end if;
end process;

--=========================================================
-- Generacin del reloj de muestreo de Recepcin
process (reset, clk)
begin
if reset='1' then
clk_Rx <= '0';
RxDiv <= (others=>'0');
elsif clk='1' and clk'event then
clk_Rx <= '0';
if ClrDiv ='1' then
RxDiv <= (others=>'0');
elsif Top62='1' then
if RxDiv = 30 then
RxDiv <= (others=>'0');
clk_Rx <= '1';
else
RxDiv <= RxDiv + 1;
end if;
end if;
end if;
end process;

end solucion;

Para veriIicar el correcto Iuncionamiento de las diIerentes Irecuencias que
se pueden generar se procedio a la simulacion correspondiente. Es necesario
realizar dicha simulacion en todas las Irecuencias indicadas ya que este circuito
podria ser considerado como reIerencia para otros diseos que deseen
implementar un generador de baudios para un puerto de comunicacion
trabajando a diIerentes velocidades para otras aplicaciones.



Figura 4.2 Diagrama de simulacion para la velocidad de 115,200 bps










Figura 4.3 Diagrama de simulacion para la velocidad de 57,600 bps


Figura 4.4 Diagrama de simulacion para la velocidad de 38,400 bps



Figura 4.5 Diagrama de simulacion para la velocidad de 19,200 bps


Figura 4.6 Diagrama de simulacion para la velocidad de 9,600 bps




Figura 4.7 Diagrama de simulacion para la velocidad de 4,800 bps



Figura 4.8 Diagrama de simulacion para la velocidad de 2,400 bps



Figura 4.9 Diagrama de simulacion para la velocidad de 1,200 bps


4.2.2 Programa del diseo del modulo receptor.

El circuito 'mod_receptor implementa el modulo receptor de datos
seriales, cuya Iuncion es recibir una trama UART (1 bit de inicio, 8 bits de datos
y 1 bit de parada) y almacenar en un registro de 8 bits, listo para ser leido por la
unidad de control. Este modulo toma como reIerencia a la Irecuencia de
recepcion generado por el circuito 'baudios.

Este circuito se ha implementado utilizando una maquina de estados, el
cual en su estado inicial espera a que el 'bit de inicio (Start) por lo menos tenga
dos estados en nivel bajo para validarlo. Los datos son desplazados hacia la
derecha haciendo que el primer 'bit recibido sea el 'bit de mayor peso (D7),
luego de recibir los 8 bits de datos espera la ocurrencia del 'bit de parada
(stop).

El programa que Iue desarrollado utilizando el soItware Project Navigator
de Xilinx. Las simulaciones se realizaron con el programa MaxPlus II de
Altera.

A continuacion se muestra el listado del programa que muestra el diseo
del modulo receptor 'mod_receptor

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;



entity mod_receptor is
port ( reset, clk: in std_logic;
Dout: out std_logic_vector (7 downto 0);
ClrDiv: out std_logic;
RxErr: out std_logic;
RxRdyi: buffer std_logic;
Rx: in std_logic;
Top62: in std_logic;
Clk_Rx: in std_logic);
end mod_receptor;

architecture solucion of mod_receptor is
Type ESTADOS is (Idle, Start_Rx, Edge_Rx, Shift_Rx,
Stop_Rx, RxOVF);
signal RxFSM : ESTADOS;
signal Rx_Reg: std_logic_vector (7 downto 0);
signal RxBitCnt: integer;
constant NDbits: integer:= 8;
begin

Rx_FSM: process (reset, clk)
begin
if reset='1' then
Rx_Reg <= (others => '0');
Dout <= (others => '0');
RxBitCnt <= 0;
RxFSM <= Idle;
RxRdyi <= '0';
ClrDiv <= '0';
RxErr <= '0';
elsif clk='1' and clk'event then
ClrDiv <= '0';
if RxRdyi='1' then
RxErr <= '0';
RxRdyi <= '0';
end if;
case RxFSM is
when Idle =>
RxBitCnt <= 0;
if Top62='1' then
if Rx='0' then
RxFSM <= Start_Rx;
ClrDiv <='1';
end if;
end if;
when Start_Rx =>
if Clk_Rx = '1' then
if Rx='1' then
RxFSM <= RxOVF;
else
RxFSM<= Edge_Rx;
end if;
end if;
when Edge_Rx =>
if Clk_Rx = '1' then
RxFSM <= Shift_Rx;
if RxBitCnt = NDbits then
RxFSM <= Stop_Rx;
else
RxFSM <= Shift_Rx;
end if;
end if;
when Shift_Rx =>
if Clk_Rx = '1' then
RxBitCnt <= RxBitCnt + 1;
Rx_Reg <= Rx & Rx_Reg (Rx_Reg'high downto 1);
RxFSM <= Edge_Rx;
end if;
when Stop_Rx =>
if Clk_Rx = '1' then
Dout <= Rx_reg;
RxRdyi <='1';
RxFSM <= Idle;
end if;
when RxOVF =>
RxErr <= '1';
if Rx='1' then
RxFSM <= Idle;
end if;
end case;
end if;
end process;
end solucion;


En el siguiente diagrama de tiempos se demuestra como se convierte un
dato de prueba (F5H) que llega al modulo en modo serial acompaado del 'bit
de inicio y parada para transIormarse en un dato de 8 bits: 11110101
almacenado en la seal RXREG.


Figura 4.10 Diagrama de tiempos del dato de prueba F5H.

La activacion de la seal 'ClrDiv le indica al modulo generador de
baudios se utiliza para sincronizar la seal de reloj de recepcion (CLKRX). Se
puede mostrar como los datos se van desplazando de izquierda a derecha y al
Iinal de los 8 bits se activa la seal 'RxRdyi para indicar que ya se recibieron
los datos.

Los datos son cargados en paralelo como se muestra en la Figura 4.10.


4.3 Programas y simulacin del subsistema detector de
posicin.

Este subsistema denominado 'mouse, esta constituido por tres circuitos,
los cuales son: 'serie_ps2, 'acumuladores y 'contador_m, los que tienen la
Iuncion de realizar la Iuncion sensorial de la deteccion de posicion del 'robot
movil; el diseo y operacion, asi como sus seales de cada circuito y el
subsistema 'mouse se describen ampliamente en la secciones del 3.3.2 al
3.3.5.

4.3.1 Programa detector de posicin

El programa 'acumuladores como su nombre lo indica, comenzara a
sumar los desplazamientos periodicos realizados por el sensor de desplazamiento
del 'mouse. Ya que los desplazamientos son enviados cada vez que el 'mouse
se desplace, este circuito comenzara a acumular dichos desplazamiento hacia
adelante de manera positiva o hacia atras de manera negativa. Lo mismo
sucedera si se desplaza de izquierda a derecha. La cantidad del desplazamiento
estara limitado al numero de bits utilizado en la seal HORACC.

El programa que Iue desarrollado utilizando el soItware Project Navigator
de Xilinx. Las simulaciones se realizaron con el programa MaxPlus II de
Altera.

El listado del programa para el subsistema 'acumuladores es el
siguiente:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity acumuladores is
Port ( HOR : in std_logic_vector(8 downto 0);
clk : in std_logic;
reset : in std_logic;
HOR_ACC : buffer std_logic_vector(15 downto 0));
end acumuladores;

architecture Behavioral of acumuladores is
signal T: std_logic_vector(15 downto 0);
signal TA: std_logic_vector(15 downto 0);
begin
T <=
HOR(8)&HOR(8)&HOR(8)&HOR(8)&HOR(8)&HOR(8)&HOR(8)&HOR;

process(clk,reset)
begin
if reset='1' then
TA <= (others=>'0');
elsif clk='1' and clk'event then
TA <= TA + T;
end if;
HOR_ACC <= TA;
end process;

end Behavioral;


A continuacion se muestra la simulacion respectiva.




Figura 4.11 Respuesta del circuito de acumuladores.

4.3.2 Programa y simulacin del ~Contador_m

Este circuito es un contador ascendente o descendente dependiendo del
'bit de control 'up. La Iuncion es contar cuantos desplazamientos positivos o
negativos ha realizado el Mouse desde su posicion de reIerencia.

El programa Iue desarrollado utilizando el soItware Project Navigator de
Xilinx. Las simulaciones se realizaron con el programa MaxPlus II de Altera.

A continuacion se muestra el codigo VHDL del circuito 'contador_m

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity contador_m is
Port ( clk : in std_logic;
reloj : in std_logic;
reset : in std_logic;
up : in std_logic;
COUNT : out std_logic_vector(7 downto 0));
end contador_m;

architecture Behavioral of contador_m is
signal T: std_logic;
begin
process(clk)
begin
if clk='1'and clk'event then
T <= reloj;
end if;
end process;

process(T,reset)
variable CUENTA: std_logic_vector(7 downto 0);
begin
if reset='1'then
CUENTA := (others=>'0');
elsif T='1' and T'event then
if up='0' then
CUENTA := CUENTA + 1;
else
CUENTA := CUENTA - 1;
end if;
end if;
COUNT <= CUENTA;
end process;

end Behavioral;


A continuacion se muestra la simulacion respectiva del circuito 'contador_m



Figura 4.12 Respuesta del circuito 'contador_m.



4.3.3 Programa de interconexin de circuito detector de posicin.

A continuacion se realiza la interconexion de los circuitos diseados hasta
el momento, para ello se utiliza el estilo estructural del VHDL.

El programa que Iue desarrollado utilizando el soItware Project Navigator
de Xilinx.

El codigo VHDL para la interconexion es:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity mouse is
Port ( clk : in std_logic;
reset : in std_logic;
ps2_d : inout std_logic;


ps2_c : inout std_logic;
CUENTA_HOR : out std_logic_vector(7 downto 0);
CUENTA_VER : out std_logic_vector(7 downto 0));
end mouse;

architecture Behavioral of mouse is
component serie_ps2
PORT ( clk: IN std_logic;
reset: IN std_ulogic;
mov_horiz : buffer std_logic_vector(8 DOWNTO 0);
mov_ver : buffer std_logic_vector(8 DOWNTO 0);
ps2_d : INOUT std_logic;
ps2_c : INOUT std_logic;
fin_trama : buffer std_ulogic);
END component;

COMPONENT acumuladores
Port ( HOR : in std_logic_vector(8 downto 0);
clk : in std_logic;
reset : in std_logic;
HOR_ACC : buffer std_logic_vector(15 downto 0));
end COMPONENT;

COMPONENT contador_m
Port ( clk : in std_logic;
reloj : in std_logic;
reset : in std_logic;
up : in std_logic;
COUNT : out std_logic_vector(7 downto 0));
end COMPONENT;

signal HOR,VER: std_logic_vector(8 downto 0);
signal FIN_TRAMA: std_logic;
signal HOR_ACC,VER_ACC: std_logic_vector(15 downto 0);

begin

U0: serie_ps2 port map
(clk,reset,HOR,VER,ps2_d,ps2_c,FIN_TRAMA);
U1: acumuladores port map (HOR,FIN_TRAMA,reset,HOR_ACC);
U2: acumuladores port map (VER,FIN_TRAMA,reset,VER_ACC);
U3: contador_m port map
(clk,HOR_ACC(3),reset,HOR(8),CUENTA_HOR);
U4: contador_m port map
(clk,VER_ACC(3),reset,VER(8),CUENTA_VER);

end Behavioral;



4.3.4 Programa para lectura de coordenadas

A continuacion se muestra el programa desarrollado para leer las
coordenadas 'X e 'Y que envia el 'Mouse periodicamente cada vez que
realiza un movimiento:


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;

ENTITY serie_ps2 IS
PORT (clk : IN std_logic;
Reset : IN std_logic;
mov_horiz : buffer std_logic_vector(8 DOWNTO 0);
mov_ver : buffer std_logic_vector(8 DOWNTO 0);
ps2_d : INOUT std_logic;
ps2_c : INOUT std_logic;
fin_trama : buffer std_logic);
END serie_ps2;

ARCHITECTURE solucion OF serie_ps2 IS

SIGNAL registro_emision : std_logic_vector(11 DOWNTO 0);
SIGNAL receptor, emisor, memorizar : boolean;
SIGNAL tiempo_inic, direccion_fin: boolean;
SIGNAL direccion_tot : boolean;
SIGNAL derecho : std_logic;
SIGNAL izquierdo : std_logic;
SIGNAL medio : std_logic;
SIGNAL x0, y0 : std_logic;
TYPE estados IS (inicio, tiempo, rts, emision,
recepcion1, inicio_trama, recepcion2,memo);
SIGNAL EA : estados;
SIGNAL fin_tiempo : std_logic;
SIGNAL fin_byte : std_logic;
SIGNAL fin_emision : std_logic;
SIGNAL hecho_e : std_logic;
SIGNAL hecho_s : std_logic;
SIGNAL h_e : std_logic;
SIGNAL hs_filtro : std_logic;
SIGNAL registro_EA : std_logic_vector(31 DOWNTO 0);
SIGNAL registro_h : std_logic_vector(31 DOWNTO 0);
SIGNAL registro_v : std_logic_vector(31 DOWNTO 0);


BEGIN

tiempo_inic <= (EA = inicio);
direccion_tot <= (EA = tiempo);
emisor <= (EA = emision);
direccion_fin <= (EA = emision) OR (EA = rts) ;
receptor <= (EA = recepcion1) OR (EA = recepcion2);
memorizar <= (EA = memo);
hecho_e <=ps2_d;
ps2_d <= hecho_s WHEN direccion_fin ELSE 'Z';

ps2_c <= '0' WHEN direccion_tot ELSE 'Z';
h_e <= ps2_c ;

filtro: PROCESS
VARIABLE registro : std_logic_vector(7 DOWNTO 0);
BEGIN
WAIT UNTIL rising_edge(clk);
registro := registro(6 DOWNTO 0) & h_e ;
IF registro = "11111111" THEN
hs_filtro <= '1';
END IF;
IF registro = "00000000" THEN
hs_filtro <= '0';
END IF;
END PROCESS filtro;

temporizacion: PROCESS
CONSTANT duracion : natural := 5000; -- 100 us a 50Mhz
VARIABLE decom : natural RANGE 0 TO duracion;
BEGIN
WAIT UNTIL rising_edge(clk);
IF tiempo_inic THEN
decom := duracion;
fin_tiempo <= '0';
ELSIF decom /= 0 THEN
decom := decom -1;
ELSE
fin_tiempo <= '1';
END IF;
END PROCESS temporizacion;


emis: PROCESS(emisor, hs_filtro)
VARIABLE nb_bits : natural RANGE 0 TO 11;
VARIABLE registro_emision: std_logic_vector(11 DOWNTO 0);
CONSTANT mot_f4: std_logic_vector(11 DOWNTO 0):=
"0101111010
00";
BEGIN
IF emisor = false THEN
registro_emision := mot_f4;
nb_bits := 0;
ELSIF falling_edge(hs_filtro) THEN
registro_emision:= '0' & registro_emision(11 DOWNTO 1);
nb_bits := nb_bits + 1;
END IF;
IF nb_bits = 11 THEN
fin_emision <= '1';
ELSE
fin_emision <= '0';
END IF;
hecho_s <= registro_emision(0);
END PROCESS emis;

recepcion : PROCESS(receptor, hs_filtro)
VARIABLE nb_bits : natural RANGE 0 TO 33;
VARIABLE registro_recepcion: std_logic_vector(32 DOWNTO 0);

BEGIN
IF receptor = false THEN
nb_bits := 0;
ELSIF falling_edge(hs_filtro) THEN
registro_recepcion:=hecho_e &registro_recepcion(32
DOWNTO 1);
nb_bits := nb_bits + 1;
END IF;
IF nb_bits = 11 THEN
fin_byte <= '1';
ELSE
fin_byte <= '0';
END IF;
IF nb_bits = 33 THEN
fin_trama <= '1';
ELSE
fin_trama <= '0';
END IF;
mov_ver <= registro_recepcion(6)& registro_recepcion(30
DOWNTO 23);
mov_horiz <=registro_recepcion(5)&registro_recepcion(19
DOWNTO 12);
izquierdo <= registro_recepcion(1);
medio <= registro_recepcion(3);
derecho <= registro_recepcion(2);
x0 <= registro_recepcion(7);
y0 <= registro_recepcion(8);
END PROCESS recepcion;

memor: PROCESS
BEGIN
WAIT UNTIL rising_edge(clk);
IF tiempo_inic THEN

registro_EA <= (OTHERS => '0');
registro_h <= (OTHERS => '0');
registro_v <= (OTHERS => '0');
ELSIF memorizar THEN
registro_EA <= "000000000000000000000000"
&'1'&'1'&'1'&y0&x0&izquierdo&medio&derecho;
registro_h<= mov_horiz(8)&mov_horiz(8)&mov_horiz(8)
&mov_horiz(8)&mov_horiz(8)&mov_horiz(8)
&mov_horiz(8)&mov_horiz(8)&mov_horiz(8)
&mov_horiz(8)&mov_horiz(8)&mov_horiz(8)
&mov_horiz(8)&mov_horiz(8)&mov_horiz(8)
&mov_horiz(8)&mov_horiz(8)&mov_horiz(8)
&mov_horiz(8)&mov_horiz(8)&mov_horiz(8)
&mov_horiz(8)&mov_horiz(8)&mov_horiz;

registro_v <= mov_ver(8)&mov_ver(8)&mov_ver(8)
&mov_ver(8)&mov_ver(8)&mov_ver(8)
&mov_ver(8)&mov_ver(8)&mov_ver(8)
&mov_ver(8)&mov_ver(8)&mov_ver(8)
&mov_ver(8)&mov_ver(8)&mov_ver(8)
&mov_ver(8)&mov_ver(8)&mov_ver(8)
&mov_ver(8)&mov_ver(8)&mov_ver(8)
&mov_ver(8)&mov_ver(8)&mov_ver;
END IF;
END PROCESS memor;

secuenciador: PROCESS
BEGIN
WAIT UNTIL rising_edge(clk);
IF reset = '1' THEN
EA <= inicio;
ELSE
CASE EA IS
WHEN inicio => EA <= tiempo;
WHEN tiempo => IF fin_tiempo = '1' THEN
EA <= rts;
END IF;
WHEN rts => EA <= emision;
WHEN emision => IF fin_emision = '1' THEN
EA <= recepcion1;
END IF;
WHEN recepcion1 => IF fin_byte = '1' THEN
EA <= inicio_trama ;
END IF;
WHEN inicio_trama => EA <= recepcion2;
WHEN recepcion2 => IF fin_trama = '1' THEN
EA <= memo;
END IF;
WHEN memo => EA <= recepcion2;
END CASE;
END IF;
END PROCESS secuenciador;

END solucion;

4.4 Programa principal y simulacin para el subsistema de
control.

El analisis y desarrollo del diseo de este subsistema principal, se describe
en el capitulo anterior, en la seccion 3.4.
El listado del programa principal del sistema, para el subsistema de
'control, es el siguiente:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity CONTROL is
Port ( clk : in std_logic;
reset : in std_logic;
start : in std_logic;
UART_RX : in std_logic_vector(7 downto 0);
dato_val : in std_logic;
sel_visor : out std_logic;
CUENTA_HOR : in std_logic_vector(7 downto 0);

CUENTA_VER : in std_logic_vector(7 downto 0);
A : out std_logic_vector(3 downto 0);
B : out std_logic_vector(3 downto 0);
C : out std_logic_vector(3 downto 0);
D : out std_logic_vector(3 downto 0);
MOTOR_UP : out std_logic;
MOTOR_DOWN : out std_logic;
MOTOR_IZQ : out std_logic;
MOTOR_DER : out std_logic);
end CONTROL;

architecture Behavioral of CONTROL is
type ESTADOS is (S0,S1,S2,S3,S4,S5,S6,S7,S8,S9);
signal EA: ESTADOS;
begin

process(clk,reset)
variable contador : std_logic_vector(26 downto 0);
variable FIN_VER: std_logic_vector(7 downto 0);
variable FIN_HOR: std_logic_vector(7 downto 0);
begin

if reset='1'then
EA <= S0;
elsif clk='1' and clk'event then
case EA is
when S0=> A <= "1010";
B <= "1010";
C <= "1010";
D <= "1010";
if start='1' then
EA <= S1;
else
EA <= S0;
end if;
contador := (others=>'0');
sel_visor <= '0';
MOTOR_UP <= '0';
MOTOR_IZQ <= '0';
MOTOR_DER <= '0';
MOTOR_DOWN <= '0';

when S1=> A <= "1011";
B <= "1100";
C <= "1111";
D <= "1111";
if dato_val='1' then
EA <= S2;
else
EA <= S1;
end if;
contador := (others=>'0');
sel_visor <= '0';

when S2=> C <= UART_RX (7 downto 4);
D <= UART_RX (3 downto 0);
FIN_HOR := UART_RX;
if dato_val='1' then
EA <= S2;
else
EA <= S3;
end if;
contador := (others=>'0');
sel_visor <= '0';

when S3=> contador := contador + 1;
if contador = 50000000 then
EA <= S4;
else
EA <= S3;
end if;
sel_visor <= '0';

when S4=> A <= "1101";
B <= "1100";
C <= "1111";
D <= "1111";
if dato_val='1' then
EA <= S5;
else
EA <= S4;
end if;
contador := (others=>'0');
sel_visor <= '0';

when S5=> C <= UART_RX (7 downto 4);
D <= UART_RX (3 downto 0);
FIN_VER := UART_RX;
if dato_val='1' then
EA <= S5;
else
EA <= S6;
end if;
contador := (others=>'0');
sel_visor <= '0';

when S6=> contador := contador + 1;
if contador = 50000000 then
EA <= S7;
else
EA <= S6;
end if;
sel_visor <= '0';
when S7=> A <= CUENTA_VER(3 downto 0);
B <= CUENTA_VER(7 downto 4);
C <= CUENTA_HOR(3 downto 0);
D <= CUENTA_HOR(7 downto 4);
sel_visor <= '1';
contador := (others=>'0');
if FIN_HOR < CUENTA_HOR then
MOTOR_UP <= '0';
MOTOR_DOWN <= '1';
elsif FIN_HOR = CUENTA_HOR then
MOTOR_DOWN <= '0';
MOTOR_UP <= '0';
else
MOTOR_UP <= '1';
MOTOR_DOWN <= '0';
end if;
if FIN_VER < CUENTA_VER then
MOTOR_DER <= '0';
MOTOR_IZQ <= '1';
elsif FIN_VER = CUENTA_VER then
MOTOR_DER <= '0';
MOTOR_IZQ <= '0';
else
MOTOR_DER <= '1';
MOTOR_IZQ <= '0';
end if;
if (FIN_HOR = CUENTA_HOR) and
(FIN_VER=CUENTA_VER) then
EA <= S8;
else
EA <= S7;
end if;
when S8=> A <= "1111";
B <= "1111";
C <= "1111";
D <= "1111";
contador := contador + 1;
if contador = 25000000 then
EA <= S9;
contador := (others=>'0');
else
EA <= S8;
end if;
sel_visor <= '0';
when S9=> A <= FIN_VER(3 downto 0);
B <= FIN_VER(7 downto 4);
C <= FIN_HOR(3 downto 0);
D <= FIN_HOR(7 downto 4);
contador := contador + 1;
if contador = 25000000 then
EA <= S8;
contador := (others=>'0');
else
EA <= S9;
end if;
sel_visor <= '1';
end case;
end if;
end process;
end Behavioral;


4.5 Programa y simulacin del subsistema monitor de posicin.

La descripcion del Iuncionamiento de este sistema que permite desarrollar
la Iuncion de subsistema de salida, permitiendo visualizar inIormaciones
diversas generadas por el sistema: programacion de posicion Iinal del 'robot
movil, monitorizacion de la posicion instantanea del robot movil, inIormacion
de alcanzar posicion Iinal; esta descrita en el capitulo anterior, en la seccion 3.5.

4.5.1Programa del monitoreo de posicin.

El listado del programa para el subsistema monitor de posicion del robot es
el siguiente:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity VISOR is
Port ( clk : in std_logic;
reset : in std_logic;
A : in std_logic_vector(3 downto 0);
B : in std_logic_vector(3 downto 0);
C : in std_logic_vector(3 downto 0);
D : in std_logic_vector(3 downto 0);
display : out std_logic_vector(6 downto 0);
T : out std_logic_vector(3 downto 0));
end VISOR;

architecture Behavioral of VISOR_ALT is
signal Q: std_logic_vector(1 downto 0);


signal N: std_logic_vector(3 downto 0);
begin
-- Implementacin del MUX4a1
-- ========================================================
Process(A,B,C,D,Q)
begin
case Q is
when "00"=> N <= A;
when "01"=> N <= B;
when "10"=> N <= C;
when others=> N <= D;
end case;
end process;

-- Implementacin del DECA7SEG nodo comn
-- ========================================================
Process(N)
begin
case N is --gfedcba
when "0000" => display <="1000000"; -- 0
when "0001" => display <="1111001"; -- 1
when "0010" => display <="0100100"; -- 2
when "0011" => display <="0110000"; -- 3
when "0100" => display <="0011001"; -- 4
when "0101" => display <="0010010"; -- 5
when "0110" => display <="0000010"; -- 6
when "0111" => display <="0111000"; -- 7
when "1000" => display <="0000000"; -- 8
when "1001" => display <="0011000"; -- 9
when "1001" => display <="0011000"; -- 9
when "1010" => display <="0001000"; -- A
when "1011" => display <="0000011"; -- B
when "1100" => display <="1000110"; -- C
when "1101" => display <="0100001"; -- D
when "1110" => display <="0000110"; -- E
when others => display <="0001110"; -- F
end case;
end process;

-- Implementacin del DEC2a4
-- =======================================================
Process(Q)
Begin
case Q is
when "00"=> T <="1110";
when "01"=> T <="1101";
when "10"=> T <="1011";
when OTHERS=> T <="0111";
end case;
end process;

-- Implementacin del Divisor de 50MHz a 200Hz
-- =======================================================
Process(clk)
variable temporal: std_logic_vector(24 downto 0);
begin
if clk='1' and clk'event then
temporal := temporal + 1;
if temporal = 250000 then
Q <= Q + 1;
temporal := (others=>'0');
end if;
end if;
end process;
end Behavioral;


Para el desarrollo del 'VISOR se ha utilizado el estilo Ilujo de datos para
disear el multiplexor de 4 a 1, el decodiIicador a 7 segmentos (de tipo anodo
comun) y el decodiIicador de 2 a 4.

Para implementar el contador de 2 bits (Q) de 200Hz a partir de la
Irecuencia de 50MHz se ha utilizado el estilo algoritmico. Despues de compilar
el programa en el Project Navigator se obtuvo el siguiente resultado:



Figura 4.13 Circuito 'VISOR implementado en VHDL.


Se pueden notar las 4 entradas de cuatro bits cada una: A, B, C y D asi
como la entrada de RELOJ de 50MHz. Tambien las salidas para cada uno de los
segmentos y los controles correspondientes a los DISPLAY(T).

La codiIicacion a siete segmentos es diIerente para cada uno de los
circuitos: VISOR y VISORALT, como se muestra en la siguiente Tabla 4.1.



Cdigo
Binario VISOR VISOR_ALT
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A -
1011 B H
1100 C =
1101 D V
1110 E (apagado)
1111 F (apagado)

Tabla 4.1 CodiIicacion de los circuitos :VISOR y VISORALT

La tabla de decodiIicacion diseado para el circuito VISORALT descrito
en VHDL se muestra en el siguiente listado de programa:

4.5.2 Programa del decodificador numrico
-- =============================================================
-- Implementacin del DECA7SEG nodo comn
-- =============================================================
Process(N)
begin
case N is --gfedcba
when "0000" => display <="1000000"; -- 0
when "0001" => display <="1111001"; -- 1
when "0010" => display <="0100100"; -- 2
when "0011" => display <="0110000"; -- 3
when "0100" => display <="0011001"; -- 4
when "0101" => display <="0010010"; -- 5
when "0110" => display <="0000010"; -- 6
when "0111" => display <="0111000"; -- 7
when "1000" => display <="0000000"; -- 8
when "1001" => display <="0011000"; -- 9
when "1010" => display <="0111111"; -- -
when "1011" => display <="0001011"; -- h
when "1100" => display <="0110111"; -- =
when "1101" => display <="1100111"; -- v
when "1110" => display <="1111111"; --
when others => display <="1111111"; --
end case;
end process;

En la Figura 4.14 se muestra la simulacion realizada con la herramienta
MAXPLUS II del Iabricante ALTERA.


La simulacion realizada es considerando la Irecuencia de 50MHz y solo
durante 20ms. Ya que durante este tiempo podemos apreciar por lo menos a los
diIerentes valores que toma la seal Q (00, 01, 10 y 11), asi como la habilitacion
de cada uno de los cuatro 'displays numericos a 7 segmentos mostrando los
siguientes valores:

En el primer 'display se visualiza el valor 1 durante 5ms.
En el segundo 'display se visualiza el valor 2 durante 5ms.
En el tercer 'display se visualiza el valor 3 durante 5ms.
En el cuarto 'display se visualiza el valor 4 durante 5ms.

Este proceso se repite periodicamente, dando la sensacion a la vista
humana que se esta visualizando el valor 1234 en cuatro 'displays de manera
independiente.





Figura 4.14 Simulacion del circuito visor por 20ms.






4.6 Programa y simulacin del subsistema de control de motores
paso a paso.

El diseo y Iuncionamiento del circuito que gobierna al motor de paso a
paso para el control del movimiento del 'robot movil, se encuentra explicado
en la seccion 3.6 del capitulo anterior, cuyo esquema en bloque se muestra a
continuacion:


Figura 4.15 Circuito de control para motores PAP.


El listado del programa en VHDL es el siguiente:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity MOTOR1 is
Port ( CLK : in std_logic;
UP,DOWN: in std_logic;
L : out std_logic_vector(3 downto 0);
leds : out std_logic_vector(3 downto
0));
end MOTOR1;

architecture Behavioral of MOTOR1 is
signal CONTADOR: std_logic_vector(23 downto 0);
signal GENERA: std_logic_vector(2 downto 0);
signal L1: std_logic_vector(3 downto 0);
begin
process(CLK)
begin
if CLK='1' and CLK'event then
CONTADOR <= CONTADOR + 1;
if CONTADOR = 500000 then -- T=10ms
CONTADOR <= (others=>'0');
if UP='1' then
GENERA <= GENERA - 1;
elsif DOWN = '1' then


GENERA <= GENERA + 1;
end if;
end if;
end if;
end process;

with GENERA select L1 <= "1000" when "000",
"1100" when "001",
"0100" when "010",
"0110" when "011",
"0010" when "100",
"0011" when "101",
"0001" when "110",
"1001" when others;

L <= not L1;
leds <= not L1;
end Behavioral;


La simulacion del circuito se muestra en el siguiente graIico, donde se
muestra los pasos generados en los primeros 50ms:






















































































CAPITULO 5


RESULTADOS OBTENIDOS

5.1 Resultados obtenidos del diseo.

Despues de haber realizado el diseo, las simulaciones e implementacion;
los resultados obtenidos son los siguientes:

Se realizo el diseo y la simulacion del sistema para la
programacion de un robot movil en VHDL.

Se tiene implementado el sistema en un FPGA XC3S200E de la
Familia SPARTAN-3 de XILINX, el cual es controlado por un
soItware desde el computador.

La programacion para activar el movimiento del robot alcanza
niveles altos de precision (Del orden de los milimetros).

Representa uno de los primeros prototipos de un 'robot movil
controlados con tecnologia microelectronica, utilizando FPGA, con
lo cual se tiene las ventajas para modiIicar, expandir, aadir
Iunciones sin expansion del hardware, asi como reprogramar las
Iunciones no estando limitado a la cantidad de recursos que
podemos utilizar, como suceden en diseos basados en
componentes estandares (microcontroladores, microprocesadores,
DSP.).

Se tiene la capacidad de implementar algoritmos matematicos muy
complejos que no podrian ser soportados por los microcontroladores
(por ejemplo si se desea realizar el movimiento del movil utilizando
procesamiento de imagenes).

El sistema es capaz de adaptarse a otros requerimientos de diseo
con el Iin de realizar otras tareas, sin tener que reescribir todo el
codigo como se haria utilizando logica secuencial como ocurre en
los diseos en base a microcontroladores o DSPs.

El diseo de este sistema es independiente de la tecnologia y del
Iabricante. Por ejemplo, todo el codigo Iue simulado utilizando el
soItware de sintesis y simulacion MAXPLUS II del Iabricante
ALTERA, pero la implementacion se realizo utilizando el soItware
de sintesis Project Navigator del Iabricante XILINX con lo cual se
obtiene la ventaja de utilizar lenguajes de descripcion de hardware el
cual hace que nuestro diseo sea totalmente independiente del
Iabricante o tipo de implementacion.

Para los paises en vias de desarrollo como el nuestro, la logica
programable es una de las diIerentes alternativas que puedan permitir la creacion
de nuestra propia tecnologia, pudiendo innovar productos, desarrollando diseos
que esten orientados a nuestra realidad.

5.2 Implementacin del diseo.

El diseo del 'robot movil se implemento considerando las
caracteristicas de su estructura: mecanica, electrica, electronica e inIormatica.
Incidiendo en los aspectos practicos de su Iuncionamiento. La decision de
utilizar un FPGA para la implementacion se debe a las diversas ventajas que
proporciona, las cuales se mencionan a continuacion:
1. La Iacilidad de reprogramacion del FPGA hace muy Ilexible la
posibilidad de corregir errores o de hacer mejoras a Iuturo de alguna
de las diIerentes partes que conIorman el sistema de control del
'robot movil.
2. Se reduce en Iorma considerable el espacio que ocupan los
componentes sobre la tarjeta de desarrollo en el cual se implemento
el sistema de control.
3. Se reduce el Iactor de retrazo (snew) entre las seales. Ademas se
reduce el Iactor de ruido electrico.

La implementacion del sistema de control del 'robot movil se realizo
utilizando un FPGA XC3S200E de la Iamilia Spartan-3, de la compaia Xilinx,
implementado en una tarjeta de desarrollo de Xilinx Spartan-3 Starter Kit Board.
En las Figuras siguientes se muestran la implementacion del prototipo Iinal del
'robot movil, en el cual se muestran las diIerentes partes de su estructura.






Figura 5.1 Implementacion Iinal del 'robot movil.





Figura 5.2 Puerto RS-232 para comunicacion PC-FPGA.



Figura 5.3 Sistema sensorial de posicion.




Figura 5.4 Circuito de potencia de motores PAP y motor de
Control de giro de las ruedas delanteras.

Figura 5.5 Motor PAP para realizar la traccion del 'robot movil.



Figura 5.6 Bateria para alimentar los motores PAP.


Figura 5.7 Comunicacion Computador- FPGA.


5.3 Reportes finales del procesamiento de los programas

En esta seccion se muestran el total de los reportes Iinales generados luego
del procesamiento de los programas con el SoItware ISE Project Navigator 7.1,
y la ejecucion de los programas desarrollados, sintetizados y simulados con el
diseo del sistema de control del 'robot movil. En el cual se pueden apreciar
los resultados mas importantes, entre ellos:
Los recursos utilizados del FPGA, en el cual se puede apreciar la alta capacidad
que posee el dispositivo XC3S200E de XILINX; permitiendo al diseo tener la
posibilidad de expandir subsistemas, incrementando mayores prestaciones segun
requerimiento de las aplicaciones.

Figura 5.8 Reporte Iinal generado por la ejecucion de los programas.



Figura 5.9 Directorio de programas organizados para el 'robot movil.


Figura 5.10 Reporte general del procesamiento del sistema de control.


Figura 5.11 Diagrama esquematico del diseo Iinal del sistema.





Figura 5.12 Reporte de errores de operacion.





Figura 5.13 Asignacion de Iunciones a los pines del FPGA.




Figura 5.14 Reporte de retardos en el sistema.




5.4 Perspectivas de implementacin con ASIC en nuestro pas

La microelectronica en nuestro pais, tuvo su epoca de inicio y desarrollo
en los primeros aos de la decada del 90 del siglo pasado; donde la PontiIicia
Universidad Catolica del Peru (PUCP), presento por primera vez en nuestro
pais, proyectos desarrollados con ASICs. Y posteriormente con el uso de los
PLD (CPLD, FPGA, etc.).

Asimismo a mediados de la decada pasada se crearon grupos de
Microelectronica en la Universidad Nacional de Ingenieria, Universidad Ricardo
Palma, y otros; que por diversas razones dejaron de continuar desarrollandose.

En nuestra Universidad Nacional Mayor de San Marcos, tambien se
desarrollaron proyectos e incluso se creo la Maestria de Microelectronica y
precisamente este trabajo de tesis es el Iruto de esta Maestria en mencion.

Actualmente la mayoria de las universidades peruanas donde se imparte la
especialidad de Ingenieria electronica no promueven organizadamente proyectos
de diseo microelectronico; con la mentalidad de que en nuestro pais no existen
Iabricas de dispositivos integrados. Pero sin embargo hay instituciones como la
PontiIicia Universidad Catolica del Peru a traves de su Grupo de
Microelectronica; sigue desarrollando diversos trabajos (Proyectos,
publicaciones, etc. ) en el marco de la microelectronica a nivel nacional e
internacional..

Por lo que en la universidad peruana debe cambiar de mentalidad
academica y proIesional orientando a la especialidad de electronica al desarrollo
de la ingenieria en la microelectronica (Proyectos, Diseos, Desarrollos, etc.)
con proyectos cuyo desarrollo sea multidisciplinario con la participacion de
diversas universidades nacionales y extranjeras para desarrollar tecnologia en
nuestro pais y de este modo propiciar nuestro desarrollo nacional. Asimismo
promover y participar en los eventos nacionales e internacionales en temas
relacionados a la microelectronica para mantener actualizados los programas
academicos de nuestra universidad peruana y ser el soporte tecnologico de
nuestra industria nacional.

Recordemos que el invencion de la microelectronica es a partir de 1959
(Fabricacion del primer circuito integrado) y su desarrollo hasta la actualidad es
el Iactor primario de evolucion y cambios tecnologicos, sociales, politicos y
economicos de nuestra sociedad actual a nivel mundial.














CONCLUSIONES

1. La programacion de la unidad de control, para el desplazamiento del 'robot
movil permite alcanzar la medida de la distancia, con un alto grado de
precision (en el orden de milimetros), gracias al diseo y a los motores PAP,
programados para una alta resolucion (1.8 grados).
2. El diseo representa uno de los primeros prototipos de 'robot movil
desarrollado sobre dispositivos FPGA, el cual permite Ilexibilizar sus
caracteristicas de control, modiIicando sus parametros de control, aadir el
hardware necesario para reprogramar las Iunciones. Por lo que no esta
limitado a los recursos de dispositivos programables estandares
(microprocesadores, microcontroladores, procesador de seales digitales,
etc.).
3. El diseo presenta la capacidad de implementacion de algoritmos
matematicos muy complejos que no pueden ser soportados por dispositivos
estandares. Por ejemplo en soporte del sistema con camaras digitales en el
cual se deben eIectuar procesamiento de imagenes.
4. El diseo del sistema es capaz de adaptarse a otros requerimientos de diseo
con el Iin de realizar otras tareas, sin tener que re-escribir todo el codigo del
programa como se haria utilizando logica secuencial como ocurre en los
diseos en base a microcontroladores o procesador digital de seales (DSP).
5. El diseo del sistema de control y programacion del 'robot movil es
independiente de la tecnologia y del Iabricante de dispositivos electronicos,
en el cual los programas desarrollados en el diseo de las diversas etapas se
ha simulado utilizando el soItware de sintesis y simulacion MAXPLUS II
de ALTERA; pero la implementacion se realizo utilizando el soItware de
sintesis Project Navigator de XILINX. Con lo cual se obtiene la ventaja de
utilizar lenguajes de descripcion de hardware el cual hace que nuestro diseo
sea totalmente independiente del Iabricante o tipo de implementacion en un
FPGA o en un ASIC.
6. Para aplicaciones en medios como el nuestro, la logica programable basado
en los FPGA, representa una opcion realizable, en la creacion de nuestra
propia tecnologia; en la innovacion de aplicaciones desarrollados segun
nuestra realidad.
7. Segun las caracteristicas tecnicas, su evolucion y Iactores de costos de los
FPGA, complementado con los tiempos de diseo e implementacion
requeridos en diseos basados sobre esta plataIorma, tenemos para nuestra
realidad una alternativa viable para desarrollar nuestra propia tecnologia con
relativa independencia de los Iabricantes de dispositivos electronicos
estandares.
8. Segun los reportes Iinales del programa Project Manager 7.1; podemos
aIirmar que el porcentaje de los recursos totales utilizados del FPGA,
alcanza el 23 de los recursos del FPGA, permitiendo disponer de
posibilidades para expansiones Iuturas sin adicionar hardware al diseo,
asimismo modiIicar el comportamiento del 'robot movil o incrementar
prestaciones en el diseo realizado.






















BIBLIOGRAFIA

1] Acha Santiago, Miguel Rioseras, Miguel Lozano, Manuel Castro, Julio
Perez; Logica Digital Integrada; Editorial AlIaomega Ra-ma; Mexico,
2006.
2] Angulo J. y Aviles R.; Curso de Robotica; Editorial ParaninIo; Espaa
2004.
3] Angulo J.; Robotica Practica; Tecnologia y Aplicaciones; Editorial
ParaninIo; Espaa, 2003.
4] Angulo J.; Romero S., Angulo I.; Microbotica, Tecnologia, Aplicaciones
y Montaje; Editorial ParaninIo; Espaa, 2003.
5] Barrientos A., L. Pein, C. Balaguer, R. Aracil; Fundamentos de
Robotica; Editorial Mc Graw Hill; Mexico, 2003.
6] Croquet Michael; PC y Robotica. Tecnicas de InterIaz; Editorial
ParaninIo; Espaa, 2003.
7] Dudek Gregory, Michael Jenkin; Computational Principies oI Mobile
Robotics; Cambrigde University Press; EEUU, 2003.
8] Furman Michael D.; VHDL (Computer Hardware Description
Language); Kluwer Academic Publishers, Espaa, 2003.
9] Garcia Iglesias Jose, Emilio Perez Iglesias; Dispositivos Logicos
Programables (PLD); Editorial AlIaomegaRa-ma; Mexico, 2006.
10] Groover M. , M. Weiss, R. Nagel; Robotica Industrial; Editorial Mc.
Graw Hill; Espaa, 2004.
11] Hamblen James O., Michael D. Furman; Rapid prototyping oI Digital
Systems; Kluwer Academic Publishers; Espaa, 2004.
12] Jaeger Richard C., Travis N. Blalock; Diseo de Circuitos
Microelectronicas; Editorial Mc Graw Hill, Segunda Edicion; Espaa,
2005.
13] Mandado Enrique; Sistemas Electronicos Digitales; Editorial AlIaomega
Marcombo; Espaa, 2002.
14] Marcovittz Alan B.; Diseo Digital; Editorial Mc Graw Hill, Segunda
Edicion; Mexico, 2005.
15] Maxinez David G., Alcala J.; VHDL El Arte de Programar Sistemas
Digitales; Compaia Editorial Continental. Instituto Tecnologico y de
Estudios Superiores de Monterrey. Campus Estado de Mexico, 2005.
16] Rubio Antonio, Josep Altet, Xavier Aragones, Jose Luis Gonzales, Diego
Mateo, Francesc Moll.; Diseo de Circuitos y Sistemas Integrados;
Ediciones UPC (Universitat Politecnica de Catalunya); Editorial
AlIaomega, Espaa, 2005.
17] Torres Valle Francisco Javier; Sintesis y Descripcion de Circuitos
Digitales Utilizando VHDL; Universidad Autonoma de Guadalajara;
Mexico, 2003.
18] Torroja Yago, seraIin Olcoz, Luis Teres, Eugenio Villar; VHDL
Lenguaje Estandar de Diseo Electronico; Editorial Mc. Graw Hill;
Espaa, 2002.
19] Wakerly Jhon F. ; Diseo Digital-Principios y Practicas; Editorial
Prentice Hall; Mexico, 2005.
20] Xilinx

, 'The Programmable Logic Data Book, 2002-2005.


21] Xilinx
, '
Spartan-3 Starter Kit Board User Guide, Abril 2006.
22] Xilinx
,
' Spartan-3 FPGA XC3S200-4FT256C, Julio 2006.
23] Xilinx

, 'Spartan-3 FPGA Family Complete Data Sheet, Enero 2006.


ARTICULOS
24] Alvarez L. Rodriguez, C. Sanchez P.; Diseo VHDL sobre FPGA;
Universidad de Sevilla. Departamento de Electronica; Espaa, 2003.
25] Angulo Jose M.; Microbotica: Una tecnologia revolucionaria de Iuturo
prometedor; Febrero de 1999.
26] Ayala Mauricio Guzman, J. Gonzales hernandez; Desarrollo de un Robot
Movil con control inteligente usando Algoritmos Evolutivos y un FPGA;
Corporacion Universitaria del Meta Colombia, 2006.
27] Bassi Danilo; Robotica: Una vision actual de la investigacion en robots
moviles y control sensorial; Universidad de Chile, 1999..
28] Brown Stephen, Jhonathan Rose; FPGA and CPLD Architectures; A
Tutorial; IEEE Design and Test oI Computers, EEUU, 1999.
29] GottigreIi Sabastian, Alejandro J. Garcia; Analisis Lenguajes de
EspeciIicacion de Agente en Robotica Movil; U. N.Sur; Argentina, 2003.
30] IEEE ASICs, and ASIC design. Integrated System Design (ISSN 1080-
2797, TK528,1999).
31] IEEE Custom Integrated Circuits ConIerence (ISSN 0886-5930,
TK7874.C865, 1999).
32] IEEE Transactions on Very Large Scale Integration (VLSI) Systems
Design (ISSN 1063-8210, TK7874.I3273, 1999).
33] Salinas Perez Irma, Yescas Mendoza Edgardo; Diseo y Construccion de
un robot movil a control remoto; Postgrado U.T.M.; Espaa, 2006.
34] Utrilla Salazar Dario; Diseo y construccion de un IC para el control de
un motor PAP, utilizando VHDL. Revista TECNIA Vol 16 No 2. UNI.
ENLACES INTERNET Fecha de consulta
35] http://www.altera.com 17/10/2005
36] http://bleex.me.berkeley.edu/lex.htm (accessed 2007). 12/12/2006
37] http:// cIievalladolid2.net. 05/11/2006
38] http://www-ece.engr.utk.edu/ece. 23/04/2007
39] http://geocities.com/eureka/4595/robotics. 05/09/2006
40] http:// iabot.iespana.es.ciencia.robotica. 15/02/2007
41] http://www.metalunivers.com/1pm/Pm02/Robotica.html. 24/04/2006
42] http:// monograIias.com.. 10/08/2005
43] http://nppp.jpl.nasa.gov/dmg/jpl/loc/asic.. 25/02/2007
44] http:// proton.ucting.udg.mx. 17/08/2007
45] http:// robotec11.tripod.com. 09/11/2006
46] http://www.sciencemag.org/cgi/content/Iull/318/5853/1098. 10/08/2006
47] htpp:// www.sciencemag.org/cgi/collection/engineering. 28/02/2006
48] http://techweb.cmp.com/eet. 17/10/2006
49] http://www.xilinx.com. 26/03/2007




ANEXOS

ANEXO A

ARQUITECTURA DE PLD COMERCIALES


A.1 Evolucin de los PLD y el porqu de los FPGA.

Los Dispositivos Logicos Programables (PLD) los podemos encontrar bajo
tres tipos de arquitecturas:
PAL (Logica de arreglo programable)
PROM (Memoria de solo lectura programable)
PLA (Arreglo Logico Programable)
Las tres arquitecturas se basan en tecnologia de programacion mediante Iusibles.

La ventaja de utilizar el PLD en el diseo de sistemas digitales es que
puede programarse de manera que incorpores una Iuncion logica compleja en un
solo CI (en base a suma de terminos productos); pero para Iunciones grandes o
mas complejas la tecnologia VLSI es la mas adecuada. El diseo de VLSI se
reIiere al diseo de sistemas digitales de miles a millones de compuertas en un
solo chip.

Los FPGAs, tambien conocidas genericamente como dispositivos
programables, son la evolucion del concepto de GAL (Generic Array Logical,
arreglos logicos genericos). Consisten en grandes rangos de un chip
completamente Iabricado en la cual hay una matriz de bloques, cada uno
conteniendo un conjunto de primitivas logicas. Las interconexiones entre los
bloques se realiza no en la etapa de Iabricacion como en los arreglos de puertas
(Gate Array), si no en base a multiplexores que conectan un conjunto de bloques
con otro. En Iuncion del valor de seleccion de los multiplexores de conexion, se
deIine la conexion del sistema global y por tanto, su deIinicion. El conjunto de
valores de seleccion para todos los multiplexores de guarda en una memoria no
volatil, y cambiando el contenido de la memoria se cambia la Iuncionalidad del
chip (se personaliza). Dentro de la Iamilia de dispositivos programables existen
muchas sub-Iamilias en Iuncion de su arquitectura (numeros y tipos de bloques
logicos) y del tipo de memoria (programable una sola vez, reprogramable,
programable en campo).

Las ventajas de esta alternativa son su gran Ilexibilidad y el hecho de que
la personalizacion del chip es practicamente inmediata. Por otra parte, sus
inconvenientes son, al igual que los GAL, la Ialta de optimizacion de
prestaciones y area. Otro inconveniente a mencionar es que el proceso de
personalizacion debe hacerse por cada dispositivo, por lo que es una opcion para
volumenes de produccion poco elevados.

En la Figura A.1 se muestra las comparaciones entre una implementacion
para una aplicacion basado en ASIC, Procesador generico (microprocesador,
microcontrolador o DSP) y la tercera opcion es la del uso de un FPGA.












Figura A.1 Alternativas de implementacion de Sistemas Digitales

Entre las tres alternativas mostradas, la propuesta del FPGA es la que
mejor se ubica entre las otras dos opciones, ya que puede tener casi la potencia
de proceso de un ASIC ya que se personaliza el hardware requerido y gana la
Ilexibilidad de los sistemas reprogramables basados en una ejecucion secuencial
de instrucciones ya que al cambiar los bits de conIiguracion puede implementar
otro tipo de hardware dedicado.

A.2 Tecnologa de los FPGA - XILINX

Son dispositivos ideales para aplicaciones que deben salir al mercado en el
menor tiempo y bajo costo.

Son dispositivos que contiene un conjunto de miles de compuertas
ordenadas de tal modo que se pueden conIigurar para que realicen ciertas
Iunciones, como ecuaciones logicas de circuitos combinacionales o secuenciales.

Los elementos programables de una FPGA son:
1. Los bloques logicos (CLBs)
2. Los bloques de entrada/salida (IOB)
3. Las interconexiones
4. Bloque de memoria RAM
5. Bloques multiplicadores (Para el caso de Spartan-3 y superiores)
6. Los administradores de seales de reloj

A.3 Arquitectura de los mdulos SPARTAN DE XILINX.

La arquitectura de la Iamilia Spartan-3 consiste Iundamentalmente en
cinco elementos Iuncionales programables:
a) Los bloques logicos conIigurables (CLBs): Contienen las tablas de
busqueda basadas en RAM (LUTs) para poner los elementos de la logica en
ejecucion y almacenamiento, estos se pueden utilizar como Ilip-Ilop o
'latches. Los 'CLBs se pueden programar para realizar una amplia
variedad de Iunciones logicas asi como para almacenamiento de datos.
b) El bloque de entrada/ salida (IOBs): Controla el Ilujo de datos entre los
pines de entrada-salida y la logica interna del dispositivo. Cada IOB soporta
el Ilujo de datos bidireccional operando en 3 estados. Veinticuatro tipos de
seales estandar, incluyendo siete estandares diIerenciados de alto
rendimiento, estan disponibles.
c) Los bloques de RAM proveen almacenamiento de datos en la Iorma de
bloques duales de 18 Kbits.
d) Los bloques de multiplicacion aceptan dos numeros binarios de 18 bits como
entradas para calcular el producto.
e) Los bloques DCM (Digital Clock Manager) proveen autocalibracion,
soluciones digitales completas para distribucion, retardo, multiplicacion,
division y desplazamiento en Iase de seales de reloj.
Estos elementos son organizados como se muestra en la Figura A.2. Un
anillo de IOBs esta alrededor de un arreglo de CLBs. Cada columna se
compone de varios bloques de RAM de 18Kbits. Cada bloque se asocia a un
multiplicador dedicado. Los DCM son posicionados en los extremos de las
columnas de los bloques de memoria RAM. La Iamilia Spartan-3 oIrece una red
interna de interconexiones e interruptores que sirven para interconectar todos los
cinco tipos de elementos Iuncionales, transmitiendo seales entre ellos. Cada
elemento Iuncional tiene una matriz de interruptores asociada que permite
multiples interconexiones en el encaminamiento.

Figura A.2. Diagrama de la arquitectura de la Iamilia Spartan-3 de Xilinx.
A.3.1 Configuracin
Los FPGA de la Iamilia Spartan-3 son programados cargando la 'Data de
conIiguracion en celdas de memoria estatica que controlan colectivamente todos
los elementos Iuncionales y recursos enrutados del FPGA. Antes de energizar el
FPGA, los datos de conIiguracion se almacenan externamente en una PROM o
en algun otro medio no volatil o Iuera del la tarjeta. Despues de aplicar la
energia, los datos de conIiguracion se escriben en el FPGA usando cualquiera de
los cinco modos diIerentes:
Master Parallel
Slave Parallel
Master Serial
Slave Serial y
Boundary Scan (JTAG).
Tambien se pueden usar memorias serial como las Flash PROM.
A.3.2 Bloques de entrada y salida.
Los Bloques de entrada y salida (IOB) proveen una interIase programable y
bidireccional entre un 'pin de entrada/ salida y la logica interna del FPGA. Un
diagrama simpliIicado de la estructura interna del IOB se muestra en la Figura
A.3. Hay tres rutas principales para las seales en el IOB:
La ruta de salida
La ruta de entrada y
La ruta triestado.
Cada ruta tiene su propio par de elementos de almacenamiento que pueden
actuar como registros o 'latches.
Hay tres rutas principales para las seales, la ruta de entrada transporta los
datos desde la logica interna, la cual es direccionada a un 'pin del encapsulado
a traves de un elemento programable de retardo. Hay rutas alternativas a traves
del par de elementos hacia las lineas IQ1 e IQ2. Los elementos de retardo
pueden ser conIigurados de tal modo que aseguren un tiempo de establecimiento
de cero.


A.3.3 Elementos de almacenamiento
Hay tres pares de elementos de almacenamiento en cada IOB. Y para cada
uno de estos, hay tres rutas. Esto permite conIigurar cada uno de estos elementos
de almacenamiento como un Flip Flop tipo D disparado por Ilanco (FD) o un
'latch sensible al nivel (LD). Los pares de elementos de almacenamiento en
cada ruta de salida o la ruta de triestados pueden ser usados normalmente con un
multiplexor especial para producir transmision DDR (double data rate).
De acuerdo a la Iigura, la linea OTCLK1 conecta las entras CK de los
registros superiores en la ruta de la salida triestado. De manera similar OTCLK2
conecta las entradas CK para los registros inIeriores en la ruta de salida
triestado. Los registros superiores e inIeriores en la ruta de entrada tienen lineas
de reloj independientes: 'ICLK1 y 'ICLK2.


Figura A.3 . Diagrama simpliIicado de un bloque de entrada /salida correspondiente al
Spartan-3..




A.3.4 Los bloques lgicos configurables.

Los bloques logicos conIigurables (CLBs) conIorman el recurso principal
para la implementacion sincrona de los circuitos combinacionales.

Cada CLB abarca 4 'slices interconectados como se aprecia en la Figura
A.4. Estos 'Slices son agrupados en pares. Cada par es organizado en columnas
con un arreglo de cadenas independiente.


Figura A.4. Arreglo de los 'Slices dentro del CLB.




A.3.5 Los SLICES-El generador de funciones.

Cualquiera de los dos tipos de LUTs (F y G) dentro de un 'Slice, tienen
cuatro entradas logicas (A1 A4) y una unica salida (D).

Esto permite que cualquier operacion logica de 4 variables pueda ser
programada. Ademas, las amplias Iunciones del multiplexor pueden ser usadas
para combinar de manera eIectiva de las LUTs contenidas en el mismo CLB o
cruzando diIerentes CLBs, haciendo Iunciones logicas con mas entradas de las
posibles, aumentando la capacidad de entrada de variables.
A.3.6 LOS BLOQUES DE RAM

Todos los dispositivos de la Iamilia Spartan-3 soportan bloques de
memoria RAM, la cual se organiza como conIigurable y sincrona en bloques de
18 Kbits.

Los bloques de memoria RAM almacenan cantidades relativamente
grandes de datos de una manera mas eIiciente que las celdas de memoria
distribuida.

A.3.7 LOS MULTIPLICADORES DEDICADOS

Todos los dispositivos de la Iamilia Spartan-3 incluyen multiplicadores
que aceptan dos palabras de 18 bits como entradas para producir un producto de
36 bits.

Figura A.5. Multiplicadores dedicados incorporados en el FPGA Spartan-3.
A.4 Perspectivas del diseo electrnico basado en los FPGA.

Los FPOA (Field Programmable Object Array, arreglo de objetos
programable en campo) es una Iamilia de productos de la compaia 'MathStar,
los cuales actualmente llegan a operar en Irecuencias de 1GHz y tiene hasta 4
veces mayor rendimiento que los FPGA combinando el alto rendimiento y
reprogramabilidad para una gran cantidad de aplicaciones. Los FPOAs estan
compuestos por cientos de objetos por donde circulan datos y seales hacia cada
uno de los otros objetos gracias a una interconexion de 1GHz patentada.

Los FPOAs soportan hasta 256 unidades aritmeticas y logicas (ALUs),
80 archivos de registros y 64 unidades de multiplicacion y acumulacion (MAC).
Los objetos y las interconexiones de Iabrica corren con un reloj comun operando
a Irecuencias de hasta 1GHz. El rendimiento deterministico elimina el tedioso
paso de analisis de temporizacion asociado a los FPGAs, reduciendo las
repeticiones de diseo y sobre todo el tiempo de desarrollo. A continuacion se
muestra una estructura de un FPOA de la compaia MathStar`s:


Figura A.6 Arquitectura de FPOA de la compaia MathStar.

A.4.1 Arquitectura de un FPOA a 1GHz.

La arquitectura del FPOA provee un proceso de transIerencia de datos
masivo en modo paralelo logrando operaciones de alta velocidad consistiendo en












Figura A.7 Arquitectura del FPOA
cientos de elementos de procesamiento de 16 bits llamados: Objetos. Cada uno
de estos 'Objetos son programados individualmente y actuan de manera
autonoma.
Cada Objeto MAC puede ser programado como seleccionando una de 32
instrucciones y realizar la multiplicacion y acumulacion de dos palabras de 16
bits siendo capaz de almacenar resultados de datos de 40 bits. Cada objeto de
archivo de registros esta conIormado por 64 palabras que pueden operar como
una RAM de doble puerto o FIFO

Estos objetos estan complementados por los bloques de memoria de datos
interno (IRAM), controladores de memoria y una enriquecida mezcla de
Entrada/Salida de alto rendimiento. Las comunicaciones entre los objetos
adyacentes son realizados gracias a las interconexiones conocidas como:
'Nearest Neighbor.


Recurso Arquitectura
Velocidad de
Operacin
ALU
Datos de 16 bits, 5 bits de control, 32
operaciones, control logico
Hasta 1 GHz
Archivo de registros 128 bytes, RAM dual port o FIFO Hasta 1 GHz
MAC
Multiplicacion de 16x16 bits, Acumulacion de 40
bits
Hasta 1 GHz
RAM interna 2Kx76 bits cada uno Hasta 500 MHz
RAM externa 36 bits RLDRAM II
Hasta 300 MHz
DDR
Entrada/Salida de
proposito general
48 pines por banco, reloj programable Hasta 100 MHz
Puerto trasmisor de alta
velocidad
16 + 1 bit LVDS
Hasta 500 MHz
DDR
Puerto receptor de alta
velocidad
16 + 1 bit LVDS
Hasta 500 MHz
DDR

Tabla A.1 Caracteristicas y parametros del FPOA-


Las comunicaciones a traves de multiples objetos se realiza con la
tecnologia patentada: 'Party Line. Todas las comunicaciones se realizan a
1GHz, son independientes conIigurables y proveen temporizacion
deterministica.

A.4.2 Soporte de algoritmos.

Los dispositivos FPOAs tienen el rendimiento para soportar aplicaciones
de computacion intensiva. La programabilidad y la seal de reloj de 1GHz hacen
estos dispositivos ideales para implementar los siguientes algoritmos:

CodiIicador/DecodiIicador JPEG 2000
CodiIicador/DecodiIicador MPEG-4 / H.264
CodiIicador/DecodiIicador MPEG-2
Detector de bordes de tipo 'Sobel.
Implementacion de la FFT con multiples puntos.
Convolucion en 2D escalable.
Filtro FIR multi-taps.

A.5 Sistemas de desarrollo.

La compaia MathStar oIrece los FPOAs como parte de un sistema de
desarrollo que esta diseado para implementar de una manera rapida algoritmos
y sistemas. Las aplicaciones pueden ser diseados en los FPOAs gracias a la
'Suite de herramientas de diseo avanzado para diIerentes plataIormas de
hardware. Decrementando el riesgo y la salida del producto al mercado.

A.6 Flujo de diseo.

El soItware de diseo oIrecido por la compaia MathStar para programar
los FPOAs permiten que los diseadores puedan crear, veriIicar, programar y
depurar los algoritmos en los dispositivos FPOAs teniendo un mayor nivel de
abstraccion en comparacion con los FPGAs. Los diseos son ingresados y
simulados en cuanto a su comportamiento utilizando la herramienta Visual Elite
de la compaia Mentor Graphics. Luego son compilados y mapeados dentro del
recurso hardware de los FPOAs utilizando el soItware de diseo COAST
MathStar. Una cadena de codigo objeto es generado y cargado dentro de un
arreglo via una PROM o traves de la interIase JTAG. MathStar tambien provee
herramientas de depuracion permitiendo a los diseadores analizar sus diseos
una vez que ellos han sido cargados en los FPOAs.

























Figura A.8 Herramientas para diseo con los dispositivos FPOA






ANEXO B

EVALUACION DE LOS COSTOS DE
IMPLEMENTACION


B.1 Evaluacin de los costos de implementacin con el uso de
FPGA.

Ahora evaluaremos los costos de implementacion de un circuito de
acuerdo a las metodologias mas utilizadas del ASIC: un FPGA, un MGA(arreglo
de compuertas basado en mascaras) y un CBIC(Basado en celdas). Para realizar
la comparacion economica entre estas alternativas consideramos el ASIC como
un producto y examinamos los componentes del costo del producto: costos Iijos
y costos variables. Hacer este tipo de comparaciones es un poco sensible ya que
los costos cambian rapidamente y ademas, como es conocido en el campo de la
industria de los semiconductores, los datos de los costos y precios de los
procesos de Iabricacion es un tipo de inIormacion altamente conIidencial.

El costo por dispositivo varia enormemente, puede cambiar de algunos
dolares a algunos cientos de dolares por ASIC. En general, tenemos que los
FPGAs son mas costosos que los MGA por compuerta, que a su vez son mas
costosos que los CBIC.

Por ejemplo, en 0.5mm2 tenemos un arreglo de 20,000 compuertas cuyo
costo medio es de 0.01 0.02 centimos de dolar/compuerta (para mas de 10,000
dispositivo) o $2 a $4 por dispositivo, que equivalente a un FPGA tendriamos un
costo promedio de $20. El costo por compuerta en un FPGA para implementar
una misma Iuncion es tipicamente de 2 a 5 veces mas costoso que en un MGA o
CBIC.

Dado a que un FPGA es de mayor costo que un MGA, la cual es a su vez
es mas costoso que un CBIC, entonces podemos preguntar:
Que es lo que lleva a escoger a un dispositivo mas caro como el FPGA?,
Sera el incremento de la Ilexibilidad en un FPGA, por la que se asocia un
incremento en el costo por dispositivo?

Dado a que un MGA o CBIC son especialmente tolerados por cada cliente,
hay adicionalmente un costo oculto asociado que debemos considerarlo. Para
realizar una verdadera comparacion entre las diIerentes tecnologias ASIC se ha
cuantiIicado algunos de estos costos.

El costo total de cualquier producto puede ser separado en costos Iijos y
costos variables:

Costo total del producto costo Iijo del producto costo variable del
Producto * productos vendidos.

Los costos Iijos son independientes del volumen de ventas (numero de
productos vendidos). Asi mismo, los costos Iijos son amortizados por los
productos vendidos (costos Iijos/productos vendidos) decrementando como
incremente el volumen de ventas.

El costo variable incluye el costo del dispositivo usado en el producto,
costo de ensamblaje y otros costos de Iabricacion.

El costo Iijo cuando se utiliza un FPGA es bajo (tenemos que comprar el
soItware y cualquier equipo de programacion).

El costo Iijo por dispositivo en un MGA o CBIC es mayor e incluyen el
costo de mascaras, simulacion y el tiempo de desarrollo de los programas de
test. En la siguiente Figura 6.1 se muestran los costos en total por dispositivo
para un FPGA, MGA o CBIC:
Costo Iijo de un FPGA es $21,800, costo por dispositivo $39.


Costo Iijo de un MPGA es $86,800, costo por dispositivo $10.
Costo Iijo de un CBIC es $146,800, costo por dispositivo $8.

Para bajos volumenes, el MGA o el CBIC son mas caros porque sus costos
Iijos son mas altos. En la siguiente Iigura se muestra que el costo total por pieza
de estas dos alternativas de ASIC son iguales cerca de los 20,000 unidades. El
costo por pieza es igual en un FPGA y los MGA cuando el volumen esta
alrededor de las 2,000 unidades. Y el costo por pieza son iguales cuando el
volumen de FPGA y los CBIC llegan alrededor de las 4,000 unidades.

















Figura B.1 Costo total con el diseo por dispositivo (FPGA, MGA; CBIC)


B.2 Costos de personal

En el proceso de diseo normalmente intervienen personas y
especialmente si se trata del diseo de un sistema complejo, cada una de ellas se
dedica a una tarea especiIica: simulacion de alto nivel, sintesis, diseo Iisico,
simulacion electrica, veriIicacion de integridad de seal (ruido), etc. A la hora
de asignar un costo el proceso de diseo se realiza un computo global del tiempo
dedicado al proyecto por parte de cada persona y se suman las contribuciones de
cada una , obteniendose una medida de la dedicacion de personal a dicho
proyecto en unidades persona-tiempo. Lo que se obtiene es una medida del
trabajo en terminos de personal que ha representado el diseo. Una vez
calculado la dedicacion de personal global del proyecto, se multiplica este por el
costo equivalente de persona en el periodo de tiempo considerado.

B.3 Costos totales aproximados

Los costos aproximados para un diseo tenemos:




















Tabla B.1 Evaluacion de costos de Iabricacion del FPGA, MGA y CBIC


El costo de entrenamiento (training) incluye el tiempo para aprender el uso
de la nueva herramienta de diseo electronico (EDA). Por ejemplo la aparicion
de un nuevo FPGA requiere de algunos dias para aprender; un nuevo Gate Array
o Celda Estandar requiere de tomar un nuevo curso. En la Tabla B.1 se asume
que el costo de un ingeniero (Incluyendo horas extras, beneIicios, inIraestructura
y costos varios) alcanza aproximadamente los $100,000 y $200,000 por ao lo
que es $2000 a $4000 por semana (precio en EEUU).

La siguiente consideracion de hardware y soItware del costo en el diseo
de un ASIC puede variar desde $1,000 a $1000,000 como inIraestructura si
Iuera necesario.

Si tratamos de medir la productividad de un diseador de ASIC por
compuertas o transistores por dia, depende de la experiencia, herramientas de
diseo y la complejidad del ASIC que se este creando. Cuando se trata del
diseo en un FPGA el soItware generalmente esta disponible para ser utilizado
en un computador. Esto signiIica que es mas Iacil utilizar y aprender las
herramientas de diseo de los ASIC semi-personalizados.










































ANEXO C

CARACTERISTICAS TECNICAS DE LA
FAMILIA SPARTAN-3 (XILINX)

Вам также может понравиться