¿La megafunción de la ROM de Altera tiene un retraso de inicio?

0

Estoy tratando de hacer una CPU de un solo ciclo muy simple en VHDL. El código de mi máquina se almacena 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 de esta ROM. ¿Es esto normal y hay una manera de solucionar esto? ¿Este retraso importaría en mi CPU?

    
pregunta gilianzz

1 respuesta

1

Dependiendo de cómo configuró la configuración de MegaWizard, se espera esto. Si la ROM está contenida en una RAM de bloque, siempre hay al menos 1 latencia de lectura del ciclo. Básicamente, usted 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 la BRAM. Luego, los datos aparecen en la salida de datos de la memoria lista para ser registrada en 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 ser sincronizados en t=1 , pero esto puede reducir el FMAX del sistema, ya que eliminó el reloj. ciclo de la canalización.

La latencia puede o no ser un problema dependiendo de cómo diseñes tu CPU. Dado que es una latencia fija, siempre será de 1 ciclo, luego puede explicar esto en el diseño de su CPU agregando la canalización a la instrucción y la obtención de datos, por ejemplo. Busca las siguientes instrucciones mientras procesas la actual.

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas