• No se han encontrado resultados

Metodología para desarrollar aplicaciones con el PicoBlaze de Xilinx

N/A
N/A
Protected

Academic year: 2020

Share "Metodología para desarrollar aplicaciones con el PicoBlaze de Xilinx"

Copied!
108
0
0

Texto completo

(1)Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica. TRABAJO DE DIPLOMA Metodología para desarrollar aplicaciones con el PicoBlaze de Xilinx Autor: Yohan Bruno Santana Galindo Tutor: Dr. Juan Pablo Barrios Rodríguez. Santa Clara 2011 “Año 53 de la Revolución”.

(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica. TRABAJO DE DIPLOMA Metodología para desarrollar aplicaciones con el PicoBlaze de Xilinx. Autor: Yohan Bruno Santana Galindo E-mail: ysgalindo@uclv.edu.cu. Tutor: Dr. Juan Pablo Barrios Rodríguez E-mail: barrios@uclv.edu.cu. Santa Clara 2011 “Año 53 de la Revolución”.

(3) Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad.. Firma del Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. Firma del Autor. Firma del Jefe de Departamento donde se defiende el trabajo. Firma del Responsable de Información Científico-Técnica.

(4) i. PENSAMIENTO. "Lo que sabemos es una gota de agua, lo que ignoramos es el océano" Isaac Newton.

(5) ii. DEDICATORIA. A mis padres Doris y Bruno.

(6) iii. AGRADECIMIENTOS. A mi tutor, cuyo apoyo fue decisivo para realizar este trabajo A mi familia, de la cual siempre he recibido amor y confianza y sobre todo a mi abuelita que es como mi ángel guardián Al claustro de profesores, evangelios vivos, que han contribuido a mi formación profesional durante estos cinco años A mis compatriotas de “La Cueva” con los que he compartido alegrías y penas A mi Dios que siempre me ha acompañado en los momentos difíciles.

(7) iv. TAREA TÉCNICA. Para confeccionar el presente trabajo y alcanzar los resultados esperados, es necesario seguir una serie de tareas técnicas que constituirán una guía para llegar al informe final. Realizar una caracterización breve de los FPGA’s de Xilinx para entrar en los microcontroladores empotrados. Estudiar las características y las prestaciones del microcontrolador PicoBlaze que hacen que su uso sea generalizado debido a su eficiencia y desempeño óptimo. Caracterizar las herramientas necesarias para el trabajo con PicoBlaze, tanto de hardware como de software. Elaborar una metodología para el desarrollo de aplicaciones utilizando PicoBlaze. Aplicar dicha metodología en el desarrollo de ejemplos prácticos que pongan de manifiesto la versatilidad del microcontrolador en cuestión y evalúen la efectividad de la propuesta.. Firma del Autor. Firma del Tutor.

(8) v. RESUMEN. Con la presente investigación se obtuvo una metodología para desarrollar aplicaciones de carácter docente sobre el microcontrolador empotrado PicoBlaze. El trabajo surge de la necesidad del dominio y actualización sobre la temática del Diseño Digital VLSI, en particular con los FPGA’s de Xilinx, líder a nivel mundial en la fabricación de estos dispositivos que tienen gran impacto en múltiples aplicaciones, específicamente en lo relacionado con la incorporación del microcontrolador PicoBlaze en diseños cableadoprogramados. PicoBlaze es un dispositivo de uso libre concebido para la eficiencia que se adecua perfectamente al marco académico. Se explicó detalladamente la base sobre la cual se sustenta el microcontrolador embebido de propósitos generales, la estructura interna y funcionamiento de este y se caracterizaron las herramientas de software y hardware implicadas en el flujo de diseño para su mejor comprensión y familiarización con las mismas. El trabajo constituye un importante aporte a los contenidos de las asignaturas de Diseño Digital VLSI y Microprocesadores en el nuevo Plan D de estudios ya que implica que los estudiantes deben ser capaces de poner en práctica conocimientos de electrónica digital y microcontroladores en un co-diseño hardware/software. La metodología se validó con el montaje de algunos ejemplos prácticos que demostraron que, tanto la tarjeta Nexys2, como las herramientas de software utilizadas se pueden emplear eficientemente para alcanzar resultados satisfactorios..

(9) vi. TABLA DE CONTENIDOS. PENSAMIENTO................................................................................................................. i DEDICATORIA ................................................................................................................ ii AGRADECIMIENTOS .....................................................................................................iii TAREA TÉCNICA ........................................................................................................... iv RESUMEN ........................................................................................................................ v INTRODUCCIÓN ............................................................................................................. 1 CAPÍTULO 1.. MARCO TEÓRICO-REFERENCIAL ................................................... 5. 1.1 Breve reseña histórica de Xilinx............................................................................... 5 1.2. Generalidades de un dispositivo FPGA ................................................................. 7. 1.2.1. Celda lógica basada en LUT .......................................................................... 8. 1.3. Implementación en FPGA con VHDL .................................................................. 9. 1.4. Dispositivos Xilinx Spartan-3E .......................................................................... 11. 1.5. Procesadores Empotrados en FPGA’s ................................................................. 13. 1.6. ¿Por qué usar un microcontrolador dentro de un FPGA?..................................... 15. 1.7. De FSMD de propósitos especiales hacia el microcontrolador de propósitos. generales. ..................................................................................................................... 17 1.7.1 1.8. Aplicación del microcontrolador ................................................................. 19. Conclusiones del capítulo ................................................................................... 20. CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE .......................................... 21.

(10) vii 2.1. El microcontrolador PicoBlaze ........................................................................... 21. 2.2. Organización básica de PicoBlaze ...................................................................... 22. 2.3. Bloques funcionales de PicoBlaze ...................................................................... 24. 2.4. Interfaz de entrada/salida de PicoBlaze ............................................................... 28. 2.4.1. Puerto de salida. Instrucción output ............................................................. 29. 2.4.2. Puerto de entrada. Instrucción input............................................................. 30. 2.5. Modelo de programación .................................................................................... 32. 2.6. Formato de las instrucciones............................................................................... 33. 2.7. Set de instrucciones ............................................................................................ 34. 2.8. Modos de Direccionamiento ............................................................................... 37. 2.9. Conclusiones del capítulo ................................................................................... 39. CAPÍTULO 3. HERRAMIENTAS PARA EL TRABAJO CON PICOBLAZE ............... 40 3.1. Tarjeta Nexys2 de Digilent ................................................................................. 40. 3.1.1. Fuentes de alimentación .............................................................................. 41. 3.1.2. Configuración del FPGA y de la plataforma Flash ROM ............................. 43. 3.1.3. Relojes ........................................................................................................ 44. 3.1.4. Interfaces de entrada/salida de usuario ......................................................... 44. 3.1.5. Puerto USB ................................................................................................. 46. 3.1.6. Puerto PS/2 ................................................................................................. 47. 3.1.7. Puerto VGA ................................................................................................ 49. 3.1.8. Puerto serie ................................................................................................. 50. 3.1.9. Memoria ..................................................................................................... 51. 3.1.10 Conectores periféricos ................................................................................. 52 3.2. El entorno Xilinx ISE ......................................................................................... 54.

(11) viii 3.2.1 3.3. Descripción del entorno de desarrollo .......................................................... 55. Softwares para el procesamiento del código ensamblador ................................... 58. 3.3.1. Ensamblador KCPSM3 ............................................................................... 59. 3.3.2. Mediatronix PBlazeIDE .............................................................................. 62. 3.4. Conclusiones del capítulo ................................................................................... 67. CAPÍTULO 4. METODOLOGÍA Y VALIDACIÓN ....................................................... 68 4.1. Aspectos generales ............................................................................................. 68. 4.2. Metodología aplicada ......................................................................................... 72. 4.2.1. Crear un nuevo proyecto ............................................................................. 72. 4.2.2. Añadir los ficheros ...................................................................................... 73. 4.2.3. Desarrollo del hardware .............................................................................. 74. 4.2.4. Desarrollo del software ............................................................................... 74. 4.2.5. Generación del fichero ROM....................................................................... 76. 4.2.6. Añadir el fichero <ROM>.vhd al diseño ...................................................... 77. 4.2.7. Asignar los pines del diseño ........................................................................ 78. 4.2.8. Proceso de Síntesis (Synthesize) .................................................................. 79. 4.2.9. Proceso de Implementación (Implementation) ............................................. 80. 4.2.10 Generación del fichero de programación de la tarjeta................................... 81 4.2.11 Descarga del fichero de configuración ......................................................... 81 4.3. Ejemplo de validación ........................................................................................ 82. 4.4. Conclusiones del capítulo ................................................................................... 84. CONCLUSIONES Y RECOMENDACIONES ................................................................ 86 Conclusiones ................................................................................................................ 86 Recomendaciones ......................................................................................................... 87.

(12) ix REFERENCIAS BIBLIOGRÁFICAS .............................................................................. 88 ANEXOS ......................................................................................................................... 91 Anexo I Dispositivos de la familia Spartan-3 ........................................................... 91 Anexo II Código HDL para la interfaz de salida de PicoBlaze. ................................ 91 Anexo III Código para la interfaz de entrada de PicoBlaze ....................................... 92 Anexo IV Diferencias de los nemónicos entre KCPSM3 y PBlazeIDE ...................... 93 Anexo V Set de instrucciones de PicoBlaze .............................................................. 93 Anexo VI Estructura general de un código VHDL para describir un sistema determinado .............................................................................................................. 94 Anexo VII Código VHDL (pico_sio) del diseño iosquare ........................................ 95.

(13) INTRODUCCIÓN. 1. INTRODUCCIÓN. En el departamento de Telecomunicaciones y Electrónica de la Facultad de Ingeniería Eléctrica de la Universidad Central “Marta Abreu” de Las Villas existe experiencia en el desarrollo de aplicaciones digitales, utilizando tanto la lógica cableada (Electrónica Digital con componentes MSI y LSI), como la lógica programada (Microprocesadores y Microcontroladores). Esta experiencia ha venido evolucionando a tono con el desarrollo de las tecnologías de fabricación de circuitos integrados digitales, las que actualmente se clasifican en VLSI y UVLSI y en las que se encuentra un amplio espectro de dispositivos digitales configurables tales como los CPLD’s (Complex Programmable Logic Devices) y los FPGA’s (Field Programmable Gate Arrays). Existen dos necesidades que justifican la realización del presente trabajo. La primera relacionada con el dominio y actualización sobre la temática del diseño digital VLSI, en particular con los FPGA’s de Xilinx, líder a nivel mundial en la fabricación de estos dispositivos que tienen gran impacto en múltiples aplicaciones (controladores de comunicaciones, controladores de buses, procesamiento digital de señales, etc.), específicamente en lo relacionado con la incorporación del microcontrolador PicoBlaze de Xilinx en diseños cableado-programados. La segunda está relacionada con la necesidad académica de apoyar los nuevos contenidos de las asignaturas de Microprocesadores y Diseño Digital VLSI a partir del nuevo Plan de Estudios D que alcanza ya el tercer año de la carrera de Telecomunicaciones y Electrónica. En la actualidad y debido a que el software de desarrollo es usualmente más fácil de crear que un hardware personalizado, la opción del microcontrolador embebido en un FPGA es generalmente preferible para las aplicaciones que no sean críticas en el tiempo..

(14) INTRODUCCIÓN. 2. En general el microcontrolador es apto para tareas de interfaz entrada/ salida no críticas en el tiempo o cualquier tarea que se pueda desarrollar en el marco académico. Por todo lo anterior es que se justifica que, por primera vez en la carrera, se realice un estudio de asimilación tecnológica y desarrollo de algunas aplicaciones utilizando FPGA’s de Xilinx y su microcontrolador específico PicoBlaze. Existe una tesis desarrollada el año anterior titulada “Metodología para el diseño de aplicaciones medianas en FPGA’s de Xilinx.” En esta investigación se expone una metodología o algoritmo de trabajo para realizar diseños de aplicaciones medianas con FPGA’s de Xilinx. Con este fin se hace un análisis de su arquitectura y estructura interna, específicamente de los Spartan3E. Se describe el kit Nexys2, por ser esta la tarjeta empleada para implementar los diseños realizados y comprobar su comportamiento y desempeño, así como los dispositivos e interfaces asociadas a la misma. En este kit se puede configurar un microcontrolador PicoBlaze. PicoBlaze es de uso libre y como no está concebido como un procesador de altas prestaciones, es compacto y flexible y puede ser usado para procesamiento de datos simples y control, particularmente aplicaciones de rutina y operaciones de entrada/salida. Puede ser fácilmente integrado en un sistema más complejo agregando nuevas dimensiones en la flexibilidad de un diseño basado en FPGA’s. Algunas variantes de microcontroladores autónomos tienen una notoria reputación de volverse obsoletos. Debido a que es entregado como un código VHDL, el microcontrolador PicoBlaze, es inmune a la obsolescencia ya que puede ser redimensionado para generaciones futuras de FPGA’s de Xilinx, explotando las reducciones de costo futuras y mejoras de sus características. Antes de la llegada de los microcontroladores empotrados, estos residían fuera del FPGA, limitando la conectividad a otras funciones y restringiendo el desempeño de las interfaces. Como contraste, el microcontrolador PicoBlaze es completamente empotrado dentro de un FPGA con conectividad extensible hacia otros recursos. En nuestra facultad no se han potenciado las utilidades que ofrecen los dispositivos de Xilinx que es la mayor empresa en investigación y desarrollo de FPGA’s, y en especial las.

(15) INTRODUCCIÓN. 3. tarjetas prototipo o kits de desarrollo mediante las cuales se pueden implementar diversas aplicaciones. Cuando se trabaja con un PIC, por ejemplo, es necesario diseñar una serie de dispositivos adicionales, en primer lugar para cargar el programa en el micro y en segundo lugar para la aplicación práctica en la que se va a desarrollar. Esto, como es lógico, implica una serie de elementos para el montaje a los que resulta difícil acceder por cuestiones materiales. Sin embargo con la adquisición de una tarjeta prototipo o kit de desarrollo, que cuenta con una serie de elementos que se describirán en el Trabajo de Diploma para justificar las ventajas de su uso, los estudiantes podrán poner en práctica los diseños que implementen. O sea, la limitante del hardware queda descartada. El objetivo general de este trabajo de diploma consiste en realizar una metodología para el montaje de aplicaciones de mediana complejidad con fines docentes sobre el microcontrolador PicoBlaze. Para ello se han trazado los siguientes objetivos específicos: Hacer una revisión bibliográfica sobre el tema de los FPGA’s y los microcontroladores embebidos. Describir las características del microcontrolador, así como las potencialidades que ofrece. Caracterizar las herramientas de hardware y software que intervienen en el proceso de diseño con PicoBlaze. Realizar algunos diseños prácticos que validen la metodología propuesta. Para satisfacer los objetivos planteados se ha decidido dividir el trabajo en Introducción, cuatro capítulos, conclusiones y recomendaciones. CAPÍTULO 1: Se dedicará a la caracterización breve de los FPGA’s de Xilinx para entrar en los microcontroladores empotrados que es el objeto de estudio de este trabajo y se demostrará el por qué de la elección de este tipo de microcontroladores exponiendo las ventajas de su utilización. CAPÍTULO 2: Se dedicará a caracterizar al Microcontrolador PicoBlaze, explicando su organización, estructura interna, formato de las instrucciones, modos de direccionamiento, entre otras características importantes que deben ser dominadas..

(16) INTRODUCCIÓN. 4. CAPÍTULO 3: Se expondrán las características principales de configuración del kit de desarrollo Digilent Nexys2 y los dispositivos que tiene asociados para el trabajo con periféricos así como las herramientas de software asociadas al microcontrolador PicoBlaze, que intervienen en la metodología para la implementación de diseños digitales. CAPÍTULO 4: Expresará los resultados mediante la obtención de una metodología para el diseño y montaje de aplicaciones de carácter académico basadas en el microcontrolador PicoBlaze, la cual será validada con ejemplos prácticos que demuestren su versatilidad. En las conclusiones y las recomendaciones se pretende hacer una valoración del alcance de este trabajo en cuanto a los objetivos que fueron planteados y su posible expansión hacia futuras investigaciones..

(17) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 5. CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. En este capítulo se hace una recopilación de todos los conocimientos teóricos necesarios para introducir el tema de los microcontroladores empotrados en FPGA’s y sus aplicaciones, particularmente de la corporación Xilinx, de la cual se ofrece una breve panorámica histórica. También se explica la estructura interna de un dispositivo FPGA, así como la plataforma básica en la que se basa el microcontrolador PicoBlaze para su funcionamiento. 1.1 Breve reseña histórica de Xilinx Xilinx es la mayor corporación que investiga y desarrolla chips conocidos como FPGA’s (arreglo de compuertas programables por campo del inglés field-programmable gate array) fue fundada en 1984 por dos ingenieros en semiconductores, Ross Freeman y Bernard Vonderschmitt , que trabajaban para la Corporación Zilog. Mientras trabajaban para Zilog, Freeman quiso crear chips que actuaran como una “cinta en blanco”, permitiendo a los usuarios programar la tecnología ellos mismos. En ese momento, el concepto cambiaba los paradigmas, requería muchos transistores y estos se consideraban muy preciados. Las personas pensaban que la idea de Ross estaba fuera del alcance. Los grandes productores de semiconductores obtenían enormes ganancias con la producción masiva de circuitos genéricos. Diseñar y producir docenas de circuitos diferentes para mercados específicos ofrecía pobres ganancias y requería una mayor complejidad a la hora de fabricar los dispositivos. Lo que se conoció como FPGA permitiría producir circuitos en grandes cantidades para ajustarse a la medida de segmentos individuales de mercado..

(18) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 6. Ross falló al tratar de convencer Zilog para invertir en la creación de FPGA’s, dejó la compañía y se unió a su colega de 60 años Bernard Vonderschmitt para invertir en el diseño del primer FPGA comercialmente viable. La compañía se incorporó en 1984 y comenzó a vender su primer producto en 1985. A fines de 1987 el capital de riesgo de la Compañía había crecido a más de 18 millones de dólares y generaba ingresos anuales de aproximadamente 14 millones. Debido a la incesante y creciente demanda de dispositivos lógicos programables los ingresos y ganancias de Xilinx continuaron en ascenso. De 1988 a 1990 los ingresos de la Compañía crecieron en 30, 50 y 100 millones de dólares respectivamente. Durante este periodo se trasladó a una planta de 13400m² en San José California con el objetivo de satisfacer las demandas de compañías como HP, Apple Inc., IBM y Sun Microsystems que compraban grandes cantidades de dispositivos de Xilinx. Los competidores de Xilinx emergieron en el mercado de los FPGA’s a mediados de los 90’s. A pesar de la competencia, las ventas de Xilinx crecieron de 135 millones en 1991 a 178 millones en 1992 y posteriormente a 250 millones en 1993. La compañía alcanzó 550 millones de dólares en ingresos en 1995, una década después de haber vendido su primer producto. A través de los años Xilinx ha expandido sus operaciones hacia la India, Asia y Europa y sus ventas ascendieron de 560 millones de dólares en 1996 hasta 2 billones a finales del 2010. Moshe Gavrielov -un veterano de la industria ASIC (circuitos integrados de aplicación específica, del inglés application-specific integrated circuits), que fue elegido como presidente a principios del 2008- introdujo las plataformas de diseño para proveer soluciones que combinaban los FPGA’s con software, núcleos IP (intellectual property), tarjetas y kits para abordar las aplicaciones específicas. Estas plataformas de diseño son una alternativa a los ASIC’s y a los ASSP’s (productos estándares de aplicación específica, del inglés application-specific standard products) que resultan bastante costosos. Los productos de la compañía han sido reconocidos por EE Times “Electronic Engineering Times” (periódico de la Industria de la Electrónica publicado en los Estados Unidos), EDN.

(19) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 7. (sitio web de información, noticias y estrategias de negocio para ingenieros en Diseño Electrónico) y otras instituciones por resultar innovadores y tener gran impacto en el mercado. Las líneas de productos de Xilinx incluyen las series Virtex, Kintex y Artix, cada una incluye configuraciones y modelos optimizados para diferentes aplicaciones. Xilinx diseña, desarrolla y vende productos lógicos programables incluyendo circuitos integrados (IC’s), herramientas de diseño (software), funciones de sistemas predefinidos entregadas como núcleos de propiedad intelectual (IP cores), servicios de diseño, entrenamiento al cliente, ingeniería de campo y soporte técnico. Vende dispositivos lógicos programables tanto FPGA’s como CPLD’s para fabricantes de equipamiento electrónico. Los FPGA’s de Xilinx han sido usados en experimentos de choques de iones ALICE (A Large Ion Collider Experiment), en los laboratorios CERN europeos, para organizar las trayectorias de miles de partículas subatómicas. Xilinx también se ha comprometido en una sociedad con los laboratorios de investigación de Vehículos espaciales de la Fuerza Aérea de los Estados Unidos para desarrollar FPGA’s que resistan los efectos nocivos de la radiación en el espacio que se implementarán en nuevos satélites y que serán 1000 veces menos sensibles a la radiación que sus equivalentes actuales. 1.2 Generalidades de un dispositivo FPGA Un FPGA es un dispositivo multinivel programable de propósito general. Integra una gran cantidad de dispositivos lógicos programables en un chip. El tamaño y velocidad de los FPGA’s es equiparable a los Circuitos Integrados para Aplicaciones Específicas (ASIC’s), pero los FPGA’s son más flexibles y su ciclo de diseño es más corto. La aplicación de los FPGA va más allá de la implementación de lógica digital, pueden ser utilizados para la implementación de arquitecturas específicas. Los sistemas basados en FPGA’s proporcionan un mejor desempeño que sus correspondientes implementaciones en software. Las aplicaciones que requieren de un gran número de operaciones simples son adecuadas para su implementación en FPGA’s puesto que un elemento de procesamiento puede diseñarse para efectuar esta operación y varias instancias de este pueden reproducirse para llevar a cabo procesamiento paralelo. (Gutiérrez, 2004).

(20) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 8. Un FPGA contiene arreglos de celdas genéricas y switches programables. La estructura conceptual de un dispositivo FPGA se muestra en la figura 1.1. Una celda lógica puede ser configurada (programada) para ejecutar una función simple, y un switch programable puede ser personalizado para proveer interconexiones entre las celdas lógicas. Un diseño personalizado puede ser implementado especificando la función de cada celda lógica y selectivamente activando la conexión de cada switch programable. Una vez que el diseño y la síntesis han sido completados, se puede usar un simple cable adaptador para descargar la configuración de las celdas y los switches deseada en el dispositivo FPGA y así obtener el circuito personalizado. Dado que este proceso puede ser hecho “en el campo” en lugar de ser “por defecto”, el dispositivo es conocido como programable por campo. (Chu, 2008). Figura 1.1 Estructura conceptual de un dispositivo FPGA. (Chu, 2008) 1.2.1 Celda lógica basada en LUT Una celda lógica usualmente contiene un pequeño circuito combinacional configurable con un DFF (flip-flop tipo D del inglés D-type flip-flop). El método más común para implementar un circuito combinacional configurable es con una LUT (look-up table). Una.

(21) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 9. LUT de n entradas puede ser considerada como una pequeña memoria 2ⁿ por 1. Escribiendo apropiadamente el contenido de la memoria, la LUT puede ser usada para implementar cualquier función combinacional de n entradas. El diagrama conceptual de una LUT de tres entradas se muestra en la figura 1.2.. Figura 1.2 Celda lógica de tres entradas basada en LUT. (Chu, 2008) La mayoría de los dispositivos FPGA también involucran macro celdas o macro bloques, estos son fabricados y diseñados a nivel de transistor y sus funcionalidades complementan las celdas lógicas generales. Las macro celdas comúnmente utilizadas incluyen boques de memoria, multiplicadores combinacionales, circuitos manejados por reloj e interfaces de entrada/salida. 1.3 Implementación en FPGA con VHDL Para implementar un diseño en un FPGA se utilizan lenguajes de descripción de hardware (HDL: Hardware Description Languages), el más conocido es VHDL. VHDL es el acrónimo que representa la combinación de VHSIC y HDL, donde VHSIC es el acrónimo de Very High Speed Integrated Circuit y HDL es a su vez el acrónimo de Hardware Description Language. Es un lenguaje definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993) usado por ingenieros para describir circuitos digitales. Otros métodos para diseñar circuitos son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero éstos no son prácticos en diseños complejos. Otros lenguajes para el mismo propósito son Verilog y ABEL..

