Concepto de concurrencia en VHDL

0

Con respecto a la concurrencia de las declaraciones VHDL, quiero saber cómo se explica el siguiente código con concurrencia.

entity foo is
   port( a: out bit;
         b: buffer bit;
         c, d, e: in bit);
end;
architecture bar of foo is
begin
   a <= b xor c;
   b <= d and e after 5ns;
end;

Las preguntas son:

  • ¿ a toma el valor anterior de b ?

  • ¿Se actualizará a después de 5ns debido al cambio en b ?

  • ¿No son estas declaraciones secuenciales?

pregunta mahmood

2 respuestas

3

La respuesta corta:
a se actualizará en el ciclo delta después de que b o c cambien.
b se actualizará 5 ns después de d o e cambios.
(Lo que desencadena una actualización de a)

La respuesta más larga:

Estas declaraciones no son secuenciales, porque aparecen en la región concurrente.

Formalmente, cada uno es equivalente a un proceso sensible a todas sus entradas. Por lo tanto, cuando se produce un evento en cualquiera de sus entradas, el proceso se activa, realiza la operación y se suspende.

La operación da como resultado una "asignación pospuesta" en su señal de salida: es decir, cuando este proceso se ha suspendido y TODOS los demás procesos activos se han suspendido, ENTONCES la asignación se realiza (o está programada para que ocurra más adelante, como en 'después de 5 ns'.

Cuando ocurre la asignación (ya sea en el siguiente ciclo delta, o 5 ns más tarde), se genera un "evento" en esa señal, que programa todos los procesos sensibles a ella para que se activen ... Por lo tanto, las señales no son como variables, son el mecanismo de comunicación y programación entre procesos en VHDL.

Más detalles aquí ... enlace

    
respondido por el Brian Drummond
1

Ok, la gente lo va a bajar de votos ... Aún así.

Las cosas son concurrentes no por ningún concepto, sino porque se trata de HARDWARE. Todos los componentes existen todo el tiempo. Dentro del proceso, por cierto, también.

Si necesitas "después de 5nsec" en un dispositivo real, debes usar el reloj o cualquier forma REAL, FÍSICA para medir ese 5nsec.

    
respondido por el Gregory Kornblum

Lea otras preguntas en las etiquetas