Concurrencia
Los lenguajes de programación clásicos están basados...
En la secuencialidad temporal impuesta por el algoritmo
Por un modelo de ejecución secuencial de las instrucciones
En contra, los lenguajes HDL proceden basándose en
Un modelo de ejecución en paralelo -> Diversos procesos se ejecutan a un mismo tiempo
Una sincronización de todo el proceso mediante sincronización de señales
Actúan usando una cola de eventos!
...a lo que se le denomina concurrencia.
Por consiguiente, la concurrencia se basa en el procesado de un conjunto de instrucciones de forma paralela utilizando transacciones por evento
Concurrencia versus secuencialidad
En VHDL pueden coexistir...
... instrucciones secuenciales
... instrucciones concurrentes
Las sentencias concurrentes
Describen paralelismo (a modo similar al de un circuito combinacional)
El resultado es independiente del orden de escritura y ejecución de las sentencias
Todas las sentencias concurrentes equivalen a procesos concurrentes
Las sentencias secuenciales
Describen algoritmos
El orden en el que se escriben las sentecias es relevante para su ejecución y de él depende el resultado final
Ejemplo: sumador
La siguiente figura muestra un resultado de simulación del código anterior. En este caso la simulación se ha realizado sobre Quartus II de Altera para introducir retardos reales en la simulación.
Debido a la concurrencia:
Todas las salidas del sumador se procesan al mismo tiempo
El diagrama temporal contiene retardos por ser simulación directa del modelado realizado sobre circuito programable de Altera