(22) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 10. Aunque puede ser usado de forma general para describir cualquier circuito se usa principalmente para programar PLD’s (Dispositivo Lógico Programable del inglés Programable Logic Device ), FPGA’s, ASIC’s y similares. VHDL fue desarrollado como un lenguaje para el modelado de sistemas digitales. Proporciona una sintaxis amplia y flexible que permite el modelado estructural, en flujo de datos y de comportamiento de hardware. VHDL es un estándar de la IEEE, lo que favoreció su adopción en la industria y se ve reflejado en las constantes mejoras en las herramientas. Debido a su estandarización, un código en VHDL puede ser portado a diferentes herramientas y también, puede ser reutilizado en diferentes diseños. (Gutiérrez, 2004) En la actualidad cada ingeniero diseñador en la electrónica debe conocer y usar un lenguaje de descripción de hardware. Usando VHDL se pueden describir y sintetizar rápidamente circuitos de 10 o 20 mil compuertas. Diseños equivalentes descritos a través de esquemas o ecuaciones lógicas en el ámbito de transferencia de registros podrían requerir algunos meses de trabajo por una persona. Además VHDL proporciona las siguientes capacidades: Flexibilidad: VHDL es un poderoso lenguaje mediante el cual se pueden describir circuitos complejos con múltiples niveles de descripción del diseño. Está soportado por bibliotecas y la creación de componentes que pueden ser reutilizados. Esto proporciona la posibilidad del diseño jerárquico a través del diseño modular. Es un lenguaje para la síntesis y la simulación. Diseño independiente del dispositivo: VHDL permite implementar el diseño sin tener que seleccionar primero el dispositivo donde será implementado. Luego se puede realizar una simulación funcional del diseño que incluye solamente el comportamiento lógico del circuito. Factibilidad: Permite que se pueda simular la misma descripción del diseño que se ha sintetizado. Simular una descripción del diseño de un circuito de varios miles de compuertas antes de la síntesis en un dispositivo determinado puede ahorrar un tiempo considerable. El flujo de diseño puede ser rectificado en esta etapa antes de su implementación..

(23) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 11. Bajo costo y corto tiempo de llevar el diseño al mercado: El diseño digital con VHDL para la síntesis usado lógica programable aumenta la velocidad del proceso de diseño. VHDL permite la descripción del proceso rápidamente (Perdomo, 2001). 1.4 Dispositivos Xilinx Spartan-3E Spartan 3E constituye una familia de FPGA’s fabricados por Xilinx, la cual ofrece soluciones para alto volumen en bajo costo, a esta familia pertenece la tarjeta que se emplea en este trabajo con la cual se comprueban los pasos de la metodología para el montaje de aplicaciones con PicoBlaze mediante ejemplos. El elemento más básico de un dispositivo Spartan-3E es la celda lógica LC (del inglés logic cell), que contiene una LUT de 4 entradas y un DFF, similar al de la figura 1.2. Además una celda lógica contiene un circuito de acarreo que es usado para implementar funciones aritméticas, y un circuito de multiplexación para implementar grandes multiplexores. La LUT puede además ser configurada como una SRAM (static random access memory) o como un registro de desplazamiento de 16 bits. Para incrementar la flexibilidad y mejorar el desempeño, 8 celdas lógicas son combinadas juntas con una estructura interna especial de ruteo. En términos de Xilinx dos celdas lógicas se agrupan para formar una slice, y 4 slices se agrupan para formar un bloque lógico configurable CLB (del inglés configurable logic block). La arquitectura de esta familia, consiste principalmente en cinco elementos programables como se muestra en la figura 1.3:.

