Deshazte de los términos las asignaciones de bloqueo y no bloqueo, no tienen lugar en VHDL. Por lo que me alegro, parecen causar suficiente confusión en Verilog.
La única gran ventaja que VHDL tiene no solo sobre Verilog, sino en casi todos los demás lenguajes de simulación / verificación digital que hay por ahí es su modelo de temporización determinista. En Verilog, las simulaciones pueden entregar legítimamente diferentes resultados en diferentes simuladores debido al orden en que se ejecutan los procesos (tareas, módulos). No puede ocurrir con VHDL, o si lo hace, hay un error en el simulador.
Pero vale la pena entender cómo funciona este modelo de tiempo; diría que es absolutamente clave para entender VHDL. Sujete esto y VHDL será mucho más fácil.
Se basa en 2 puntos clave:
- Solo hay asignaciones variables y asignaciones de señales, estas últimas también se conocen como asignaciones pospuestas.
- El tiempo pasa en segmentos infinitamente cortos llamados
"delta cycles"
hasta que no pasa nada, cuando puede avanzar un paso de tiempo finito (fs, ps, ns) al siguiente evento programado (retraso o borde del reloj).
Las variables son locales a un proceso, y las asignaciones de variables tienen lugar inmediatamente: la siguiente declaración ve el nuevo valor.
Las asignaciones de señales no se producen de inmediato, pero están programadas para que se realicen después del final del delta cycle
actual, cuando todos los procesos en ejecución hayan ocurrido. Más detalles aquí .
Si aún no está claro, refina la pregunta.