Estoy tratando de hacer una CPU de ciclo único muy simple en VHDL. Mi código de máquina está almacenado en una ROM creada por Altera MegaWizard. La primera palabra que se almacena en esta ROM es 0x1111. Después de escribir un banco de pruebas para la CPU, descubrí que hay un retraso inicial de 1 ciclo al leer desde esta ROM. ¿Es esto normal y hay alguna forma de solucionarlo? ¿Importaría este retraso en mi CPU?
Dependiendo de cómo haya configurado los ajustes de MegaWizard, esto es de esperar. Si la ROM está contenida en un bloque de RAM, siempre hay al menos 1 ciclo de latencia de lectura. Básicamente, afirma la dirección en t=0
, luego, en el siguiente ciclo de reloj ( t=1
), la dirección se carga en los registros de direcciones en BRAM. Luego, los datos aparecen en la salida de datos de la memoria listos para registrarse a las t=2
.
Si usa un MLAB, las entradas de dirección se pueden especificar para que no se registren, lo que significa que los datos están listos para registrarse, t=1
pero esto puede reducir el FMAX del sistema, porque ha eliminado el ciclo de reloj de canalización.
La latencia puede o no ser un problema dependiendo de cómo diseñe su CPU. Como se trata de una latencia fija (siempre será de 1 ciclo), puede tener esto en cuenta en el diseño de su CPU agregando canalización a la instrucción y obtención de datos, por ejemplo, obtenga la siguiente instrucción mientras procesa la actual.
gilianzz
tom carpintero