UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS MAESTRÍA EN CIENCIAS EN INGENIERÍA ELECTRÓNICA Y COMPUTACIÓN Tesis desarrollada por: Ing. Walter Alejandro Mayorga Macias En cumplimiento de los requisitos para la obtención del grado de Maestro en Ciencias en Ingeniería Electrónica y Computación Título de tesis: Implementación en hardware de un sistema autoprogramable de multipropósito con dispositivos reconfigurables Director de tesis: Dr. Juan José Raygoza Panduro Co-Director de tesis: Dra. Susana Ortega Cisneros Guadalajara, Jalisco; México. 2014
III RESUMEN Implementación en hardware de un sistema autoprogramable de multipropósito con dispositivos reconfigurables El presente trabajo consta del diseño e implementación de una tarjeta de evaluación con dispositivos reconfigurables FPGA de la familia SPARTAN-3E de Xilinx. Entre sus características más peculiares resaltan su tamaño reducido, gran disponibilidad de pinouts, portabilidad, autoconfiguración, facilidad de fabricación, entre otras. Se ha decidido realizar este proyecto ya que en el mercado se encuentran dispositivos similares pero a un alto costo, con dimensiones muy amplias, de requerimientos costosos para su programación y completamente ligados a las herramientas que poseen los proveedores de este tipo de tecnologías. De tal manera, el diseño que es presentado cuenta con grandes ventajas, dentro de las que destaca su propiedad de autoconfiguración gracias a un intérprete de comandos que ayudan al dispositivo a programarse a sí mismo por medio de un procesador de instrucciones y una memoria contenedora de comandos. Ambos dispositivos interactúan entre sí para después intercomunicarse al dispositivo FPGA y con ello configurar las tareas deseadas. En la tesis se aborda el desarrollo del diseño e implementación de la tarjeta de evaluación con el FPGA y la incorporación de un microcontrolador. El proyecto se construyó con un circuito impreso de 2 capas, de fácil acceso y fabricación. Por tal motivo, la tarjeta de desarrollo es un ejemplo práctico y pedagógico gracias a la disminución de costos, su portabilidad y fácil manejo de la misma. Algunas familias de FPGAs de la compañía Xilinx permiten la Programación Dentro de Sistema como una opción para configurar estos dispositivos, y en estas alternativas se encuentra el estándar IEEE 1149.1, mejor conocido como Grupo de Acción de Pruebas Conjuntas (JTAG), el cual permite hacer pruebas de los diseños en VHDL así como la Universidad de Guadalajara Resumen
IV programación de los mismos. Para realizar tal implementación es necesario el uso de un procesador el cual interprete las acciones de control que configuran al dispositivo reconfigurable. Es por ello que se hace uso de un microcontrolador para interpretar el Formato Vectorial Serial de Xilinx (XSVF). Dicho formato es generado a través de la herramienta ISE de Xilinx mediante la aplicación impact, la cual le genera al usuario un archivo con formato.bit. Este tipo de formato no es lo suficientemente portable para ser implementado en un sistema embebido, por lo cual se hace la exportación del mismo al formato XSVF para tener un archivo de menor densidad capaz de ser almacenado en una memoria tipo EPROM. El microcontrolador (ahora intérprete XSVF) es el encargado de realizar las operaciones pertinentes conforme a la lectura de estas sentencias y a los tiempos establecidos para el estándar JTAG. Una vez que el FPGA está configurado este inicia las operaciones de control para un quadcopter no tripulado usando los valores obtenidos desde sensores de giroscopio, acelerómetro, y magnetómetro, todo ello mediante una interfaz gráfica de control en Matlab en la cual es posible cambiar los parámetros de velocidad de los motores así como los movimientos del quadcopter (roll, pitch, y yaw). Y del mismo modo es posible monitorear el estado de los ángulos gracias a la retroalimentación de los sensores. La interfaz gráfica en Palabras Clave: FPGA (Field Programable Gate Array). XSVF (Xilinx Vector Serial Format). Quadcopter. Universidad de Guadalajara Resumen
V ABSTRACT Hardware implementation of a multipurpose auto programmable system with reconfigurable devices The present work consists of the design and implementation of an evaluation board with reconfigurable devices FPGA from the Xilinx s SPARTAN-3E family. Within its most peculiar features highlights its reduced size, high availability of pin-out, portability, auto configuration, easy to manufacture, and others. The project is being developed because market offers similar devices but at high prices, with very wide dimensions, expensive requirements for programming and completely linked to supplier s software tools. Thus, the shown design has great advantage, within which highlights his auto configuration property through a command interpreter and a command memory container. Both devices interact between each and then the interpreter intercommunicates to the FPGA to configure the desired tasks. The thesis addresses the development of design and implementation of the evaluation board with the FPGA and the incorporation of a microcontroller. The project was manufactured with a 2 layers printed circuit board with easy access and without complicated fabrication. Because of this, the circuit board is a practical and pedagogical example such to the cost decrease, the portability and easy handling. Some families of Xilinx s FPGAs allow the In System Programming as an option to configure this devices and the IEEE 1149.1 standard, best known as Joint Test Action Group (JTAG), is an alternative that allows the test of the VHDL designs and also the programming. To use this feature a processor is needed to interpret the control actions that configure the reconfigurable device. Because of this, a microcontroller is used to interpret the Xilinx Serial Vector Format (XSVF). That format is generated by the ISE Xilinx tool using Impact which generates a.bit format. This type of format is not sufficiently portable to be implemented in an embedded system so the exportation to the Universidad de Guadalajara Abstract
VI XSVF format is needed to obtain a lower density file that can be stored in an EPROM memory. The microcontroller (now called XSVF interpreter) is the one in charge to realize the pertinent operations according to the reading statements and also the timings established for the JTAG standard. Once the FPGA is configured it starts the control operations for an unmanned quadcopter using the values from a gyroscope, accelerometer, and magnetometer sensor which are monitored using a graphical control interface in Matlab. The control interface can change the speed parameter of the motors and que quadcopter movements (roll, pitch, and yaw). Keywords: FPGA (Field Programmable Gate Array). XSVF (Xilinx Vector Serial Format). Quadcopter. Universidad de Guadalajara Abstract
VII ÍNDICE Agradecimientos... I Resumen... III Abstract... V Índice... VII Lista de Figuras... XI Lista de Tablas... XV I Introducción... 17 I.1 Antecedentes... 17 I.1.1 Arreglos de Compuertas Programables en Campo (FPGA)... 17 I.1.2 ISP para dispositivos reconfigurables... 18 I.2 Justificación... 20 I.3 Planteamiento del problema... 20 I.4 Objetivos... 21 I.4.1 Objetivo general... 21 I.4.2 Objetivos particulares... 21 I.5 Hipótesis... 22 I.6 Metodología... 22 II Antecedentes sobre Diseño de Tarjetas con FPGAs y Quadcopters... 25 II.1 Diseño de tarjetas con FPGAs... 25 II.2 Quadcopters... 29 II.2.1 Antecedentes... 30 II.2.2 Cinemática... 35 II.2.3 Lógica difusa aplicada en quadcopters... 40 III Diseño de la tarjeta de evaluación con SPARTAN-3E... 45 III.1 Diagramas esquemáticos... 45 III.1.1 Fuentes de alimentación... 46 III.1.2 Frecuencia del sistema y modos de operación... 48 Universidad de Guadalajara Índice
VIII III.1.3 Interface serial... 48 III.1.4 Memoria de configuración... 50 III.1.5 Barra de leds... 51 III.1.6 Microcontrolador... 51 III.1.7 Protección de voltajes... 53 III.1.8 FPGA... 53 III.1.9 Tarjeta hija... 55 III.2 Ruteado de la tarjeta... 56 III.2.1 Tarjeta madre... 56 III.2.2 Tarjeta hija... 57 III.3 Lista de materiales... 58 III.3.1 Tarjeta madre... 58 III.3.2 Tarjeta hija... 59 IV Diseño e implementación del controlador... 61 IV.1 Protocolos de comunicación... 61 IV.1.1 Protocolo I 2 C... 61 IV.1.2 Protocolo serial... 70 IV.2 Programa principal... 72 IV.2.1 Interfaz de monitoreo en Matlab... 73 IV.3 Base de pruebas... 77 V Resultados... 81 V.1 Circuito impreso... 81 V.2 Simulaciones... 82 V.2.1 Protocolo serial... 82 V.2.2 Protocolo I 2 C... 83 V.2.3 PWM... 83 V.3 Matlab... 85 VI Conclusiones y trabajo futuro... 87 VI.1 Conclusiones... 87 VI.2 Trabajo futuro... 87 VI.3 Publicaciones... 88 Universidad de Guadalajara Índice
IX Apéndice A... 89 A.1 Códigos de configuración del FPGA... 89 A.1.1 Módulo UART... 89 A.1.2 Módulo I 2 C... 96 A.1.3 Módulo Buffer 16 bits... 111 A.1.4 Módulo PWM... 113 A.1.5 Módulo de Control de 4 PWMs... 116 A.2 Códigos de la interfaz de control grafica de Matlab... 119 Apéndice B... 129 B.1 Códigos de programación del microcontrolador... 129 B.1.1 Reloj de sistema del microcontrolador... 129 B.1.2 Mensajes seriales para depuración de errores... 129 B.1.3 Comunicación SPI para comunicación con la memoria EPROM... 132 B.1.4 Intérprete XSVF... 133 Bibliografía... 137 Universidad de Guadalajara Índice