• No se han encontrado resultados

Diseño de una metodología para el co diseño con el microprocesador MicroBlaze de Xilinx

N/A
N/A
Protected

Academic year: 2020

Share "Diseño de una metodología para el co diseño con el microprocesador MicroBlaze de Xilinx"

Copied!
98
0
0

Texto completo

(1)Facultad de Ingeniería Eléctrica. Departamento de Electrónica y Telecomunicaciones. TRABAJO DE DIPLOMA Diseño de una metodología para el co-diseño con el microprocesador MicroBlaze de Xilinx. Autor: Yanisleisy Arzola Martín. Tutor: Dr. Juan Pablo Barrios Rodríguez. Santa Clara 2012 “Año 54 de la Revolución”. i.

(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Electrónica y Telecomunicaciones. TRABAJO DE DIPLOMA Diseño de una metodología para el co-diseño con el microprocesador MicroBlaze de Xilinx. Autor: Yanisleisy Arzola Martín. E-mail: [email protected]. Tutor: Dr. Juan Pablo Barrios Rodríguez E-mail: [email protected]. Santa Clara 2012 “Año 54 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 Tutor. Firma del Jefe de Departamento donde se defiende el trabajo. Firma del Responsable de Información Científico-Técnica.

(4) PENSAMIENTO. La ciencia es la estética de la inteligencia. Gaston Bachelard.. i.

(5) DEDICATORIA. Para ti mamá, que has sido un ejemplo de lucha y sacrificio; te regalo mi gran sueño coronado por ser tan especial y creer siempre en mí.. ii.

(6) AGRADECIMIENTOS. A mis padres, hermanos, tíos, primos, abuelitos; a mi familia, de la cual siempre he recibido amor y confianza, mil gracias por estar a mi lado incondicionalmente. A ti Jose.A, te agradezco tu apoyo; gracias por tanto amor, comprensión y paciencia. A mis amigos en especial a Yenisley, Marisabel, Dayana, Leonel, Alejandro, Yamilè, Ailín, y Daimi; y a todos aquellos que me estiman y me son fieles tanto en los buenos como en los malos momentos. A mi tutor, por haberme ofrecido la posibilidad de trabajar en este proyecto, por darme el tiempo que casi nunca tenía, y por esa forma tan efectiva de enseñar sobre la base del sacrificio, el interés y la constancia. Al departamento de Automática, en especial a Jose Omar Padrón cuyo apoyo fue decisivo para la realización de este trabajo. A los profesores y estudiantes del Instituto Superior Politécnico” José Antonio Echeverría”, por su colaboración en las investigaciones desarrolladas. Al claustro de profesores, que han contribuido a mi formación profesional durante estos cinco años. En fin, a todos ustedes, que han sabido enseñarme que la paciencia y el esfuerzo son el camino para lograr verdaderos objetivos y han contribuido a materializar este sueño.. A todos, gracias.. iii.

(7) TAREA TÉCNICA Para confeccionar el presente trabajo y con la intención de darle cumplimiento a los objetivos trazados en esta tesis así como alcanzar los resultados esperados, se tuvo en cuenta una serie de tareas técnicas necesarias, que constituirán una guía para llegar al informe final.  Realizar una caracterización breve de los FPGA’s. de Xilinx, en específico del. Spartan 3E, y de los microprocesadores que en éste pueden ser empotrados.  Análisis del kit de desarrollo NEXYS 2.  Estudiar las características y las prestaciones del microprocesador MicroBlaze que hacen que su uso sea generalizado debido a su eficiencia y desempeño óptimo.  Caracterizar las herramientas necesarias para el co-diseño con MicroBlaze, tanto de hardware como de software.  Elaborar una metodología para el desarrollo de aplicaciones utilizando MicroBlaze.  Validar dicha metodología con el desarrollo de ejemplos prácticos.. Firma del Autor. Firma del Tutor. iv.

(8) RESUMEN. Esta investigación presenta una metodología para desarrollar aplicaciones de carácter docente sobre el microprocesador empotrado MicroBlaze. Este, es una herramienta potente para desarrollar proyectos relacionados con arquitecturas paralelas, co-diseño y control; y en toda investigación sobre software. El estudio surge como una necesidad del dominio y actualización de la temática “Diseño Digital. VLSI”, particularmente, los FPGA’s de. Xilinx; compañía 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. microprocesador MicroBlaze en diseños cableados-programados. Con. este fin se realiza un análisis de la arquitectura y estructura interna de las FPGAs, específicamente de los Spartan3E; se explica la estructura. interna. y funcionamiento del. microprocesador; se caracterizaron las herramientas de software y hardware implicadas en el flujo del diseño para su mejor comprensión; y se estudiaron las prestaciones del kit Nexys2, por ser esta la tarjeta empleada para implementar los ejemplos y comprobar su comportamiento y desempeño. El trabajo constituye un importante aporte de contenidos a las asignaturas Diseño Digital VLSI y Microprocesadores; destacando que los estudiantes deben ser capaces de poner en práctica conocimientos de. Electrónica Digital y. Microprocesadores en un co-diseño hardware/software.. v.

(9) 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.. Dispositivos Lógicos Programables .........................................................................6. 1.2.1 1.3.. Generalidades de un dispositivo FPGA ...................................................................7. 1.3.1 1.4.. Tecnología de Configuración de los PLDs .......................................................7. Celda lógica basada en LUT ...........................................................................10. Dispositivos Xilinx Spartan-3E..............................................................................11. 1.4.1. Arquitectura de la Tarjeta XC3S500E ............................................................12. 1.4.2. Matriz de Interconexión ..................................................................................15. 1.5.. Procesadores Empotrados en FPGA’s....................................................................16. 1.6.. Conclusiones del capítulo.......................................................................................17. CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE..............................................18 2.1. El microprocesador MicroBlaze.............................................................................18. 2.1.1 2.2. Ventajas y desventajas ....................................................................................20. Arquitectura del procesador. ..................................................................................21. 2.2.1. Repertorio de Instrucciones ............................................................................21. vi.

(10) 2.2.2. Pipeline............................................................................................................22. 2.2.3. Registros internos............................................................................................24. 2.2.4. Utilización de caché ........................................................................................26. 2.2.5. Buses del sistema ............................................................................................27. 2.2.6. Interrupciones y excepciones ..........................................................................29. 2.2.7. Distribución de memoria.................................................................................30. 2.3. Desarrollo de sistemas basados en microprocesadores. .........................................31. 2.3.1. Diseño Basado en Plataforma (PBD)..............................................................31. 2.3.2. Kit de desarrollo Nexys2.................................................................................32. 2.3.3. Xilinx ISE .......................................................................................................33. 2.3.4. Utilización de la Herramienta EDK ................................................................34. 2.3.5. Utilización de la Herramienta XPS .................................................................36. 2.4. Conclusiones del capítulo.......................................................................................38. CAPÍTULO 3. METODOLOGÍA Y VALIDACIÓN .........................................................39 3.1. Co-Diseño Hardware/Software ..............................................................................39. 3.1.1. Fases del Co-Diseño HW/SW.........................................................................40. 3.2. Metodología Aplicada ............................................................................................43. 3.3. Interfaz XPS ...........................................................................................................51. 3.3.1 3.4. Pasando de Hardware a Software ...........................................................................57. 3.4.1 3.5. Añadiendo periféricos .....................................................................................53. Creando una aplicación software ....................................................................59. Integración Hardware/ Software ...........................................................................61. 3.5.1. ¿ Como probarlo?............................................................................................62. vii.

(11) 3.6. Conclusiones del capítulo.......................................................................................63. CONCLUSIONES ................................................................................................................64 RECOMENDACIONES .......................................................................................................65 REFERENCIAS BIBLIOGRÁFICAS ..................................................................................66 ANEXOS ..............................................................................................................................68 Anexo I: Familias de FPGAs ................................................................................................68 Anexo II: Dispositivos de la familia Spartan-3.....................................................................68 Anexo III: Kit de desarrollo Spartan 3E (XC3S500E) .........................................................68 Anexo IV: Resumen de I/O de MicroBlaze .......................................................................69 Anexo V: Nomenclatura utilizada en el set de instrucciones................................................78 Anexo VI: Set de instrucciones MicroBlaze.........................................................................79 Anexo VII: Vista general del XPS ........................................................................................86 Anexo VIII: Código C ..........................................................................................................87. viii.

(12) INTRODUCCIÓN En el departamento de Electrónica y Telecomunicaciones 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 (Microcontroladores y Microprocesadores). 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, compañía líder a nivel mundial en la fabricación y comercializació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 microprocesador MicroBlaze de Xilinx en. diseños. cableados-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. 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 microprocesador embebido en un FPGA es generalmente preferible para las aplicaciones que no sean críticas en el tiempo. En general el microprocesador es apto para tareas de interfaz entrada/ salida no críticas en 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 microprocesador específico MicroBlaze.. 1.

(13) INTRODUCCIÓN En el mundo existen diferentes trabajos publicados al respecto, pero cada uno muestra experiencias de trabajo con las herramientas de software y hardware que han utilizado. Este trabajo pretende dar una metodología para el trabajo de co-diseño con MicroBlaze utilizando herramientas de software y un kit de Xilinx para el desarrollo de aplicaciones con FPGA. Existen trabajos de diploma anteriores sobre la tecnología FPGA, desarrollados con diferentes herramientas de software y hardware, pero sobre la tecnología específica de Xilinx no abunda la información. Existe una tesis desarrollada hace ya dos años por el estudiante Rafael Orestes Arias Zamora titulada “Metodología para el diseño de aplicaciones medianas en FPGAs de Xilinx.” En. esta investigación. se. expone una metodología o algoritmo de trabajo para. realizar diseños de aplicaciones medianas con FPGAs 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. El año pasado se desarrolló una tesis titulada “Metodología para desarrollar aplicaciones con el PicoBlaze de Xilinx” por el estudiante Yohan Bruno Santana Galindo. En dicha investigación se expone una metodología para desarrollar aplicaciones de carácter docente sobre el microcontrolador empotrado PicoBlaze. Dicha tesis se realizó luego de la adquisición de un Kit Nexys2 de Digilent, el cual posee una FPGA Spartan-3E de Xilinx, de 500 000 compuertas en el que se puede configurar tanto un microcontrolador PicoBlaze como un microprocesador MicroBlaze; los cuales son procesadores óptimos y eficientes. El procesador MicroBlaze fue creado por Xilinx para sus FPGAs Spartan y Virtex. Es un procesador “soft-core” por lo que se define como un sistema mediante código sintetizable HDL lo que. permite que el diseñador pueda modificar algunas de las características del. procesador, y a su vez expandir su funcionalidad y flexibilizar el diseño. Aunque permite un alto grado de configuración, tienen un mayor costo y una potencia de procesamiento menor; aún así, es una herramienta muy potente para desarrollar proyectos relacionados con 2.

(14) INTRODUCCIÓN arquitecturas paralelas, co-diseño y control; y en general, en toda investigación sobre software. Antes de la llegada de los microprocesadores empotrados, estos residían fuera del FPGA, limitando la conectividad a otras funciones y restringiendo el desempeño de las interfaces. Como contraste, el microprocesador MicroBlaze es completamente empotrado dentro de un FPGA con conectividad extensible hacia otros recursos. En la facultad de Ingeniería Eléctrica se están 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 tarjetas prototipo o kits de desarrollo mediante las cuales. se pueden. implementar diversas aplicaciones. Tanto las exigencias académicas relacionadas con el perfeccionamiento del Plan de Estudios D; en lo que respecta a la incorporación al mismo de asignaturas optativas como Diseño Digital VLSI, así como un conjunto de investigaciones de las especialidades de Telecomunicaciones y Electrónica y de Automática (Tarea Triunfo) conllevan a que sea necesario resolver la problemática de que los estudiantes de pregrado puedan dominar las técnicas y tecnologías de diseño VLSI digital y, en particular del co-diseño digital VLSI. La solución a este problema es entonces crear, a través del uso de la plataforma de Xilinx y el trabajo con MicroBlaze, una metodología o algoritmo de trabajo para el desarrollo de aplicaciones de co-diseño Hardware/Software, que permita explotar eficientemente el kit de desarrollo Nexys2. El objetivo general de este trabajo de diploma consiste en realizar una metodología para el co-diseño con el microprocesador MicroBlaze de Xilinx con fines docentes. Para el cumplimiento del mismo se han trazado los siguientes objetivos específicos:  Realizar una revisión. bibliográfica. sobre el tema de los FPGAs y los. Microprocesadores empotrados o embebidos.  Describir las características del microprocesador, así como las potencialidades que ofrece.  Caracterizar las herramientas de hardware y software que intervienen en el proceso de diseño con MicroBlaze.  Desarrollar la metodología de trabajo para MicroBlaze utilizando ISE Xilinx 12.1. 3.

(15) INTRODUCCIÓN  Realizar algún(os) diseño(s) práctico(s) que valide la metodología propuesta y que demuestre el trabajo con las herramientas de software y hardware disponibles Para satisfacer los objetivos planteados se ha decidido dividir el trabajo en Introducción, Tres capítulos, Conclusiones y Recomendaciones. El CAPÍTULO 1 “MARCO TEÓRICO-REFERENCIAL”: se dedicará a la recopilación de todos. los. conocimientos. teóricos. necesarios. para. introducir. el. tema. de. los. microprocesadores empotrados en FPGAs, que es el objeto de estudio de este trabajo. En él se expone de manera breve la arquitectura y características funcionales de los FPGAs de Xilinx y en específico de la familia Spartan-3E. El CAPÍTULO 2: “El MICROPROCESADOR MICROBLAZE” se dedicará a caracterizar al microprocesador MicroBlaze, explicando su organización, estructura interna, formato de las instrucciones, entre otras características importantes que deben ser dominadas. Además se estudiarán herramientas tanto de hardware como de software que son necesarias para el trabajo con MicroBlaze. CAPÍTULO 3: “METODOLOGÍA Y VALIDACIÓN” 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 microprocesador MicroBlaze, la cual será validada con ejemplos prácticos que demuestren su versatilidad. En las conclusiones y recomendaciones se mostraran los principales resultados en concordancia con los objetivos planteados valorando el alcance de este trabajo y su posible expansión hacia futuras investigaciones.. 4.

(16) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL Luego de una profunda revisión bibliográfica, en este capítulo se hace una recopilación de todos. los. conocimientos. teóricos. necesarios. microprocesadores empotrados en FPGA’s. y. para. introducir. el. tema. de. los. sus aplicaciones. Particularmente de la. corporación Xilinx, se ofrece una breve reseña histórica y también se explica la estructura interna de un dispositivo FPGA específicamente el Spartan3E XC3S500E. 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, en 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 dicha compañía,. 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. Ross fracasó al tratar de convencer a la corporación para invertir en la creación de FPGA’s, pues 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; las mayores ganancias se obtenían con la producción masiva de circuitos genéricos. Al fracasar en sus propósitos Ross dejó la compañía y se unió a su colega Bernard Vonderschmitt. para invertir en el diseño del primer FPGA comercialmente viable.. La nueva compañía fundada en 1984 comenzó a vender su primer producto un año después y ya a fines de 1987 el capital de riesgo de la Compañía había crecido a más de 18 millones de dólares generando ingresos anuales de aproximadamente 14 millones.(Santana, 2011) Debido a la incesante y creciente demanda de dispositivos lógicos programables los ingresos y ganancias de Xilinx continuaron en ascenso en los años siguientes. Los competidores de Xilinx emergieron en el mercado de los FPGA’s hacia la década del 90 y a pesar de la competencia Xilinx continúo en ascenso; expandiendo sus operaciones hacia la 5.

(17) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL India, Asia y Europa por lo que sus ventas continuaron aumentando y una década después de haber vendido su primer producto la compañía alcanzó en ingresos un total de 550 millones de dólares. 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. 1.2. Dispositivos Lógicos Programables Los dispositivos lógicos programables PLD, del inglés (Programmable Logical Device), son circuitos integrados digitales que no tienen una función predefinida por el fabricante. Su función puede ser definida o programada por el usuario. Permiten reemplazar grandes diseños digitales que antes se implementaban con componentes discretos como compuertas y flip-flops por un solo integrado.. Debido a la gran capacidad lógica que tienen los. dispositivos modernos, sistemas completos pueden desarrollarse sobre un solo circuito integrado. Esto da lugar a las denominaciones, Sistemas programables en un Chip (Systemon-a-Programmable Chip, SoPC) y sistemas reprogramables en un Chip, (System-on-aReprogammable Chip, SoRC). (LÓPEZ and AYALA, 2004) Los dispositivos actuales (CPLD y FPGAs) tienen una capacidad lógica de hasta millones de compuertas, incluyen interfaces programables para varios estándares de interface eléctrica y tienen bloques de funciones especiales embebidos entre la lógica programable tales como memoria, multiplicadores o CPUs completas.. Uno de los factores más. importantes para el auge de las FPGA es el conjunto de herramientas disponibles. Entre los puntos a destacar de las herramientas de software disponibles en el mercado pueden nombrarse los siguientes:  La facilidad de usar lenguajes de descripción de hardware HDL, del inglés (Hardware Description Language), para sintetizar circuitos. 6.

(18) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL  La integración de los simuladores con el ambiente de desarrollo que permiten una rápida verificación de los sistemas diseñados.  Las interfaces cada vez más amigables, que incluyen gráficas, sistemas de desarrollo integrados y la capacidad de desarrollar sistemas utilizando diversas metodologías (esquemático, máquinas de estado, HDL, etc.).  Las librerías de componentes integradas con las herramientas de software, que permiten hacer diseños de manera rápida. En resumen, la facilidad de uso de herramientas de desarrollo para PLDs ayuda a que una gran cantidad de usuarios puedan rápidamente desarrollar un sistema utilizando PLDs.. 1.2.1. Tecnología de Configuración de los PLDs. La tecnología utilizada para configurar los elementos de un PLD, ya sean los bloques lógicos o las interconexiones, dependen del fabricante y el dispositivo. Entre los dispositivos reprogramables, se destacan las tecnologías EEPROM, SRAM y Flash. Los dispositivos que solo pueden configurarse una vez en general utilizan tecnologías de Antifuse. Cada tecnología tiene sus ventajas y desventajas respecto a las otras.(Arias, 2010) A continuación se dan algunos ejemplos de dispositivos que utilizan cada tecnología. SRAM: Virtex II, Virtex4, Spartan2e, Spartan 3 de Xilinx. Stratix, Cyclon Apex de Altera Flash: Actel ProAsic, ProAsicPlus Antifuse : Actel A54SX, Quicklogic pAsic EEPROM: Altera MAX7000, Cypress Ultra37000 EEPROM + SRAM: Lattice Semiconductor ispXPGA. 1.3. Generalidades de un dispositivo FPGA Las FPGA, arreglo de compuertas programables por campo, del inglés (Field Programmable Gate Array), en principio llamadas LCA (Logic Cell Array) nacen con una idea sencilla: un Gate Array tolerante a errores de diseño y programable o reprogramable por el usuario. Un FPGA es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad se puede programar o sea es un dispositivo multinivel 7.

(19) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL programable de propósito general que 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. (Santana, 2011) 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. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una compuerta lógica o un sistema combinacional hasta complejos sistemas en un chip. (GUTIÉRREZ, 2004) En el nivel más alto, los FPGAs son chips de silicón reprogramables. Al utilizar bloques de lógica pre-construidos y recursos de ruteo programables, usted puede configurar estos chips para implementar funcionalidades de hardware. personalizadas sin tener que utilizar un. tablero o un cautín. Sólo deberá desarrollar tareas de computación digital en software y compilarlas en un archivo de configuración o una escritura de bits que contenga información de cómo deben conectarse los componentes. Además son completamente reconfigurables y al. instante toman una nueva “personalidad” cuando usted compila una. nueva configuración de circuitos. Anteriormente sólo los ingenieros con un profundo. entendimiento de diseño de hardware. digital podían trabajar con la tecnología FPGA. Sin embargo, el aumento de herramientas de diseño de alto nivel está tecnologías que. cambiando las reglas de programación de FPGAs, con nuevas. convierten los diagramas o bloques gráficos a circuitos. de hardware. digital.(INSTRUMENTS, 2008.) La adopción de estos chips en las industrias ha sido impulsada por el hecho de que estos combinan lo mejor de los circuitos integrados de aplicación específica ASICs y de los sistemas basados en procesadores. Ofrecen velocidades. temporizadas por hardware y. fiabilidad, pero sin requerir altos volúmenes de recursos para compensar el gran gasto que 8.

(20) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL genera un diseño personalizado de ASIC. El silicio reprogramable tiene la misma capacidad de ajustarse que un software que se ejecuta en un sistema basado en procesadores, pero no está. limitado por el número de núcleos de proceso disponibles. A diferencia de los. procesadores, los FPGAs llevan a cabo diferentes operaciones en paralelo, por lo que éstas no necesitan competir por los mismos recursos. Cada tarea de procesos independientes se asigna a una sección dedicada del chip, y puede ejecutarse de. manera autónoma sin ser. afectada por otros bloques de lógica. Como resultado, el rendimiento de una parte de la aplicación no se ve afectado cuando se agregan otros procesos. (INSTRUMENTS, 2009) 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. (Santana, 2011). Figura 1.1: Estructura conceptual de un dispositivo FPGA. 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 9.

(21) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL 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) 1.3.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). Además contiene un circuito de acarreo. que. es usado para implementar funciones aritméticas, y un circuito de. multiplexación para implementar grandes multiplexores. El método más común para implementar un circuito combinacional configurable es con una LUT (look-up table). De esta forma, las funciones se configuran mediante su tabla de verdad que se memoriza en un «registro»: un multiplexor cuyas entradas son las salidas del registro selecciona (por «búsqueda en la tabla», LUT) la salida de la función. Una LUT de n entradas puede ser considerada como una pequeña memoria 2ⁿ x 1. Escribiendo apropiadamente el contenido de la memoria, la LUT puede ser usada para implementar cualquier función combinacional de n entradas y puede además ser configurada como una SRAM (static random access memory) o como un registro de desplazamiento de 16 bits.(Santana, 2011) El diagrama conceptual de una LUT de tres entradas se muestra en la figura1.2. (Santamaría., 2007). Figura 1.2: Diagrama conceptual de una LUT de tres entradas.. 10.

