SENTENCIAS SECUENCIALES Y CONCURRENTES DE VHDL

SENTENCIA IF sentencia_if::= [etiqueta:] if condicion(boolean) then {sentencias_secuenciales} {elsif condicion then {sentencias_secuenciales}} [else {sentencias_secuenciales}] end if [etiqueta];

SENTENCIA IF

El orden en el que se sitúan las ‘condiciones’ dentro del ifelsif es importante, pues si hay dos ciertas, se ejecutará únicamente la primera.

SENTENCIA CASE sentencia_case::= [etiqueta:] case expresion is when valor=>{sentencias_secuenciales} {...} end case [etiqueta]; valor ::=(expresion_simple|rango_discreto|others){|...}

•Los valores de elección no pueden solapar sus rangos . •Los valores de elección deben cubrir todos los valores posibles de ‘expresion’

SENTENCIA CASE

SENTENCIA CASE

SENTENCIA CASE

BUCLES sentencia_loop::= [etiqueta:] [while condicion|for id in rango_discreto] loop {sentencias_secuenciales} end loop [etiqueta];

BUCLES

BUCLES

BUCLES

BUCLES La sentencia next se utiliza en un bucle para detener una ejecución y pasar a la siguiente iteración: sentencia_next::= [etiqueta:]next [etiqueta_loop][when condicion];

BUCLES La sentencia exit se utiliza para salir de un bucle de forma incondicional. sentencia_exit::= [etiqueta:]exit [etiqueta_loop][when condicion];

Sentencia NULL sentencia_null::= [etiqueta:] null :

•Una sentencia null no efectúa ninguna acción. •En algunas ocasiones la sintaxis del lenguaje exige la poner una sentencia

Sentencia ASSERT •Proporciona mensajes si no se cumple una condición en tiempo de ejecución. •Se utiliza en la depuración de modelos. •Puede llegar a detener la ejecución de una simulación sentecia_assert::= [etiqueta:] assert condicion [report expresion] [severity expresion]; type severity_level is (note,warning,error,failure);

Asignación secuencial de señales declaracion_señal::= signal identificador{,...}:subtipo[tipo_señal][:=expresion ]; tipo_señal::= register|bus asignacion_señal ::= [label]identificador