(24) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 12. Figura 1.3 Arquitectura familia Spartan 3E. (Chu, 2008) Bloques lógicos configurables (CLB’s) Cada CLB contiene cuatro partes (slices), cada una de ellas tiene dos LUT y dos elementos de almacenamiento (latch o flip flops). Las cuatro slices forman dos columnas: SLICEM: soporta tanto lógica como memorias RAM 16x1 (RAM16) y registros de desplazamiento de 16 bits (shitf registers SRL16) SLICEL: soporta únicamente lógica Bloques de entrada/salida (IOB’s) Proporcionan una interfaz programable unidireccional o bidireccional, entre los pines y el FPGA. La familia de FPGA’s Spartan 3E de Xilinx, divide las entradas/salidas del integrado en bancos que se pueden configurar aplicando diferentes tensiones de alimentación a los pines denominados Vcco y Vref. Al utilizar diferentes valores de Vcco para los distintos bancos se podrá tener un sistema con interfaces dentro del mismo FPGA. Un IOB controla el flujo de datos entre los pines del dispositivo de entrada/salida y la lógica interna. Puede ser configurado para soportar una amplia variedad de estándares entrada/salida..

(25) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 13. Bloque de memoria (Block RAM) El bloque de memoria es una SRAM sincrónica de 18 Kbit que puede ser organizada en varios tipos de configuraciones. Se utiliza cuando se requiere almacenar gran cantidad de datos. Se puede ajustar: el contenido inicial, la señal de salida por defecto, modos de escritura, modo dual-port o single-port. Multiplicador (Multiplier Blocks) Colocados junto a cada bloque de memoria RAM. El multiplicador acepta dos números de 18 bits como entrada y calcula el producto. Realiza la multiplicación numérica de dos complementos, pero puede también realizar algunos usos menos obvios, tales como almacenaje de datos. Reloj digital (DCM) El Spartan 3E, tiene 2, 4 o 8 DCM’s dependiendo del tamaño del dispositivo. Las funciones más importantes del DCM son permitir que la señal de reloj sea la misma en todos los componentes y amplificar o reducir la frecuencia del reloj de entrada. Un DCM utiliza un lazo digital de retraso para reducir la desviación del reloj y así controlar la frecuencia y la fase de la señal de reloj. Aunque los dispositivos FPGA’s Spartan-3E tienen tipos similares de celdas lógicas y macro celdas, sus densidades difieren. Cada subfamilia contiene un arreglo de dispositivos de varias densidades. El número de LC’s, bloques RAM, multiplicadores y DCM’s de los dispositivos de las subfamilias de Spartan-3 se resumen en el Anexo I. (Xilinx, 2006) 1.5 Procesadores Empotrados en FPGA’s Un sistema empotrado es un sistema informático (hardware y software) de tiempo real integrado en un sistema o dispositivo mayor, en el que realiza funciones de monitoreo, control o procesamiento. Una de sus ventajas es su bajo costo, puesto que es posible fabricarlos por miles o por millones de unidades. Los sistemas empotrados suelen ser pequeños, de bajo consumo de energía, usan un procesador y una memoria para almacenar el programa para el cual fueron diseñados. Ejecutan un único programa, repetidamente y reaccionan continuamente a los cambios en el ambiente o sistema en que están inmersos..

