Trabajo de Fin de Grado
MASIC
MASIC es un sistema informático completo diseñado y construido desde cero durante 4 años de desarrollo. El proyecto abarca el diseño de una arquitectura de computador original, la implementación de una CPU funcional, el desarrollo de herramientas software y la construcción de periféricos hardware dedicados.
El objetivo del proyecto fue comprender en profundidad cómo se construye un computador moderno, abordando todas las capas del sistema: arquitectura, electrónica digital, programación de sistemas, herramientas de desarrollo y validación hardware/software.
Volver a ProyectosResumen del proyecto
MASIC integra una CPU original de 8 bits y direcciones de 16 bits, una unidad de control microprogramada, un adaptador de vídeo propio, un ensamblador, un emulador y un entorno software diseñado específicamente para la plataforma.
El proyecto requirió combinar conocimientos de arquitectura de computadores, electrónica digital, programación de bajo nivel, diseño de compiladores, desarrollo de herramientas y verificación de sistemas complejos.
Más que un único desarrollo, MASIC constituye un ecosistema tecnológico completo diseñado, implementado y validado de extremo a extremo.
CPU y arquitectura
Se diseñó e implementó una CPU original capaz de ejecutar software real sobre hardware físico. La arquitectura incorpora una ISA propia, una unidad de control microprogramada, múltiples modos de direccionamiento, un sistema de interrupciones vectorizadas, soporte para subrutinas y una pila hardware.
La elección de una unidad de control microprogramada permitió evolucionar la arquitectura de manera iterativa, facilitando la depuración, el análisis del comportamiento interno del procesador y la experimentación con nuevas funcionalidades.
Este desarrollo exigió aplicar conocimientos de diseño de procesadores, lógica secuencial y combinacional, modelado de arquitecturas, depuración de sistemas digitales y validación sobre hardware real.
Adaptador de vídeo
Se desarrolló un periférico de vídeo dedicado capaz de generar señal VGA de manera autónoma, descargando completamente a la CPU de las tareas de generación de vídeo.
El diseño requirió implementar circuitos de temporización precisos, generación de señales de sincronismo y una interfaz hardware personalizada integrada con la arquitectura de memoria y E/S del sistema, aplicando principios de diseño de sistemas en tiempo real.
El resultado fue un subsistema robusto y funcional que demuestra capacidad para diseñar y validar sistemas digitales completos que interactúan con hardware externo en tiempo real.
Ensamblador
MASIC incorpora un ensamblador propio desarrollado específicamente para la arquitectura. La herramienta incluye etiquetas simbólicas, evaluación de expresiones y un sistema de macros parametrizadas y anidadas para facilitar el desarrollo de software de bajo nivel.
El proyecto implicó diseñar e implementar una herramienta software completa, desde la especificación del lenguaje hasta la generación de código máquina, aplicando principios de diseño de compiladores, procesamiento de texto y desarrollo de herramientas de línea de comandos.
El ensamblador demuestra capacidad para transformar una especificación teórica de una arquitectura en un entorno de desarrollo utilizable y mantenible.
Emulador
Se desarrolló un emulador capaz de reproducir el comportamiento del sistema completo en software, permitiendo ejecutar programas y validar la arquitectura sin depender del hardware físico.
El emulador modela la CPU, el mapa de memoria y los periféricos del sistema, proporcionando un entorno de experimentación y depuración que permitió el desarrollo paralelo de hardware y software.
La construcción de esta herramienta requirió modelado de sistemas, programación de bajo nivel, diseño de mecanismos de validación y una comprensión profunda de la interacción entre hardware y software.
Competencias demostradas
MASIC es un proyecto de ingeniería desarrollado de extremo a extremo que demuestra capacidad para abordar problemas complejos, aprender tecnologías de forma autónoma y diseñar soluciones completas que integran hardware y software.
Entre las principales áreas trabajadas destacan la arquitectura de computadores, electrónica digital, diseño de procesadores, programación de sistemas, desarrollo de herramientas, modelado y verificación de sistemas, resolución de problemas complejos, sistemas en tiempo real y gestión de proyectos técnicos de larga duración.