Actividad Acto evaluativo
Presentación de la asignatura. Introducción a la gestión de proyectos. Introducción al diseño basado en sistemas empotrados.
Presentación de la asignatura. Introducción a la gestión de proyectos. Introducción a los dispositivos programables (FPGA) ya los lenguajes de descripción de hardware.
Conceptos teóricos sobre la gestión de proyectos. Definición del proyecto. Etapas y tareas de desarrollo.
Conceptos teóricos sobre la gestión de proyectos y sobre el funcionamiento de los dispositivos programables (FPGA)
Especificaciones y objetivos del proyecto. Obtener unas especificaciones del sistema a partir de las alternativas dadas por el profesor. Definición de los bloques de tareas de desarrollo y distribución en los distintos grupos de laboratorio. Diagrama de Gannt del proyecto. Diagrama de bloques del sistema cumpliendo con las especificaciones. Generar un primer esquema de Hardware de la placa base del sistema.
Aprender conceptos de VHDL. Pautas del diseño de blogs tipo sumadores, contadores, registros.
Discusión de las distintas alternativas. Consensuar una propuesta de objetivos y prestaciones. Estudiar los dispositivos, interfaces y periféricos externos que necesita el sistema para cumplir con las especificaciones. Identificación de los distintos bloques de tareas a realizar. Distribuir los distintos bloques entre los grupos de laboratorio. Aprenda a utilizar la captura de esquemas de la herramienta CAD de diseño de circuitos impresos.
Recordar conceptos básicos VHDL. Hacer un ejemplo paso a paso y completo con diagrama de bloques (Schematic) y después con VHDL implementar un circuito utilizando los switch y leds de la placa. Aprender a utilizar el simulador Qsim. Explicar conceptos nuevos de VHDL y pautas del diseño de blogs tipo sumadores, contadores, registros. Explicar funcionamiento del reloj de la placa FPGA y cómo hacer múltiples con VHDL. Trabajar en la conexión y jerarquía de componentes en VHDL.
Generar unas especificaciones técnicas del sistema. Generar diagrama de Gannt del proyecto. Generar el esquema de blogs del sistema a partir de las especificaciones del proyecto. Generar un primer esquema hard de la placa base del sistema a partir del diagrama de blogs, utilizando una herramienta de captura de esquemas compatible con herramientas CAD de diseño de circuitos impresos.
Diseñar bloques sencillos (multiplexor Mx4-1). Aprenda a utilizar los interruptores, pulsadores y visores 7-segmentos de la placa. Realizar un traductor de algunos caracteres alfabéticos codificados en 4 bits, almacenados en un registro, en el alfabeto Morse y mostrar el resultado por los leds de la placa.
Obtención de la placa base prototipo del sistema. Implementación del software del sistema. Obtener el firmware de control de los diferentes dispositivos externos (periféricos, interfaces, sensores y actuadores). Puesta en funcionamiento de la placa base y dispositivos externos.
Primero implementar un procesador uniciclo sencillo tipo RIESGO. Este procesador estará formado sólo por dos bloques (Banco de Registros y ALU) y una pequeña lógica de control. Este procesador será la base para más adelante desarrollar uno más completo. Seguidamente implementar un procesador multiciclo. Recordar el concepto de fases de ejecución. Además, el procesador gestionará una memoria RAM externa para los datos y una memoria Flash con el programa a ejecutar.
Construcción de un placa base prototipo que incluye una CPU con la conexión de los distintos dispositivos externos (periféricos, interfaces, sensores y actuadores) atendiendo a las metodologías descritas por el profesor. Disposición de los elementos necesarios para garantizar la alimentación de la placa base y todos los dispositivos externos. Puesta en funcionamiento del prototipo base y de los distintos dispositivos externos. Depuración y perfeccionamiento del código de funcionamiento de la placa base, así como del código de los distintos dispositivos externos por separado.
Primero aprender la arquitectura del procesador básico, su repertorio de instrucciones y su funcionamiento. Aprender a realizar un banco de registros y una ALU de ejemplo en VHDL. Aprenda diseñar el sistema de arranque para el procesador. Aprender a diseñar una memoria (ROM/RAM) en una FPGA. Diseñar el Banco de Registros del procesador y ALU. Comprobar su funcionamiento con un simulador. Diseñar la lógica de control del procesador. Hacer una memoria ROM en la FPGA y cargar instrucciones para su ejecución. Ejecutar el primer programa en el computador. Seguidamente, aprender el procesador multiciclo para poder realizar accesos a memoria. Aprender el sistema de memoria del procesador (concepto básico). Recordar el concepto de fases de ejecución (fetch, decode, ejecución, acceso a memoria, escritura datos). Aprenda a implementar un grafo de estados con VHDL. Aprender a generar varias señales de reloj ya realizar un circuito de inicialización. Realizar una ALU completa para el procesador. Aprender a crear e interpretar correctamente los diagramas de tiempo de las señales de un circuito. Aprender a diseñar un controlador de memoria para el uso de memorias externas en la FPGA. Crear diferentes señales de reloj para el funcionamiento de los distintos componentes del computador. Implementar el grafo de estados de control del procesador mediante VHDL. Modificar el ALU del procesador para que sea cumplida. Modificar la UC para soportar las nuevas instrucciones. Añadir nuevas instrucciones de salto e implementar el nuevo fetch. Añadir dispositivos de entrada/salida.
Generación del código del sistema base y de los dispositivos externos en lenguaje C y con el entorno de desarrollo propuesto, atendiendo al diseño del software y recomendaciones propuestas por el profesor.
Desarrollar las tareas comenzadas en el laboratorio.
Integración hardware de todos los dispositivos externos en la placa base. Integración del firmware de control de los dispositivos externos en la placa base.
Conectar dispositivos de entrada/salida más complejos. Implementar sistemas y estructuras avanzadas en un procesador. Añadir soporte a interrupciones y excepciones. Añadir un soporte básico por parte del procesador para los sistemas operativos actuales (gestión de memoria virtual y ejecución de instrucciones de forma privilegiada). Inicialización del sistema operativo. Análisis de recursos.
Conexión de todos los dispositivos externos en la placa base. Integración del código de control de dispositivos externos con el código de la placa base. Pruebas y depuración de los códigos.
Conectar controladores de pantalla VGA y teclado PS/2 en el procesador diseñado para crear un SoC (System on Chip). Agregar el sistema de gestión de interrupciones y excepciones al procesador y generar juegos de pruebas que funcionen por interrupciones. Definir el modo sistema del procesador y añadir el sistema de llamadas a sistema. Definir y añadir una TLB al procesador y las instrucciones para su gestión. Implementación de un sistema de arranque para un sistema operativo. Diseñar un mini sistema operativo que funcione sobre la placa con el procesador implementado. Este sistema operativo gestionará los mecanismos de entrada/salida al sistema y gestionará la memoria basada en paginación y el control de procesos. Analizar los recursos usados. Realizar análisis del rendimiento, coste. Posibles optimizaciones.
Adaptación de los códigos, sistema base y control de dispositivos externos para su integración en un único sistema.
Desarrollar las tareas comenzadas en el laboratorio.
Verificar que las prestaciones y funcionamiento del sistema integrado cumplen las especificaciones y objetivos marcados inicialmente. Corrección y ajuste de las desviaciones.
Proponer e implementar mejoras en las capacidades de los procesadores, en la arquitectura del procesador, en los dispositivos de entrada/salida o en el sistema operativo del proyecto realizado.
Corrección y ajuste de las desviaciones detectadas en los objetivos, prestaciones o funcionamiento del sistema integrado.
A partir de un diseño del procesador que se ha implementado añadirle nuevas funcionalidades o mejorar las ya existentes a nivel de arquitectura o sistema operativo.
Pruebas en el entorno de trabajo del sistema. Detección de las desviaciones en los objetivos, prestaciones o funcionamiento del sistema respecto a las marcadas en las especificaciones iniciales. Valoración de los resultados obtenidos. Obtención de una memoria del proyecto.
Desarrollar las tareas comenzadas en el laboratorio.
© Facultat d'Informàtica de Barcelona - Universitat Politècnica de Catalunya - Avíso legal sobre esta web - Configuración de privacidad