(26) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 14. Los sistemas electrónicos modernos demandan cada día mayor capacidad de cómputo. Por ejemplo, las aplicaciones de red requieren dispositivos capaces de ofrecer un buen rendimiento a velocidades de transferencia del orden de gigabits por segundo. También los sistemas multimedia están aumentando sus necesidades de potencia de cálculo debido principalmente tanto al incremento de sus funciones (codificación/ decodificación de audio y video, conectividad a redes, etc.) como a la aparición de nuevos algoritmos de compresión/descompresión de audio y video que ofrecen mayor calidad a costa de mayor complejidad y costo computacional. Con el aumento de las necesidades computacionales de los sistemas empotrados actuales, los procesadores de propósito general se ven desbordados y se hace necesario buscar soluciones alternativas. Una posible solución es mejorar el procesador que se está utilizando introduciendo mejoras estructurales que permiten obtener un mayor rendimiento y aumentar la frecuencia del reloj o sustituir el procesador por uno más moderno que ofrezca un rendimiento más elevado. Esta solución presenta algunos inconvenientes, por ejemplo: aumentar la frecuencia del reloj implica un mayor consumo de energía y se necesitaría cambiar el software para adaptarlo al nuevo procesador (Huerta). Otra solución consiste en desarrollar nuevos coprocesadores aunque se incrementaría el tiempo de desarrollo, lo que llevaría un aumento de su costo en el mercado. Una tercera solución consiste en utilizar múltiples procesadores en un solo chip (MPSoC, Multiprocesor System on Chip), bien de propósito general o específico. Los FPGA’s ofrecen gran cantidad de recursos, millones de compuertas lógicas, bloques de memoria e incluso uno o varios procesadores. Por ejemplo Xilinx ofrece FPGA’s de las familias Virtex 2 Pro y Virtex 4 con uno o varios procesadores PowerPC, este tipo de procesadores son implementados en hardware (HCP, Hard-Core Processors). Además de los procesadores HCP, existen los procesadores desarrollados con software (SCP, Soft-Core Processors) que se pueden implementar utilizando recursos lógicos del FPGA. Xilinx distribuye 2 procesadores SCP: PicoBlaze y MicroBlaze. La empresa Altera ofrece el procesador SCP Nios y Nios II. Existe también una serie de procesadores de código abierto como el OpenRISC y el Leon..

(27) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 15. El rendimiento de los SCP es menor que el que pueden ofrecer los HCP, pero tienen la ventaja de que su número no está fijado de antemano: se pueden utilizar todos los que sean necesarios y sólo se está limitado por la capacidad del FPGA. Otra ventaja es la configurabilidad, ya que se pueden incluir los diferentes módulos con los que se dispongan, lo que permite crear sistemas heterogéneos a pesar de utilizar procesadores de la misma familia. (Huerta) 1.6 ¿Por qué usar un microcontrolador dentro de un FPGA? Ambos, los microcontroladores y los FPGA’s pueden implementar satisfactoriamente cualquier función lógica digital. Sin embargo cada uno tiene sus ventajas únicas en cuanto a costo, desempeño y facilidad de uso. Los microcontroladores son adecuados para las aplicaciones de control sobre todo con requisitos ampliamente cambiantes. Los recursos de los FPGA’s requeridos para implementar un microcontrolador son relativamente constantes. La misma lógica FPGA es reutilizada por las variadas instrucciones de un microcontrolador, conservando los recursos. Los requerimientos de memoria de programa crecen con el incremento de la complejidad. Las secuencias de control de programación o máquinas de estado en código ensamblador son a menudo más fáciles que crear estructuras similares en lógica FPGA. Los microcontroladores están típicamente limitados en su desempeño. Cada instrucción se ejecuta secuencialmente. A medida que una aplicación incrementa su complejidad, el número de instrucciones requeridas para implementar la aplicación crece y el desempeño del sistema decrece. Como contraste, el desempeño en un FPGA es más flexible. Por ejemplo un algoritmo puede ser implementado secuencialmente, o completamente en paralelo, en dependencia de los requerimientos. Una implementación completamente en paralelo es más rápida pero consume más recursos del FPGA. Un microcontrolador empotrado en un FPGA provee lo mejor de ambos mundos. El microcontrolador implementa funciones de control no críticas en el tiempo, mientras que las funciones críticas en el tiempo y de control de datos se implementan mejor usando lógica FPGA. Por ejemplo, un microcontrolador no puede responder a eventos mucho más rápidos que pocos microsegundos. La lógica FPGA puede responder a múltiples eventos.

(28) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 16. simultáneos en solo pocos nanosegundos. Recíprocamente, un microcontrolador es menos costoso y simple para el desempeño de formatos y las conversiones de protocolos. Las señales permanecen dentro del FPGA mejorando el desempeño. El microcontrolador reduce el costo del sistema ya que es una solución de un simple chip integrado dentro del FPGA que generalmente ocupa una porción insignificante de sus recursos. Consecuentemente, en el caso de las aplicaciones complejas, es recomendable particionarlas a través de múltiples microcontroladores donde cada uno implemente una función en particular. (Chapman, 2005) A continuación, en la tabla 1.1 se exponen los aspectos más importantes expuestos en este epígrafe a modo de comparación que permiten corroborar la elección del microcontrolador empotrado dentro de un FPGA de acuerdo con el desempeño que se espera de él, demostrándose que este dispositivo provee el balance óptimo entre microcontrolador y lógica FPGA. Tabla 1.1 Comparación entre Microcontrolador empotrado y Lógica FPGA Microcontrolador empotrado. Fortalezas. Fácil para programar aplicaciones de control y máquinas de estados Los requerimientos de recursos se mantienen constantes aún cuando incrementa la complejidad Reutiliza recursos lógicos, excelente para funciones de bajo rendimiento. Debilidades. Ejecución secuencial Los requerimientos de memoria se incrementan con la complejidad, lo que degrada el rendimiento Respuesta lenta a estímulos simultáneos. Lógica FPGA Rendimiento significativamente mejor Excelente para operaciones en paralelo La implementación paralela frente a la secuencial es más rápida aunque consume más recursos Respuesta rápida a entradas simultáneas Las aplicaciones de control y máquinas de estado son más difíciles de programar Los recursos lógicos crecen con el incremento de la complejidad.

(29) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 17. 1.7 De FSMD de propósitos especiales hacia el microcontrolador de propósitos generales. En un FSMD (máquina de estado finito con trayectoria de datos del inlgés “finite state machine with data path”), todos los componentes, incluyendo el número de registros, la ruta de las entradas/salidas de los registros, el número y tipo de unidad funcional y la FSM de control, están a la medida de la aplicación objeto. La trayectoria de los datos puede contener múltiples funciones y múltiples trayectorias de ruteo, como se muestra en la figura 1.4. Una alternativa es mantener el mismo hardware pero usar softwares personalizados para diferentes aplicaciones. La transformación puede ser hecha de la forma siguiente: Primero, reemplazar la trayectoria de datos personalizada por una configuración fija, como se muestra en la figura 1.5 arriba.. Figura 1.4 Diagrama en bloques de un FSMD. (Chu, 2008) Los registros de datos y las redes de ruteo personalizadas son reemplazadas por un archivo de registro que tiene un número fijo de registros y contiene solo dos puertos de lectura y un puerto de escritura. Las unidades de función personalizadas son reemplazadas con una ALU (unidad aritmético lógica), que solo puede desempeñar un set de funciones predefinidas. La trayectoria de datos puede desempeñar operaciones RT (transferencia de registros, del inglés “register transfer”) solo en el siguiente formato:.

(30) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 18. rd ← r1 op r2 donde r1, r2 y rd son las direcciones de dos registros fuentes y un registro destino y op es una de las funciones de la ALU disponibles. Segundo, reemplazar la FSM personalizada con una máquina de estado programable como se muestra en la figura 1.5 abajo.. Figura 1.5 Diagrama en bloques simplificado de un microcontrolador. (Chu, 2008) La operación de una FSM consiste en tres partes: El registro de estado mantiene la huella del estado actual. La salida lógica activa ciertas señales de salida acorde con el estado actual. El próximo estado lógico determina el nuevo estado. La máquina de estado programable modifica estas operaciones de la siguiente forma: Reemplaza el registro de estado por el contador de programa. El contenido del contador de programa representa el estado actual de la trayectoria de control. En una FSM, cada estado activa ciertas señales de salida para controlar las operaciones de la trayectoria de datos. La máquina de estado programable codifica esos patrones de salida en instrucciones y las almacena en un módulo de memoria,.