(22) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL 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.4. Dispositivos Xilinx Spartan-3E Spartan 3E constituye una familia de FPGA’s (Anexo I) 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 MicroBlaze, mediante ejemplos. 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 (número de LC’s, bloques RAM, multiplicadores y DCM’s). Los dispositivos de las subfamilias de Spartan-3 se resumen en el (Anexo II).(XILINX, 2006.) Los FPGAs Spartan3E de Xilinx tienen nuevas características que mejoran el rendimiento del sistema y reducen el costo de configuración. Por su bajo costo son ideales para un amplio rango de consumidores de aplicaciones electrónicas. En este trabajo se profundiza en los FPGAs de XILINX, en específico los Spartan3E y dentro de las mismas en el XC3S500E, el cual es utilizado en la tarjeta Nexys2, hardware del que se dispone actualmente y el cual se emplea en este trabajo (Anexo III). Las principales características de esta familia se reflejan en la tabla 1.1.. Dispositivo. CLBs. Slices. RAM de bloque. Multiplicadores. DCMs. I/O. XC3S500E. 1164. 4656. 360Kb. 20. 4. 232. Tabla 1.1: Características de la XC3S500E. 11.

(23) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL 1.4.1 La. Arquitectura de la Tarjeta XC3S500E. arquitectura de esta tarjeta consiste principalmente en cinco bloques o módulos. programables que. a continuación se muestra en la figura 1.3. y se presentan en mayor. detalle.. Figura1.3: Elementos del FPGA Spartan3E XC3S500E. (Xilinx, 2009). Bloques de Entrada y Salida (IOBs): Las interfaces de entrada-salida son otro de los componentes particulares que tienen los FPGAs. Controlan el flujo de datos entre los pines de entrada y salida; y la lógica interna del dispositivo. integrado en diferentes. En diferentes familias de FPGAs, se dividen las entradas/salidas del bancos que se pueden configurar para tener una interface con lógica de. estándares eléctricos de manera independiente. Los bancos se configuran. 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 interface a diferentes familias lógicas dentro del. mismo FPGA. Las entradas de reloj. están asociadas a diferentes bancos de entrada-salida, para permitir que haya diferentes dominios de reloj con interfaces eléctricas diferentes. (GUICHAL, 2010.) Cada IOB tiene un bloque de retraso programable que opcionalmente retrasa la señal de entrada. Los valores de retraso son establecidos en el silicio, una vez en el tiempo de configuración ellos son no modificables en la operación de dispositivo. El primer paso para el elemento de retraso de entrada es ajustar el camino de retraso de entrada para asegurar que no haya ningún requerimiento de tiempo de mantenimiento cuando usamos los flip12.

