Este proyecto consiste en el diseño e implementación en VHDL de un procesador completo de arquitectura propia. El sistema sigue un formato de instrucción de 32 bits que soporta operaciones lógicas, aritméticas, transferencia de datos y saltos condicionales.
El procesador sigue una arquitectura que combina elementos RISC con instrucciones especializadas. La estructura modular incluye una ALU, UC, UART, PC y por supuesto un PortIO.
La ALU implementa operaciones lógicas (AND, OR y XOR), operaciones aritméticas, rotación de bits y aritmética con saturación, limitando automáticamente los resultados a los valores máximo y mínimo representables para evitar overflows.
La Unidad de Control fue uno de los bloques en los que más trabajé. En la primera versión, la máquina de estados agregaba un ciclo de latencia entre instrucciones. Esto no representaba un problema en operaciones aisladas, pero al ejecutar instrucciones consecutivas el procesador se quedaba atras. Después de varias iteraciones logré simplificar la máquina de estados y eliminar esa latencia, consiguiendo que el procesador ejecutara las instrucciones de forma continua.
La verificación se realizó mediante un testbench que utiliza todas las funcionalidades del procesador en diferentes combinaciones.
Una vez finalizadas las simulaciones, el diseño sintetizado obtuvo un Worst Negative Slack (WNS) de 0,932 ns para un período de reloj de 12 ns, permitiendo una frecuencia de operación superior a 80 MHz.
Este proyecto me permitió comprobar la importancia de mantener una arquitectura modular. Dividir el diseño en bloques independientes hizo mucho más sencillo probar cada componente por separado y corregir errores sin afectar al resto del procesador.
También aprendí que es mejor replantear una implementación antes de seguir agregando funcionalidades. Cambios como simplificar la máquina de estados de la Unidad de Control o reorganizar la lógica del rotador terminaron reduciendo la complejidad del diseño y evitaron problemas durante las etapas de simulación y síntesis.
En conjunto, este proyecto me permitió aplicar conceptos de diseño digital en un desarrollo completo, desde la definición de la arquitectura hasta la simulación, la síntesis y la validación final del procesador.