(31) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 19. conocido como memoria de programa o memoria de instrucción. Una dirección de memoria corresponde a un estado del contador de programa. Durante la ejecución, la instrucción apuntada por el contador de programa es sacada de la memoria y decodificada para generar las señales de control. La memoria de instrucción y la lógica de decodificación funcionan como un sofisticado circuito lógico de salida. En una FSM no hay limitación en donde ir después. En un estado dado, la FSM puede chequear la condición de entrada y moverse a cualquiera de los estados próximos posibles. En una máquina de estado programable, el próximo estado es usualmente el valor del estado actual más 1(el contador de programa se incrementa en 1), lo que refleja la naturaleza de la ejecución secuencial. La ejecución secuencial puede ser alterada solo por instrucciones especiales, tales como jump, en la cual el contador de programa es cargado con un valor diferente. El incremento y la lógica de multiplexación asociada funcionan como un simple circuito lógico de próximo estado. Después de reemplazar la trayectoria de datos con un archivo de registro y una ALU, y reemplazar el FSM dedicado con un máquina de estado programable, personalizar el sistema corresponde a desarrollar una nueva secuencia de instrucciones (esto significa desarrollar el software programa) y cargar las instrucciones en la memoria de instrucción. La organización del FSMD es ahora la misma para diferentes aplicaciones y se convierte en una plataforma de hardware de propósitos generales. La plataforma (figura 1.5) constituye el esqueleto básico para el microcontrolador PicoBlaze. (Chu, 2008) 1.7.1 Aplicación del microcontrolador En un FSMD personalizado, la trayectoria de datos puede ser creada para satisfacer las necesidades de una aplicación en particular. Puede contener múltiples unidades funcionales personalizadas y trayectorias de ruteo paralelas y puede completar cálculos complejos en un simple estado (en un ciclo de reloj). Por otro lado, el microcontrolador empotrado puede solo desempeñar una operación RT predefinida, o sea, ejecutar una instrucción al mismo tiempo. Puede necesitar muchas instrucciones para desempeñar la misma tarea y por lo tanto requiere mucho más tiempo..

(32) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL. 20. Muchas tareas pueden ser hechas por ambos, un FSMD personalizado o un microcontrolador. El compromiso radica entre la complejidad del hardware, desempeño y facilidad de desarrollo. No hay una regla exacta de cual escoger. Debido a que el software de desarrollo es usualmente más fácil que crear un hardware personalizado, la opción del microcontrolador es generalmente preferible para las aplicaciones que no sean críticas en el tiempo. Se puede determinar la viabilidad de esta opción examinando la complejidad computacional. PicoBlaze requiere dos ciclos de reloj para completar una instrucción. Si el reloj del sistema es de 50MHz, se pueden desarrollar 25 millones de instrucciones en un segundo. Para una tarea (o conjunto de ellas) se puede examinar cuan rápido esta debe ser terminada y así estimar el número de instrucciones disponibles. Por ejemplo asumiendo que una interfaz de teclado genera una nueva entrada de dato cada 1ms y el dato debe ser procesado en ese intervalo. Dentro del periodo de 1ms, PicoBlaze puede completar 25 000 instrucciones. El controlador PicoBlaze será una opción viable si el procesamiento requerido puede ser llevado a cabo usando menos de 25 000 instrucciones. En general el microcontrolador es apto para tareas de interfaz entrada/ salida no críticas en el tiempo o tareas de rutina “house keeping”. (Chu, 2008) 1.8 Conclusiones del capítulo En este capítulo se dio a conocer a Xilinx: corporación líder a nivel mundial en la fabricación de FPGA’s que actualmente domina el mercado en este sentido. Debido a que el trabajo está específicamente orientado al microcontrolador empotrado PicoBlaze, solo se ofreció una breve panorámica de la estructura interna de un dispositivo FPGA, pasando concepto de microcontrolador empotrado y demostrándose el porqué de su empleo para desarrollar tareas que no sean críticas en el tiempo y que por tanto se ajustan a las necesidades. académicas. actuales. que. se. presentan. Telecomunicaciones y Electrónica de nuestra Facultad.. en. el. Departamento. de.

(33) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 21. CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. Este capítulo está dedicado exclusivamente al microcontrolador PicoBlaze y es una recopilación de los aspectos más importantes de su estructura interna, organización y funcionamiento. El contenido de este capítulo es esencial para poder trabajar con el microcontrolador en un diseño personalizado específico y comprender su funcionamiento. 2.1 El microcontrolador PicoBlaze El microcontrolador PicoBlaze está diseñado y optimizado específicamente para los dispositivos FPGA’s de las familias Spartan-3, Virtex-II y Virtex-II Pro. Su arquitectura compacta consume menos recursos del dispositivo que cualquier otro microcontrolador de 8 bits dentro de un FPGA. Además, está provisto como una descripción HDL a nivel de celda (conocido como soft core), o sea, un código fuente libre en VHDL para los FPGA’s de Xilinx. (Chapman, 2005) El núcleo del microcontrolador PicoBlaze es completamente empotrado dentro de un FPGA y no requiere recursos externos. Es extremadamente sensible y su funcionalidad básica es fácilmente extendida y reforzada por su comunicación con el exterior a través de sus puertos de entrada y salida. PicoBlaze es optimizado para la eficiencia y ocupa aproximadamente solo 96 slices de un FPGA, o solo el 12.5% de un dispositivo XC3S50, y un minúsculo 0.3% de los recursos de un XC3S5000 (dispositivo con que se cuenta). Como no está concebido como un procesador de altas prestaciones, es compacto y flexible y puede ser usado para procesamiento de datos simples y control, particularmente aplicaciones de rutina (house-keeping) que no sean críticas en el tiempo y operaciones de.

(34) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 22. entrada/salida. Puede ser fácilmente integrado en un sistema más complejo agregando nuevas dimensiones en la flexibilidad de un diseño basado en FPGA’s. (Chu, 2008) El microcontrolador PicoBlaze provee abundantes y flexibles conexiones de entrada/salida a un costo mucho más bajo que otros controladores. Similarmente, el set de periféricos de PicoBlaze puede ser personalizado para cumplir los rasgos específicos, funciones y requerimientos de costo de la aplicación objeto. Debido a que el microcontrolador PicoBlaze está entregado como un código fuente VHDL sintetizable, el núcleo puede ser migrado a futuras arquitecturas FPGA’s, eliminando efectivamente el temor de quedar obsoleto. Siendo integrado dentro de un FPGA, el microcontrolador PicoBlaze reduce el espacio onboard, costos de diseño y las innovaciones. Está soportado por una serie de herramientas de desarrollo que incluyen un ensamblador, un ambiente gráfico de desarrollo integrado (IDE del inglés graphical integrated development environment), un simulador gráfico del set de instrucciones, un código fuente en VHDL y modelos de simulación. En implementaciones típicas, la RAM de bloque almacena hasta 1024 instrucciones de programa, las cuales son automáticamente cargadas durante la configuración del FPGA. Incluso con esta eficiencia en cuanto a recursos, PicoBlaze es capaz de procesar de 44 a 100 millones de instrucciones por segundo (MIPS) en dependencia de la familia de la tarjeta FPGA y su velocidad. (Chapman, 2005) PicoBlaze fue originalmente llamado KCPSM (constant (K) coded programmable state machine). Ken Chapman, diseñador de sistemas de Xilinx, ideó e implementó este microcontrolador. 2.2 Organización básica de PicoBlaze PicoBlaze es un microcontrolador compacto de 8bits con las características siguientes: Ancho de datos: 8bits. ALU de 8bits con las banderas de acarreo y cero. 16 registros de propósitos generales de 8bits..