(24) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL flops de entrada con un reloj global. El valor por defecto es elegido automáticamente por las herramientas de software Xilinx cuando el valor depende del tamaño de dispositivo. Si el diseño usa un DCM en el camino de reloj, entonces el elemento de retraso puede ser con toda seguridad puesto a cero por el ´´Delay-Locked Loop´´ (DLL), la compensación automáticamente asegura que no haya ningún requerimiento de tiempo de mantenimiento de entrada. Tanto los valores asincrónicos como sincrónicos pueden ser modificados, esto es útil cuando un retraso extra es requerido en el reloj o las entradas de datos, por ejemplo, en interfaces a varios tipos de la RAM. Estos valores de retraso son definidos por los parámetros. IBUF_DELAY_VALUE. e. IFD_DELAY_VALUE.. Por. defecto. IBUF_DELAY_VALUE es 0, evitando los elementos de retraso para las entradas asincrónicas.. El usuario puede poner este parámetro de 0 a 12. Por defecto. IFD_DELAY_VALUE es el AUTO. El IBUF_DELAY_VALUE e IFD_DELAY_VALUE son independientes para cada entrada. (XILINX, 2006.) Bloques lógicos configurables (CLB): Todos los FPGA tienen algún tipo de bloque lógico programable. Este es el corazón de la misma, y permite implementar las diferentes funciones lógicas. Cada CLB contiene cuatro slice, y cada slice contiene dos tablas de entrada-salida o tablas de consultas (LUT, Look Up Table). y elementos almacenadores como flip-flops o latches, además contiene. multiplexores adicionales que simplifican las funciones de lógica y aritmética.(GÜICHAL, 2005) Cada LUT es una RAM que funciona como un generador de funciones y es el principal recurso para implementar funciones lógicas. Estas tablas pueden implementar cualquier función lógica de cuatro entradas y una salida, así como también utilizarse como memorias distribuidas de 16 x 1 o como registros de rotación de 16 bit. Las salidas de las LUTs pasan a los bloques de control, que contienen lógica que permite optimizar funciones aritméticas. (XILINX, 2009) Los elementos que permiten implementar lógica secuencial son los elementos de almacenamiento como flip-flops tipo D, con reloj o como pestillos controlados por nivel. La salida del CLB es conectada a segmentos cableados usando PIPs (Puntos de Interconexión Programables). Si el bloque no usa todos los PIPs, estos se desconectan y el 13.

