Está en la página 1de 2

Sentencias Process y sus normas

Definición
En VHDL se presenta una estructura particular denominada process que define los límites de un dominio
que se ejecutará o en la que se simulará sólo si alguna de las señales de su lista de sensibilidad se ha
modificado en el anterior paso de simulación.

Esta se reserva principalmente para contener sentencias que no tengan obligatoriamente que tener
definido su valor para todas las entradas (el ejemplo más común es una estructura if-else incompleta).
Esto obliga a que la estructura process almacene los valores de sus señales y pueda dar lugar (no
siempre) a subcircuitos secuenciales. Además, en simulación sólo se ejecutan las sentencias internas a
esta estructura cuando alguna de las señales de su lista de sensibilidad cambia de valor.

En simples palabras el process es una manera formal de hacer una lista de operaciones secuenciales,
posee un formato muy estructurado, representando el comportamiento de una pequeña sección de un
diseño. Puesto que un sistema no realiza sus funciones sólo una vez y termina; más bien debe repetir
sus actividades en un lazo infinito, es la función del process asegurar que terminada la ejecución de la
última proposición, se inicie inmediatamente y nueva vez con la primera.

La sentencia process es una de las más utilizadas en programación con VHDL ya que las sentencias
condicionales están dentro de él, de igual forma constituye el principal problema para aquellos que se
acercan por primera vez a la simulación y síntesis con VHDL.

Un process tiene la siguiente estructura:

Al momento de escribir nuestro process debemos tener en cuenta que opcionalmente se le puede
asignar un nombre, y éste debe ir antes de process seguido de dos puntos.

El cuerpo del proceso estará formado por una lista de proposiciones que debe iniciar con la palabra
reservada begin, sin embargo declaración de variables o constantes se debe hacer antes de la palabra
begin.

Existe la sentencia wait sirve para suspender un proceso una vez que una tarea sea completada y
reanudarlo cuando la condición de espera sea alcanzada, sin embargo existe la lista de sensibilidad, que
es frecuentemente utilizado para reanudar procesos, se puede colocar entre paréntesis justo después
de la palabra process. Esto que escribimos dentro de paréntesis nos indica que cuando la ejecución de
un proceso inicia, la ejecución se realiza una vez, posteriormente el proceso es suspendido hasta que
alguna señal en su lista cambie de valor. Teniendo en claro que aunque solo cambie una señal de la lista,
todas las proposiciones del proceso se ejecutan en forma secuencial.

De igual forma dentro del cuerpo del process se encuentran las sentencias condicionales tales como IF –
THEN – ELSE – CASE -- WHEN OTHERS, entre otros.

La asignación de variables incluye declaraciones para variables, constantes, alias, archivos y una serie de
otras construcciones VHDL.

El fin del proceso se indica con end process y luego puede repetirse el nombre del proceso si se colocó.

A continuación mencionaremos una serie de normas relacionadas directamente con las propiedades de
la sentencia process, que serán de obligado cumplimiento para que el código generado simule y
sintetice de manera correcta.

Norma III
La tercera propiedad estable que dentro de un process todas las instrucciones se ejecutan en paralelo,
igual que ocurre con las instrucciones que se encuentran fuera de los process. Sin embargo, si dentro del
process se asigna valor a una señal en dos sitios diferentes el resultado será aquel de la última
asignación, exactamente igual que en los lenguajes de programación comunes. Por eso siempre
debemos comprobar que no estamos asignando el valor a una señal en dos sitios diferentes del process
(si puede hacerse en dos ramas diferentes del mismo if).

Ejemplo de tabla: En el ejemplo en el instante 0 ns y 10 ns se asigna dos veces un valor a C. A la salida


del process nos quedamos con el último valor asignado, el de la rama if y el de la rama elsif
respectivamente. En el instante 5 ns, sólo hay una asignación “00”, el valor a mostrar es el de dicha
asignación.

Norma IV
La propiedad 4 establece que los process se ejecutan en paralelo entre sí.

Existirá con bastante probabilidad un código con dos o más process, en esos casos éstos se ejecutan en
paralelo como ocurre con el resto de las sentencias. Si dos process se están ejecutando en paralelo no se
puede modificar la misma señal en ambos process, porque en ese caso no se podría saber cuál es el
valor real de la señal (¿el obtenido en el process 1 ó el obtenido en el process 2?).

Siempre hay que comprobar que no se modifica la misma señal en dos process diferentes, en caso de
que esto ocurra habrá que intentar fusionar los dos process.

También podría gustarte