Sentencia Concurrentes
Las sentencias concurrentes son sentencias condicionales que tienen al menos un valor por defecto para cuando no se cumplen ninguna de las condiciones. Aunque podría utilizarse una sentencia común como un if con obligación de else, los desarrolladores de VHDL han preferido utilizar dos sentencias particulares:
señal_a_modificar <= valor_1 when condición_1 else
valor_2 when condición_2 else
... valor_n when condición_n else
valor_por defecto;
-- Ejemplos when-else
---------------------------------------------
C <= “00” when A = B else
“01” when A < B else
“10”;
---------------------------------------------
C <= “00” when A = B else
“01” when D = “00” else
“10”;
---------------------------------------------
En esta sentencia siempre modificamos el valor de una misma señal, pero las condiciones pueden ser independientes (actuar sobre distintas señales cada una), dónde la colocación de las condiciones indica la preferencia de unas sobre otras, es decir, la Introducción a la Programación en VHDL 20 F. Informática (UCM) condición 1 tiene preferencia sobre el resto, la condición 2 sobre todas menos la 1 y así sucesivamente.
WITH – SELECT – WHEN
señal_a_modificar <= valor_1 when valor_1_señal_condición,
valor_2 when valor_2_señal_condición,
...
valor_n when valor_n_señal_condición,
valor_por_defecto when others;
---------------------------------------------
-- Ejemplo with-select
---------------------------------------------
with entrada select
salida <= “00” when “0001”,
“01” when “0010”,
“10” when “0100”,
“11” when others;
-------------------------------
Esta sentencia es menos general que la anterior. En este caso se modificará el valor de una señal dependiendo de los valores de una señal condición, aparecerán como máximo tantas líneas como valores posibles pueda tener la señal condición.
Desde un punto de vista de HW estas dos sentencias dan como resultado HW combincional puro, es decir, puertas lógicas, multiplexores, decodificadores …
Comentarios
Publicar un comentario