(25) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL bloque no genera señal a ningún segmento, y el segmento. puede ser usado para otras. señales. La base literal del CLB es un SRAM (RAM estática) que almacena el patrón de bits que define las funciones lógicas del CLB y los caminos ligados a ellos. Los patrones de bits SRAM son cargados de una forma variada de modos de. configuración y como con. cualquier RAM, puede ser recargado o escrito un número de veces ilimitado. De esa forma un diseño puede ser corregido o modificado a través de configuraciones programadas con ningún cambio en el hardware. Los datos de configuración pueden ser cargados desde un ordenador servidor o pueden ser transferidos desde una memoria PROM local de forma automática con el encendido del dispositivo. (CUÉLLAR, 2005) 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 ya que la RAM de bloque sincronizada salva grandes cantidades de datos mientras que la RAM distribuida, es mejor como buffer de cantidades pequeñas de datos a lo largo de los recorridos de la señal. Se puede ajustar: el contenido inicial, la señal de salida por defecto, modos de escritura, puerto simple o puerto dual. (XILINX, 2009) Multiplicador dedicados (Multiplier Blocks): Los multiplicadores están situados junto a cada bloque de memoria RAM en una o dos columnas dependiendo de la densidad del dispositivo. Aceptan dos números binarios de 18 bits como entradas y calculan el producto. Cada multiplicador realiza la operación principal P=A × B, donde A y B son palabras de 18 bits en la forma de complemento a dos, y P es el producto de 36 bits de precisión, también en la forma de complemento a dos. Además de realizar la multiplicación numérica de dos complementos puede también realizar algunos usos menos obvios, tales como almacenaje de datos. (XILINX, 2009) Controladores del reloj digital (DCM): El sistema de control del reloj o DCM, del. inglés Digital Clock Managers consiste en. bloques de control integrados a la red de distribución de reloj la que asegura retardos parejos a todos los bloques lógicos. El Spartan 3E, tiene 2, 4 o 8 DCM’s dependiendo del tamaño del dispositivo, cada fabricante utiliza una arquitectura diferente para el control y 14.

