Está en la página 1de 3

1.

4 Funciones y subprogramas

Id_process: Process (lista_sensible) is

Declaraciones

Begin

Instrucciones

End process id_process;

La ejecución de un proceso se activa cuando se produce un evento, o cambio, en alguna de


las señales de la lista sensible, en caso de no existir una lista sensible, la ejecución de controla
mediante el uso de sentencias “wait” dentro del proceso, si no existe ninguna de estas, se
ejecutaría el proceso una y otra vez entrando la simulación en un ciclo infinito del que no se sale.

También existe la posibilidad de posponer el proceso. Que es la única manera de controlar


el orden en que deben ejecutarse los procesos. Un proceso pospuesto será ejecutado después de
los procesos no pospuestos.

Ejemplo:

Id_process: Process (lista_sensible) is

Declaraciones

Begin

Instrucciones

End postponed process id_process;

La ejecución de un proceso se realiza de manera continua. La forma genérica de detener la


ejecución en un proceso se realiza mediante la palabra wait que detiene la ejecución hasta que se
cumple una condición o evento especificado en la propia sentencia.

*Wait lista sensible

*Wait until condición

*Wait for tiempo límite


1.4.1 Declaración de procedimientos y funciones

Procedimiento:

Procedure nombre (parámetros) is

Declaraciones

Begin

Sentencias

End procedure nombre;

Función:

function nombre (parámetros) return tipo is

declaraciones

begin

sentencias - - debe incluir al menos un “return”

end function;

1.4.2 Subprogramas

Un subprograma es una función o procedimiento que contiene una porción de código. Las
funciones y procedimientos son estructuras muy parecidas entre sí. Las diferencias entre estas
son:

A) La función siempre devuelve un valor, mientras que un procedimiento solo puede


devolver valores a través de los parámetros que se le pasen.
B) Los argumentos de una función son siempre de entrada. En el procedimiento pueden ser
de entrada, de salida o de entrada y salida, por lo que puede sufrir modificaciones.
C) Una función no tiene efectos colaterales pero un procedimiento si, es decir, puede
provocar cambios en objetos externos a él, debido a que se pueden cambiar las señales
aunque no se hubieran especificado en el argumento. Es decir, en los procedimientos se
permite realizar asignaciones sobre señales declaradas en arquitectura y, por tanto,
externas al procedimiento.
D) Las funciones, como devuelven un valor, se usan en expresiones, mientras que los
procedimientos se llaman como una sentencia secuencial o concurrente.
E) Una función jamás puede tener la instrucción “wait”, mientras que un procedimiento si.

1.4.3 Paquetes

Un paquete es una colección de declaraciones, normalmente con la intención de


implementar algún servicio en particular o aislar un grupo de elementos relacionados. De esa
manera se pueden hacer visibles las interfaces de algunos elementos como funciones o
procedimientos quedando ocultas las descripciones de estos elementos.

Los paquetes están separados en 2 partes, una es la parte de las declaraciones y la otra es
el cuerpo del paquete. Su sintaxis es:

Package nombre is

Declaraciones

End package nombre;

Package body nombre is

Declaraciones

Subprogramas

End package body nombre;