VHDL delta ciclo "bug"

1

Tengo un diseño (módulo Memoryintefacing) con dos procesos según lo propuesto por gaisler, un proceso combinatorio y uno cronometrado para operar los registros. Toda la entidad genera una señal de listo, que bloquea las entidades que se comunican con ella. Para no bloquearlos de forma prematura, el acceso solo genera una señal de bloqueo si la entidad ya está ocupada procesando una lectura o escritura. Para permitir esto, el primer estado retiene la dirección y los datos proporcionados, por lo que una solicitud de escritura posterior no sobrescribirá la dirección en la mitad del proceso.

El problema que encuentro en la simulación es el siguiente, en dos ciclos consecutivos solicito escrituras con diferentes direcciones. La primera escritura comienza bien, estamos en el estado INITIAL , la dirección se maneja en el bus de direcciones y los datos y la dirección se enclavan. La simulación de estos relojes de flanco ascendente termina y pasamos a la siguiente. Ahora el proceso para el statemachine se ejecuta primero . Ve la nueva dirección y bloquea la nueva dirección y la impulsa. Inmediatamente después, el proceso de registro activa y actualiza el estado de las estadísticas. En el siguiente ciclo delta, la máquina de estadísticas salta al estado correcto sin actualizar los datos enclavados o la dirección controlada. Sin embargo, mi dirección y el valor bloqueado ya están arruinados.

¿Existe alguna técnica para lograr resultados de simulación correctos sin una simulación considerando el tiempo de registro? ¿Mi diseño todavía contiene una falla importante (debo actualizar mi pestillo solo en el límite del reloj en el proceso de registro)?

    
pregunta ted

0 respuestas

Lea otras preguntas en las etiquetas