(26) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL distribución de reloj. Estos bloques proveen autocalibración, soluciones totalmente digitales para distribución, retraso, multiplicación, división, y el cambio de fase del reloj. (Arias, 2010) Para llevar a cabo esto, el DCM emplea un lazo digital de retraso (DLL, del inglés DelayLocked Loop). para reducir la desviación del reloj y así controlar la frecuencia y la fase de. la señal de reloj; sistema de control totalmente digital que usa realimentación para mantener las características de la señal del reloj con un alto grado de precisión a pesar de variaciones normales de temperatura y voltaje.(XILINX, 2009) 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. Por lo que apoya tres funciones principales: 1. Eliminación del reloj: la eliminación del reloj dentro de un sistema ocurre debido a los diferentes tiempos de llegada de una señal de reloj en puntos diferentes, típicamente causado por la red de distribución de la señal de reloj. Este mecanismo con eficacia anula las demoras de distribución de reloj. (XILINX, 2009) 2. Síntesis de Frecuencia: el DCM puede generar una amplia variedad de frecuencias de reloj de salida diferentes, sacadas de la señal de reloj entrante. Esta es llevada a cabo por multiplicación y/o división de. la frecuencia de entrada por cualquiera de varios factores. diferentes. (XILINX, 2009) 3. Cambio de Fase. El DCM proporciona la capacidad de cambiar la fase de todas las señales de reloj de salida con respecto a la señal de reloj de entrada. (XILINX, 2009) 1.4.2. Matriz de Interconexión. Para poder implementar circuitos lógicos, los elementos lógicos presentados en la sección anterior, no solo deben configurarse adecuadamente sino que también deben conectarse entre si. La estructura de interconexión interna consiste en un conjunto de alambres o trazas que pueden conectarse mediante elementos de conexión programables. (Arias, 2010) Estos FPGAs tienen dos niveles de interconexión. Por un lado tienen una interconexión de propósito general a través de la matriz de interconexionado general o GRM por sus siglas en inglés y por otro lado contienen recursos de interconexión local. 15.

(27) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL Los recursos de interconexión local, permiten hacer las conexiones entre los elementos internos de un bloque lógico o CLB, como las tablas de búsqueda (LUT), los flip-flop y las realimentaciones dentro del CLB. Además, la interconexión a este nivel provee conexiones a la matriz de interconexionado general y a los CLB adyacentes. Las mismas permiten optimizar los diseños al evitar los retardos y la utilización de recursos de la matriz general. La mayor parte de las señales se conectarán a través de. la matriz de. interconexión. general. Los elementos de la misma se encuentran entre los CLB, en los canales de interconexiones horizontales y verticales. Estos permiten hacer la conexión entre las trazas horizontales y verticales hacia los CLB. A través de ellos se configuran las conexiones entre CLBs no adyacentes y hacia los bloques de entrada/salida.(GÜICHAL, 2005) 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 se realizan 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. 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. 16.

(28) CAPÍTULO 1. MARCO TEÓRICO-REFERENCIAL 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. Xilinx distribuye 2 procesadores SCP: PicoBlaze y MicroBlaze. 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 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. 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. Debido a que el trabajo está específicamente orientado al microprocesador empotrado MicroBlaze, se mostró el concepto de procesador empotrado y solo se ofreció una breve introducción a los dispositivos lógicos programables, donde se realiza un análisis de los FPGAs de Xilinx en específico el Spartan3E ,mostrando los elementos principales que describen su arquitectura y dando a conocer sus principales características.. 17.

(29) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE Este capítulo está. dedicado al. microprocesador. MicroBlaze. En este se recopilan los. aspectos más importantes de su estructura interna, organización y funcionamiento, lo que es esencial para poder trabajar con el mismo en un diseño personalizado específico y comprender su funcionamiento. Además en este capítulo son caracterizadas, una serie de herramientas tanto de hardware como de software que son necesarias para el trabajo con MicroBlaze, a fin de facilitar su comprensión y utilizarlas correctamente en la metodología que se propone en el capítulo posterior. 2.1. El microprocesador MicroBlaze. El procesador embebido MicroBlaze fue creado por Xilinx para sus FPGAs Spartan y Virtex. Es un. procesador “soft-core” por lo que se define como un sistema mediante. código sintetizable HDL, lo que permite que el diseñador pueda modificar algunas de las características del procesador, y a su vez expandir su funcionalidad y flexibilizar el diseño; el usuario no tiene acceso a los detalles VHDL del circuito, sólo puede analizarse a partir de la documentación del fabricante y de los resultados experimentales. Aunque permite un alto grado de configuración, tienen un mayor costo y una potencia de procesamiento menor; aún así, es una herramienta muy potente para desarrollar proyectos relacionados con arquitecturas paralelas, co-diseño y control; y en general, en toda investigación sobre software, puesto que permite una comparación inmediata con otras arquitecturas y metodologías de desarrollo. A continuación se presenta (figura 2.1) una visión general de entradas y salidas del microprocesador MicroBlaze y en los anexos se presenta un resumen más detallado. (Anexo IV). 18.

(30) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE. Figura 2.1: Diagrama de la estructura general de un microprocesador MicroBlaze.(XILINX, 2011). M_AXI_DP: Peripheral Data Interface, AXI4-Lite or AXI4 interface DPLB: Data interface, Processor Local Bus DLMB: Data interface, Local Memory Bus (BRAM only) M_AXI_IP: Peripheral Instruction interface, AXI4-Lite interface IPLB: Instruction interface, Processor Local Bus ILMB: Instruction interface, Local Memory Bus (BRAM only) M0_AXIS.M15_AXIS: AXI4-Stream interface master direct connection interfaces S0_AXIS.S15_AXIS: AXI4-Stream interface slave direct connection interfaces MFSL 0.15: FSL master interfaces DWFSL 0.15: FSL master direct connection interfaces SFSL 0.15: FSL slave interfaces DRFSL 0.15: FSL slave direct connection interfaces DXCL: Data side Xilinx Cache Link interface (FSL master/slave pair) 19.

(31) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE M_AXI_DC: Data side cache AXI4 interface IXCL: Instruction side Xilinx Cache Link interface (FSL master/slave pair) M_AXI_IC: Instruction side cache AXI4 interface Core: Miscellaneous signals for: clock, reset, debug, and trace 2.1.1 Ventajas y desventajas MicroBlaze cumple unos requisitos de ocupación y prestaciones muy rígidos, debido a la limitación de recursos de la FPGA, por este motivo, su funcionalidad puede resultar limitada. en. comparación. con. otros. microshardware. equivalentes.. Soluciones. arquitectónicas como la superescalabilidad o la supersegmentación no resultan adecuadas en un entorno lógico reprogramable cuando el objetivo es un diseño compacto. A esto habrá que añadir que la frecuencia final se ve limitada por los altos retardos de interconexión de la FPGA. Esta opción de diseño presenta como inconveniente que tiene una estructura mucho más compleja que otros sistemas lo que conlleva a un mayor tamaño; esto puede resultar una grave desventaja si se quiere incluir varios microprocesadores dentro de una misma FPGA ya que podría ser necesario incluir memoria externa, lo que encarecería el valor final de la FPGA; sin embargo tiene como mejoras frente al microcontrolador “PicoBlaze”: El diseño de un sistema de lectura y procesado para múltiples sensores embebidos en una FPGA. Mayor velocidad. Puede ser programado en alto lenguaje de programación (lenguaje C++) mientras que el microcontrolador PicoBlaze se debe programar en ensamblador. Dispone de un mayor juego de instrucciones y funcionalidad. Permite controlar varios buses a la vez. Dispone de librerías específicas para aritmética de datos enteros y de datos en punto flotante.. 20.

(32) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE 2.2. Arquitectura del procesador.. MicroBlaze es un procesador de tipo RISC de 32 bits que sigue una arquitectura interna tipo Harvard. Presenta interfaces de bus separadas para acceso a datos o instrucciones y cuenta con 87 instrucciones diferentes. A continuación se presenta en la figura 2.2 el Esquema de bloques de MicroBlaze.. Figura 2.2: Esquema de bloques de MicroBlaze(Aguayo, 2011). 2.2.1 Repertorio de Instrucciones El sencillo diseño al que se ve forzado este micro, hace que se ajuste a una arquitectura de tipo RISC (Reduced Instrution Set Computer) y es optimizado para implementación sobre FPGAs de Xilinx, donde el limitado número de instrucciones permite simplificar la unidad de decodificación. MicroBlaze se compone de un total de 87 instrucciones (siempre considerando como diferentes las que operan con valores inmediatos de aquellas que realizan la misma operación mediante registros) y estas instrucciones se utilizan para realizar distintas operaciones las que se pueden clasificar por grupos en:. 21.

(33) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE  Lógicas  Aritméticas  Saltos  Carga/Descarga  Instrucciones especiales (todas aquellas que no se pueden encuadrar en las otras categorías). MicroBlaze cuenta con cinco etapas máximo para la ejecución de instrucciones (3 ciclos si salta + 2 para rellenar el pipeline), con lo cual es capaz de tener lista una instrucción completa en cada ciclo de reloj.(Tarpón, 2009) Además de que cada instrucción se ha elegido para que el tamaño de la unidad lógica aritmética. (ALU). sea. también. reducido,. aquellas instrucciones que requieran un. procesamiento complejo deberán realizarse en un hardware específico, diseñándose sobre los restantes recursos de la FPGA. Todas las instrucciones son de 32 bits y pueden ser de dos tipos: A o B cuyas principales características se muestran a continuación. En los Anexos V y VI se presentan de manera detallada el set de instrucciones y para profundizar en la ejecución de estas se recomienda estudiar el Reference Guide.. Tipo A.-Fuente: uno o dos registros; Destino: un registro.. Tipo B.-Fuente: un registro y un operando inmediato de 16 bits; Destino: un registro.. 2.2.2 Pipeline Una arquitectura RISC aumenta fácilmente su rendimiento por medio de la segmentación (Pipelining), esta es una solución arquitectónica para maximizar el número de datos 22.

(34) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE procesados por segundo. En el caso de MicroBlaze la ejecución de las instrucciones tiene la forma “pipeline” donde el número de etapas puede ser 3 o 5 y cada una requiere 1 ciclo de reloj, ejecutándose una sola instrucción por cada ciclo. Cuando el sistema está configurado para optimizar el coste computacional hardware. Se divide cada instrucción en tres etapas. Ver ejemplo en la tabla 2.1 1. “fetch” (recepción de la instrucción) 2. “decode” ( decodificar la instrucción) 3. “execute” (ejecutar la instrucción). Ciclo 1. Ciclo 2. Ciclo 3. Fetch. Decode. Execute. Fetch. Instrucción 1 Instrucción 2 Instrucción 3. Ciclo 4. Ciclo 5. Ciclo 6. Decode. Execute. Execute. Execute. Fetch. Decode. Stall. Stall. Ciclo 7. Execute. Tabla 2.1: Ejempl o de ejecución con 3 estados de segmentación. Cuando el sistema esta segmentado en cinco estados, las diferentes etapas de cada instrucción serán las que se presentan a continuación. Ver ejemplo en la tabla 2.2 1. IF (fetch: recepción de la instrucción) 2. OF (decode: decodificar la instrucción) 3. EX (execute: ejecutar la instrucción) 4. MEM (Access memory: acceso a la memoria) 5. WB ( whiteback ). Ciclo1 Ciclo2. Instrucción1 Instrucción2 Instrucción3. IF. Ciclo3. Ciclo4. Ciclo5. Ciclo6. Ciclo7. Ciclo8. OF. EX. MEM. IF. OF. EX. MEM. MEM. MEM. WB. IF. OF. EX. Stall. Stall. MEM. Ciclo9. WB. Tabla 2.2: Ejemplo ejecución con 5 estados de segmentación. 23.

