Hoy la entregamos ya programada en la tarjeta, y el profesor nos comentó si no teníamos problemas en que usara el proyecto para posiblemente elaborar algún artículo (más que nada desde el punto de vista didáctico)

. Todavía nos falta hacer el reporte, pero por lo pronto pongo una captura de una de las pruebas.
De lo que se puede observar, dato_entrada (el dato de entrada a la memoria cuando esté en modo de escritura) no se usa (sólo se está observando cómo corre el "programa", la memoria ya está programada).
El montón de ctrl_X son las señales de control (si, ya sé, se pueden meter en un vector, de hecho, la señal auxiliar en el código es un std_logic_vector

).
Lo demás, son las salidas de cada uno de los registros, visualizados para ir observando el comportamiento, en lo que presentamos el único que interesa es el acumulador (salida_AC), que es donde se observa el resultado de las distintas operaciones.
La primera instrucción del programa es borrar el acumulador (bueno, allí se ve que también se puso a 0 por el reset

); luego, cargar un 4 al acumulador; posteriormente sumar al acumulador el dato ubicado en la posición 13 de la memoria (que es un 5), por lo que se observa un 9 en el acumulador ( 4 + 5

); a continuación complementa el contenido del acumulador( 9=1001 -> 0110=6); y así va... Esas instrucciones las va obteniendo de la memoria (16x4).
A ver si lo siguiente que pongo es el diagrama a bloques, y alguna breve explicación de qué es esto

.
Por cierto, ¿alguien conoce algún programa para hacer diagramas a bloques? (Cajitas con flechas, comentarios al lado, texto, etc.)
Saludos,
José Jorge (Geo).