(35) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 23. Memoria de datos de 64bytes. Ancho de las instrucciones: 18bit. Soporta programas hasta con 1024 instrucciones que se cargan automáticamente durante la configuración del FPGA. 31 stacks call/return de locación automática. 256 puertos de entrada y 256 puertos de salida. Dos ciclos de reloj por instrucción, soporta hasta 200 MHz o 100 MIPS. Rápida respuesta al manejo de interrupciones, 5 ciclos de reloj en el peor de los casos. Optimizado para dispositivos Xilinx Spartan-3, Virtex-II, and Virtex-II Pro. PicoBlaze está basado en el esqueleto descrito en la figura 1.5 y agrega muchas mejoras que lo hacen más versátil. El diagrama expandido se muestra en la figura 2.1. Para evitar el desorden solo se muestra el flujo principal de datos. Los tamaños de los componentes principales de almacenamiento se muestran respectivamente. El procesador hace cuantiosas mejorías sobre el esqueleto original: Agrega una memoria de datos de 64 palabras. Esto es conocido como scratch RAM en la literatura de Xilinx (para abreviar, RAM de datos). La RAM de datos puede ser considerada como un reservorio para almacenar datos adicionales. No hay una trayectoria directa entre la RAM de datos y la ALU. Los datos deben ser sacados hacia un registro para el procesamiento y luego almacenados de nuevo en la RAM de datos. Agrega un campo constante inmediato en algunas instrucciones. Esto permite que una constante, en lugar del contenido de un registro, sea usada en la ALU y otros funcionamientos. El multiplexor 2 a 1 que se encuentra delante de la entrada de abajo de la ALU se usa para seleccionar la salida del registro o el campo constante. Agrega un stack de 31 palabras para soportar las funciones call/return. Agrega trayectorias para los datos externos de entrada/salida. Una señal de 8bit (port-id) es utilizada para identificar un puerto, de este modo se pueden soportar hasta 256 puertos de entrada y de salida respectivamente. Agrega un circuito de interrupción manejable..

(36) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 24. Figura 2.1 Diagrama en bloques de PicoBlaze. (Chapman, 2005) En términos generales, la arquitectura PicoBlaze está organizada como dos módulos HDL de alto nivel, compuesta por una unidad de datos y otra de control donde: La unidad de datos: contiene el banco de registros, el módulo que controla los puertos de entrada/salida, una ALU y una memoria Scratchpad de 64 Bytes. La unidad de control: engloba los módulos que se encargan de la decodificación de las instrucciones procedentes del bus de instrucciones y del control de operación, interrupciones y flujo de programa. También contiene el registro PC (Program Counter) e incluye una pila para dicho registro (Program Counter Stack). Esta pila permite realizar llamadas a subrutinas y saltos, y por tanto, modificar la secuencia normal de ejecución de un programa. (Viejo, 2006) 2.3 Bloques funcionales de PicoBlaze Registros de propósitos generales: El microcontrolador PicoBlaze incluye 16 registros de propósitos generales, especificados como s0 – sF (pueden ser renombrados en el ensamblador). Todas las operaciones de los registros son completamente flexibles y no se reservan registros para tareas especiales o se les da prioridad sobre otros registros. No.

(37) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 25. existen acumuladores, por lo tanto ningún registro puede ser adoptado para ser usado como acumulador. ALU (Unidad Aritmético-Lógica): La ALU provee todas las operaciones simples que se esperan de una unidad de procesamiento de 8 bits: Operaciones aritméticas básicas, como adición y substracción. Operaciones lógicas tales como AND, OR, XOR entre dos registros. Comparación aritmética. Rotación y corrimiento de bits. Todas las operaciones son ejecutadas usando un operando provisto por algún registro. El resultado es retornado al mismo registro. Para operaciones que requieren un segundo operando, debe ser especificado un segundo registro o un valor constante de 8bits. La capacidad para especificar cualquier valor constante sin que esto influya en el tamaño del programa o su desempeño enriquece el simple set de instrucciones. Para operaciones que requieran más de 8 bits, la adición y la substracción son una opción para incluir el acarreo. Los operandos orientados a bit (LOAD, AND, OR, XOR) proveen la capacidad de manipular y comprobar valores. Banderas de control de flujo de programa: Los resultados de la operación de la ALU afectan las banderas de cero y acarreo. Esta información determina la secuencia de ejecución del programa usando instrucciones de control de flujo de programa condicionales y no condicionales. Los comandos JUMP especifican direcciones absolutas dentro del espacio del programa. Los comandos CALL y RETURN proveen facilidades para secciones de código usadas comúnmente. El comando CALL esta hecho para una dirección absoluta especificada, mientras que el stack del contador de programa preserva la dirección de retorno. Reset: La entrada RESET obliga al procesador a volver al estado inicial. El programa se ejecuta desde la dirección 00 y las interrupciones son deshabilitadas. Las banderas de estado y los stacks CALL/RETURN son reseteados también. El contenido de los registros no se afecta..

(38) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. Entrada/Salida:. 26. Los puertos de entrada/salida extienden las capacidades del. microcontrolador PicoBlaze y le permiten conectarse a un periférico personalizado o a otro FPGA. El módulo PicoBlaze tiene 256 puertos de entrada y 256 puertos de salida. Un valor de dirección de 8 bits provisto en el bus PORT_ID junto con las señales READ_STROBE o WRITE_STROBE indican el puerto accesado. La dirección del puerto puede ser proporcionada en el programa como un valor absoluto, o especificada indirectamente como el contenido de cualquiera de los 16 registros. El direccionamiento indirecto es ideal cuando se accesa un bloque de memoria construido a partir de una RAM de bloque o distribuida, dentro o fuera del dispositivo FPGA. Durante una operación de entrada, el valor provisto en el puerto de entrada es transferido a cualquiera de los 16 registros. Una operación de entrada es indicada por un pulso de salida READ_STROBE. Aunque el uso de esta señal en la interfaz de entrada no es siempre vital, indica que se han adquirido datos por el módulo PicoBlaze. Durante una operación de salida, el contenido de cualquiera de los 16 registros es transferido al puerto de salida. Un pulso de la señal WRITE_STROBE indica una operación de salida. Esta señal es usada en la interfaz de salida para asegurarse de que solo los datos válidos pueden salir hacia los sistemas externos. Interrupciones: El procesador provee una señal de entrada de interrupción simple. Usando lógica simple, se pueden combinar y aplicar múltiples señales a esta única señal de entrada. Por defecto, la señal de interrupción es deshabilitada y por lo tanto para habilitarla o deshabilitarla debe ser mediante programación cuando se requiera. Una interrupción activa obliga al microcontrolador a iniciar una instrucción “CALL 3FF” (una subrutina que llama a la última locación de memoria de programa) para que el usuario defina un adecuado curso de acción. Automáticamente, el proceso de interrupción preserva el contenido actual de las banderas cero y acarreo y deshabilita cualquier otra interrupción. Un comando especial llamado RETURNI asegura que al final de una rutina de interrupción se reestablezca el estado de las banderas y se controle la habilitación de futuras interrupciones. Almacenamiento de programa para 1024 instrucciones: El microcontrolador PicoBlaze ejecuta hasta 1024 instrucciones desde la memoria dentro del FPGA, típicamente desde una.

(39) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 27. RAM de bloque. Cada instrucción tiene un ancho de 18 bits. Las instrucciones son compiladas dentro del diseño del FPGA y cargadas automáticamente durante el proceso de configuración del FPGA. Otras organizaciones de memoria son posibles para acomodar más controladores PicoBlaze dentro de un mismo FPGA o para habilitar actualizaciones de códigos interactivas sin necesidad de recompilar el diseño del FPGA. Scratchpad RAM de 64 Bytes: El microcontrolador PicoBlaze provee una RAM de propósitos generales direccionable directa o indirectamente desde el archivo registro usando las instrucciones store y fetch. La instrucción store escribe el contenido de cualquiera de los 16 registros a cualquiera de las 64 locaciones de la RAM. La instrucción complementaria fetch lee cualquiera de las 64 locaciones de memoria en cualquiera de los 16 registros. Esto permite que un gran número de variables sean sostenidas dentro de los límites del microcontrolador y tienda a reservar todo el espacio de entrada/salida para señales reales de entrada y salida. La dirección de la Scratchpad RAM de 6 bits es especificada directamente (ss) con una constante inmediata o indirectamente usando el contenido de cualquiera de los 16 registros (sY). Contador de programa (PC): El contador de programa apunta a la próxima instrucción a ser ejecutada. Por defecto, el contador de programa automáticamente incrementa a la próxima locación de la instrucción cuando ejecuta una instrucción. Esta conducta por defecto solo se ve afectada por los eventos de interrupciones, reset y por las instrucciones jump, call, return y returni. El contador de programa no puede ser modificado directamente por el código de aplicación, soporta un espacio de código de 1024 instrucciones (000-3FF). Si alcanza el tope de la memoria en 3FFH, este vuelve a la dirección 000H. Stack CALL/RETURN: Almacena hasta 31 direcciones de instrucciones, habilitando secuencias de llamadas anidadas con 31 niveles de profundidad. Debido a que el stack también es usado dentro de una operación de interrupción, al menos uno de esos niveles debe ser reservado cuando se habilitan interrupciones. El stack es implementado como un buffer cíclico separado. Cuando el stack está lleno, este sobrescribe los valores más antiguos. Consecuentemente, no hay instrucciones para.