(35) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE Frente a esta mejora, en el diseño, será necesario incorporar mecanismos para evitar problemas relacionados con los saltos de programa y con aquellas instrucciones que necesiten un mayor número de ciclos para ejecutarse. Saltos: Cuando en el programa se ejecuta un salto, el pipeline contiene instrucciones que no se corresponden con el flujo de ejecución del programa. Estos riesgos están tratados en MicroBlaze por hardware, tras producirse un salto efectivo será necesario vaciar el pipeline y volver a cargar las nuevas instrucciones calculadas con la dirección que contendrá nuestra dirección de salto. Un salto en MicroBlaze necesita tres ciclos de reloj para ejecutarse, dos de ellos se utilizan para cargar las nuevas instrucciones en el pipeline. En el repertorio de instrucciones se incluyen un cierto número de instrucciones de salto que permiten la ejecución de la instrucción que les precede, con el objetivo de reducir la penalización de vaciado. Esta técnica es conocida como Delay Slots (XILINX, 2011) 2.2.3. Registros internos. La arquitectura de MicroBlaze es totalmente “ortogonal”: cualquier registro puede ser utilizado como fuente o destino de una instrucción. Presenta 32 registros de propósito general de 32 bits (figura 2.3) que generan gran capacidad de direccionamiento de memoria y otros que cumplen una función predeterminada o sea específica .(Aguayo, 2011). Figura 2.3: Representación de un registro de propósito general.. Descripción de cada registro de propósito general. R0: siempre almacena el valor cero. R1-R13: registros de propósito general. R14: direcciones de retorno de “interrupciones”. R15: registro de propósito general. R16: direcciones de retorno de “breaks”. R17: direcciones de retorno de “excepciones”. 24.

(36) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE. R18-R31: registros de propósito general. Descripción de cada registro de función específica. Contador de instrucción (PC): Instrucción de ejecución. Registro De Estado (MSR): Contiene los bits de control y de estado para el procesador. Registro De Dirección De Excepción (EAR): Almacena la dirección llena de carga /descarga para las excepciones. Registro De Estado De Excepción (ESR): Contiene bits de estado para el procesador. El Registro Del Blanco De La Rama (BTR): Sólo existe si el procesador MicroBlaze es configurado para usar excepciones. El registro almacena la dirección del blanco de la rama, se desarrolla una instrucción en una ranura de retraso. Registro De Estado Del Punto Flotante (FSR): contiene bits de estado para la unidad del punto flotante, la única forma para aclarar el registro es usando la instrucción de traducciones a máquina. Registro De Datos De Excepción (EDR): Lee en un enlace de la corriente (FSL o AXI) que causó excepciones. Registro Del Punto Bajo De La Pila (SLR): uso del límite de punto bajo de la pila para detectar desbordamiento de pila. Registro Del Punto Alto De La Pila (SHR): uso del límite de punto alto de la pila para detectar desbordamiento negativo de la pila. Registro Identificador De Proceso (PID): está acostumbrado excepcionalmente a identificar un proceso del software durante traducción de la dirección MMU. Registro De Protección De La Zona (ZPR): pasa sobre la disposición de MMU que la protección de la memoria definió en las entradas. Registro De Apariencia De Traducción A Un Lado Del Registro De Punto Bajo Del Amortiguador (TLBLO): se usa para ganar acceso a las entradas MMU Unified Translation LooAside Buffer (UTLB). Registro De. Apariencia De Traducción A Un Lado Del Registro De Alto Del. Amortiguador (TLBHI): se usa para ganar acceso a las entradas del Look Aside MMU Unified Translation Buffer (UTLB). 25.

(37) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE. Registro De Apariencia De Traducción A Un Lado De Registro índice Del Amortiguador (TLBX): es utilizado como un índice para el Look Aside Unificado Translation Buffer (UTLB) al ganar acceso al TLBLO y registros TLBHI. Registro De Apariencia De Traducción A Un Lado De Registro índice De Búsqueda Del Amortiguador (TLBSX): se usa para ir en busca de un número virtual de la página en el Look Aside Unificado Translation Buffer (UTLB). Registros De Versión Del Procesador (PVR): está controlado por la opción de configuración C_PVR en MicroBlaze.  cuando C_PVR es determinado para 0 que el procesador no implemente cualquier PVR y MSR PVR = 0.  cuando C _ PVR está lista para 1, los implementos MicroBlaze sólo el primer registro: PVR0  cuando C _ PVR está lista para2, los 12 registros PVR (PVR0 para PVR11) son implementados. Las FPGAs actuales disponen de memoria distribuida con un tiempo de acceso corto, cuando son utilizadas por la lógica cercana. Este tipo de memoria es utilizada por MicroBlaze para materializar sus 32 registros internos, el contador de programa y el registro de estado. Este último sólo contiene el bit de acarreo, habilitación de cachés, indicador de estado de parada (break), error en el FSL y bit de excepción producida por división por cero. Además de estos registros internos, MicroBlaze utiliza un buffer de 16 instrucciones mapeado en los registros de desplazamiento SRL de los slices. Este recurso es fundamental para un buen rendimiento del procesador. Por ejemplo, en caso de no disponer de multiplicador y/o divisor hardware, se aprovecha el tiempo que tarda en ejecutarse esta instrucción (32 ciclos) para tener preparadas las siguientes instrucciones. 2.2.4. Utilización de caché. La utilización de cachés es una práctica habitual en arquitecturas modernas; el diseño de MicroBlaze no es una excepción. Pero en este caso, la utilización y configuración de los tamaños de caché pueden ser fijados por el usuario. Para ello, existe el siguiente conjunto de opciones a la hora de configurar el procesador: 26.

(38) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE. Habilitación de caché de instrucciones y/o datos. Tamaño. Rango de direcciones. Tamaño de palabra (aunque solo es válida para la caché de datos). Opciones no configurables por el usuario son: Tamaño de los bloques de caché. La política de sustitución de bloques. Grado de asociatividad de la caché. Todas estas opciones se especifican antes de sintetizar el diseño. Las cachés son de tipo asociativo, por lo cual es necesario calcular el número de bits de la dirección (tag bits) que especifican bloques contenidos. en caché,. mediante la siguiente ecuación.(Aparicio,. Diciembre 2007) Numero tag bits = log2 (rango de memoria cacheable) - log2 (tamaño de la caché) Las cachés utilizan los bloques de RAM fijos (BRAM) que contiene la FPGA .Sin embargo, códigos compactos también pueden mapearse en BRAM. Por lo tanto, la utilización de cachés será necesaria en aquellos casos donde el código o los datos utilizado por MicroBlaze residan fuera de la FPGA. 2.2.5. Buses del sistema. Su arquitectura de memoria responde al diseño Harvard, donde el acceso a las instrucciones y a los datos se encuentran separados o almacenados en memorias diferentes. El tamaño del bus de datos es dinámicamente ajustable mientras que el bus de instrucciones tiene el puerto de escritura implementado para conservar consistencia con el de datos.(Aguayo, 2011) Gracias a la capacidad de reconfiguración de las FPGAs, es posible configurar el sistema con diferentes opciones sobre los buses, pudiéndose reducir de este modo el tamaño final del sistema. MicroBlaze utiliza el estándar CoreConnect creado por IBM, para conectar diferentes elementos en un circuito integrado. Un aspecto interesante es que CoreConnect permite reducir la carga capacitiva del bus, repartiéndola entre varios buses. Así, se 27.