(40) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 28. controlar el stack o el puntero del stack. No se requiere memoria de programa para el stack. (Chapman, 2003) 2.4 Interfaz de entrada/salida de PicoBlaze Para interactuar con el ambiente externo, un microcontrolador consta de una variedad de periféricos de entrada salida incluidos, tales como UART (Universal Asynchronous Receiver-Transmitter), SPI (Serial Peripheral Interface), timers, etc. Para desarrollar determinado diseño, es necesario seleccionar un microcontrolador acorde a los requerimientos de periféricos de entrada/salida de la aplicación y algunas veces se necesita usar chips adicionales para realizar las funciones menos comunes. A diferencia de los microcontroladores regulares, PicoBlaze no posee periféricos de entrada/salida incluidos. Solo provee una simple estructura de entrada y salida genérica para esta interfaz. Los periféricos de entrada/salida son construidos según los requerimientos y son personalizados para cada aplicación. PicoBlaze usa las instrucciones de entrada y salida (input y output) para transferir datos entre sus registros internos y puertos de entrada/salida, y su interfaz está constituida por las siguientes señales: port_id: señal de 8 bits que especifica la identidad del puerto de una instrucción de entrada o de salida in_port: señal de 8 bits donde PicoBlaze obtiene datos de entrada durante la operación de una instrucción de entrada out_port: señal de 8 bits donde PicoBlaze coloca datos de salida durante la operación de una instrucción de salida read_strobe: señal de 1 bit que se activa en el segundo ciclo de reloj de una instrucción de entrada write_strobe: señal de 1 bit que se activa en el segundo ciclo de reloj de una instrucción de salida Aunque hay solo dos puertos de 8 bits para los datos de entrada y salida, la señal de 8 bits port_id puede ser usada para distinguir diferentes periféricos, de este modo se dice que PicoBlaze puede soportar hasta 256 puertos de entrada y 256 puertos de salida..

(41) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 29. 2.4.1 Puerto de salida. Instrucción output La instrucción output escribe datos en el puerto de salida. Tiene dos formas: output sX, (sY) output sX, port_name En la primera forma, la identificación del puerto es almacenada en el registro sY. En la segunda forma, la identificación del puerto es especificada explícitamente por port_name, que es un número hexadecimal de dos dígitos o una constante simbólica previamente definida. Los datos de salida son siempre almacenados en el registro sX. Interfaz de salida La interfaz de salida entre PicoBlaze y un periférico de salida, usualmente consiste de un circuito decodificador y los buffers de salida necesarios que son normalmente un arreglo de registros. El circuito decodificador descifra la identidad del puerto y genera una marca de habilitación en correspondencia. Después de la instrucción de salida, los datos serán almacenados en el buffer designado. Para ilustrar la construcción se considera una interfaz PicoBlaze con cuatro buffers de salida. El diagrama en bloques se puede observar en la figura 2.2. La clave es el circuito decodificador, cuya función se muestra en la tabla 2.1. De esta estructura se puede derivar el código HDL correspondiente que se muestra en el anexo II. Este código es muy general y puede ser aplicado a cualquier número de puertos.. Tabla 2.1 Tabla de verdad de un circuito decodificador.

(42) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 30. Figura 2.2 Decodificación de cuatro puertos de salida. (Chu, 2008) 2.4.2 Puerto de entrada. Instrucción input La instrucción input lee los datos del puerto de entrada. Similar a la instrucción output, tiene dos formas: input sX, (sY) input sX, port_name El registro sY o port_name especifica la identificación del puerto de lectura. Los datos recuperados son almacenados en el registro sX. Interfaz de entrada La interfaz de entrada entre PicoBlaze y los periféricos de entrada usualmente consiste de un circuito de multiplexación, que usa port_id como la señal de selección para rutear el valor deseado hacia el puerto de entrada (in_port). Algunas veces es necesario un circuito decodificador similar al de la interfaz de salida para señalizar el completamiento del acceso a los datos. Para el propósito de diseño de la interfaz de entrada, un puerto de entrada puede ser clasificado como de acceso continuo o de acceso simple. Para un puerto de acceso continuo los datos son presentados continuamente. Por otro lado, la disponibilidad de datos para un.

(43) CAPÍTULO 2. EL MICROCONTROLADOR PICOBLAZE. 31. puerto de acceso simple es activada por un evento discreto simple, tal como recibir un caracter en un buffer UART. Después que los datos son recuperados, hay que refrescar el buffer para prevenir que los mismos datos sean procesados otra vez. Esto se hace usualmente utilizando un instante del ciclo de reloj para limpiar el flag FF o quitar una palabra de un buffer FIFO (first in first out). La interfaz para puertos de acceso continuo involucra solo un circuito de multiplexación. El diagrama en bloque de una interfaz con cuatro puertos se muestra en la figura 2.3.. Figura 2.3 Diagrama en bloques de cuatro puertos de acceso continuo. (Chu, 2008) La interfaz para puertos de acceso simple necesita un mecanismo para eliminar los datos recuperados del buffer al final de una instrucción input. Esto puede ser hecho usando un circuito que decodifique las señales port_id y read_strobe. El circuito es idéntico al decodificador de la interfaz de salida a excepción de que write_strobe es reemplazada por read_strobe. La salida decodificada puede ser considerada como una señal “eliminadora”, que es válida para un ciclo de reloj y elimina los datos previamente recuperados. El diagrama del circuito completo de decodificación y multiplexación de una interfaz con cuatro FIFOs se muestra en la figura 2.4. La señal rv es la señal “eliminadora” decodificada. Al final de una instrucción input, un bit de esta señal (de 4 bits) es fijado y la FIFO correspondiente desempeña la operación de lectura, en la cual la primera palabra es eliminada del buffer. El segmento de código para la interfaz se muestra en el anexo III, asumiendo que 00H, 01H, 02H y 03H son las identificaciones de los puertos. En aplicaciones reales es posible que la interfaz de entrada contenga ambos puertos de acceso simple y continuo. Un circuito decodificador se necesita solo para los puertos de acceso simple..

Figure

Figura 1.1  Estructura conceptual de un dispositivo FPGA. (Chu, 2008)  1.2.1  Celda lógica basada en LUT
Figura 1.3  Arquitectura familia Spartan 3E. (Chu, 2008)    Bloques lógicos configurables (CLB’s)
Tabla 1.1  Comparación entre Microcontrolador empotrado y Lógica FPGA   Microcontrolador empotrado  Lógica FPGA
Figura 1.4  Diagrama en bloques de un FSMD. (Chu, 2008)
+7

Referencias

Documento similar

Un examen detenido del artículo 149, i, que enumera las compe- tencias exclusivas del Estado, nos enseña la diversa terminología que se emplea para referirse a aquellos supuestos en

[r]

Hecha la denuncia de esta primera invisibilización se propone la construcción de la comunicación alternativa como objeto de investigación social a través de un trabajo teórico

[r]

SECUNDARIA COMPRENDE LOS

[r]

El terminal de entrada/Salida puede programarse para funcionar como una entrada de zona, una salida programable o como un sensor de temperatura baja. 3 teclas de emergencia de un

40 expositores de diferentes ámbitos relacio- nados con la comercialización y transferencia de tecnologías contaron sus experiencias y técnicas para potenciar la temática principal