(39) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE consiguen mayores rendimientos, dado que los retardos de pistas globales son muy importantes en FPGAs. El procesador cuenta con 3 interfaces para el acceso a memoria ya que el estándar define varios tipos de buses, cada uno con unas características de velocidad y conectividad diferentes. A continuación se. describen tres de los que se utilizan en. MicroBlaze así como otras alternativas para comunicarse con el microprocesador. (Figura 2.4). Figura 2.4: Distribución de buses del sistema. 1.. Bus LMB. El LMB (Local Memory Bus) es un bus síncrono de alta velocidad, utilizado para conectar periféricos y los bloques de memoria interna de la. FPGA. Solo admite un maestro en su. implementación para MicroBlaze y puede ser utilizado tanto para instrucciones como para datos. Este bus es compatible con el PLB (Processor Local Bus) incluido en el estándar CoreConnect, pero a diferencia de éste, el LMB no admite varios maestros ni tamaños de palabra diferentes a 32 bits. Usa un número mínimo de señales de control y un protocolo sencillo para asegurar que la BRAM sea accedida en un ciclo de reloj. 2. Buses OPB y PLB. Los buses OPB (On-chip Peripheral Bus) y PLB (Peripheral Local Bus) están basados en el estándar CoreConnect de IBM .Buses síncrono utilizado para conectar memoria externa y periféricos con tiempos de acceso variables.( Bus de direcciones de 32 bits, Bus de datos 28.

(40) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE de 32 bits, Los buses de datos de lectura y escritura pueden separarse).Soporta 16 masters y cualquier número de slaves .La conectividad de muchos periféricos es sencilla gracias a su identificación por multiplexación distribuida. 3. Protocolo XCL. XCL (Xilinx Cache Link) es un protocolo de comunicación para memorias externas. Esta interfaz está diseñada para conectarse directamente con un controlador de memoria que contiene buffer FSL. Este método se caracteriza por tener la menor latencia y mínimo número de instanciaciones. Presenta un acceso rápido a memoria externa pero. sólo es. disponible en versión 3.00a. Además de los buses y protocolos vistos, existen otras alternativas para comunicarse con el MicroBlaze. A continuación se describen algunos protocolos de comunicación que se utilizan actualmente para comunicarse con el microprocesador: FSL (Fast Simple Link): Protocolo que permite la comunicación con el procesador a través de sus propios registros internos. El periférico actuaría a modo de co-procesador y la conexión se realiza de manera sencilla a través de unos registros de desplazamiento de 32 bits de ancho. Canales de comunicación punto a punto mediante FIFOs se realiza con dos instrucciones específicas del repertorio, que realizan las funciones de Push y Pop de estas memorias de desplazamiento. MicroBlaze soporta hasta 16 dispositivos conectados con este protocolo (8 masters y 8 slaves).Tiene 2 ciclos de reloj para lectura y escritura. Debug Interface: Trabaja en conjunción con el módulo MDM (MicroBlazeDebug Module) a través del puerto JTAG de la FPGA. 2.2.6. Interrupciones y excepciones. MicroBlaze permite la utilización tanto de interrupciones como de excepciones. Para ello será necesario activar la línea de interrupciones que hará que el procesador ejecute la rutina de manejo de interrupciones. El procesador tiene un puerto de interrupciones que presenta cuatro ciclos de reloj de latencia y es disparado por nivel o flanco. El manejo de excepciones tiene un manejo similar; cuando se produce una excepción, el flujo normal de instrucciones se paraliza y se ejecuta una rutina de manejo de excepciones. En ambos casos. 29.

(41) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE se modifica el valor del registro PC a un valor prefijado y se almacena el antiguo valor en un GPR. (Aguayo, 2011) Puede ser que el sistema necesite manejar más de una interrupción, para ello será necesario utilizar un periférico específico, que permitirá multiplexar y reconocer las diferentes interrupciones. Este periférico se comunicara con el procesador mediante el bus PLB. (Aparicio, Diciembre 2007) Este procesador da soporte a la excepción de reanudación, de interrupción, del usuario, la suspensión, y las excepciones del hardware. 2.2.7. Distribución de memoria. MicroBlaze tiene acceso directo a los Bloques de RAM interna de la FPGA con una latencia de acceso de 2 ciclos de reloj. Además puede acceder a través del bus PLB a la memoria externa con una latencia de acceso de 3 ciclos de reloj si no hay ciclos de arbitreo para el bus.(Aguayo, 2011) MicroBlaze es implementado con una arquitectura de memoria Harvard por lo que presenta espacios de memoria independientes para instrucciones y datos, además de buses de 32bits (4 Gbytes). Pueden solaparse al asignarlos a la misma memoria física. MicroBlaze soporta palabra, halfword, y accesos de byte para la memoria de datos los cuales deben de estar alineados. El procesador. no pone aparte accesos de datos para I/O y la memoria (usa. memoria asociada I/O, o sea, las. entradas y salidas están “mapeada” en memoria).Las. direcciones 0x0000_0000 a 0x0000_0017 son reservadas para “excepciones”. (Ver figura 2.5). 30.

(42) CAPÍTULO 2. El MICROPROCESADOR MICROBLAZE. Figura 2.5: Distribución de memoria de MicroBlaze(Sarmiento, 2011). 2.3 Desarrollo de sistemas basados en microprocesadores. Para la confección de la metodología para el co-diseño con el microprocesador MicroBlaze de Xilinx se utiliza un diseño basado en plataforma (BPD) para el cual además es necesario utilizar herramientas tanto de hardware como de software tales como el kit de desarrollo Nexys2, Xilinx ISE, EDK y XPS; las cuales serán descritas en las siguientes secciones. 2.3.1. Diseño Basado en Plataforma (PBD). Una plataforma es una gestión integrada con un conjunto de características comunes, en el que un grupo o familia de productos se pueden construir. La plataforma es entonces un conjunto de equipos y software básico sobre el cual va a funcionar uno o varios sistemas a diseñar.. Plataforma de Hardware El Xilinx, Spartan-3E, FPGA, Embedded Kit, es un conjunto de varios elementos para el desarrollo. de dispositivos electrónicos o sistemas embebidos entre los que destaca la. tarjeta de desarrollo XC3S500E. Cabe mencionar que este kit incluye toda la. 31.

Figure

Figura  1.1: Estructura  conceptual  de un  dispositivo  FPGA
Figura  1.2: Diagrama  conceptual  de una  LUT  de  tres entradas.
Tabla  1.1: Características de  la XC3S500E
Figura  2.1: Diagrama  de la estructura  general de  un microprocesador  MicroBlaze.(XILINX,  2011)
+7

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

entorno algoritmo.

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

A pesar de que el modelo del NIST tiene en cuenta las funciones proporcionadas por Altshuller (padre de TRIZ), existen un par de inconvenientes que nos impiden efectuar una

En cuanto al trabajo específico, si la presión de entrada en turbina es la misma el trabajo específico (aproximadamente el área del diagrama T-s debido a las bajas