Está en la página 1de 8

ARCHITECTURE ( ARQUITECTURA )

 Se define como la estructura que describe el


funcionamiento de una entidad
 Sintaxis
architecture arch_name of entity_name is
declarations
begin
concurrent_stmt;
concurrent_stmt;
end arch_name;

 Los estilos de programación utilizados en el diseño de


arquitectura se clasifican como:
 Estilo ( o descripción ) funcional
Expone la forma en que trabaja el sistema; el proceso
hace uso de las declaraciones if-then-else
 Descripción por flujo de datos
Indica la forma en que los datos se pueden transferir de
una señal a otra sin necesidad de declaraciones
secuenciales; la descripción puede hacerse por:
♦ Descripción por flujo de datos mediante when-else
♦ Descripción por flujo de datos mediante ecuaciones
booleanas
 Descripción estructural
Basa su comportamiento en modelos lógicos
establecidos (compuertas, sumadores, contadores, etc.)
DESCRIPCION DE FLUJO DE DATOS
VHDL es un lenguaje concurrente; la instrucción básica de la ejecución concurrente
es la asignación entre señales a través del símbolo <=
Para facilitar la asignación de las señales VHDL incluye elementos de alto nivel como son
instrucciones condicionales, de selección, etc, que se verán a continuación.

Sentencias Concurrentes

WHEN ... ELSE


Es una sentencia de selección múltiple. En hardware es necesario incluir todas las
opciones posibles. En este caso es obligatorio siempre acabar la expresión con
un ELSE.

<señal> <= <asignación1> WHEN <condición1> ELSE


<asignación2> WHEN <condición2> ELSE
...
<asignaciónN> WHEN <condiciónN> ELSE
<asignaciónM>;
Aunque es obligatorio asignar algo, sea cual sea el resultado de la
condición, en el VHDL´93 se introdujo la palabra clave unaffected para
permitir el caso en que no se realiza ninguna acción

s1 <= d1 WHEN control = '1' ELSE UNAFFECTED


s2 <= d2 WHEN control = '1' ELSE s2
EJEMPLOS:
Un posible ejemplo de este tipo de sentencias podría ser el siguiente:

s <= "00" WHEN a = b ELSE


"01" WHEN a > b ELSE
"11";

NOTA: CUANDO SE DECLARA UN VECTOR POR EJEMPLO


SALIDA : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);

PARA ASIGNAR UN VALOR A TODO EL VECTOR SE HACE ASI


SALIDA <= “001”; -- cuando son dos dígitos o más va entre comillas “ “.

PARA ASIGNAR A UN BIT DE LA POSICION DEL VECTOR ES ASI


SALIDA(0) <= ‘1’; -- cuando es un solo digito va entre apostrofe ‘ ‘
y la posición del bit va entre paréntesis
2) Realizar la descripción VHDL del circuito comparador con las instrucciones when else

3) Realizar la descripción VHDL del siguiente multiplexor cuádruple 4-1, utilizando la asignación
condicional when else
Siguiente Sentencia Concurrente

CASE
Es parecido al anterior porque también ejecuta un bloque de código
condicionalmente, pero en esta ocasión se evalúa una EXPRESION en vez de una
CONDICION; se debe recordar que se deben tener en cuenta todos los casos, es
decir, incluir como última opción la sentencia WHEN OTHERS..

CASE <expresión> IS
WHEN <valor1> => [sentencias1]
WHEN <valor2> => [sentencias2]
WHEN <rango de valores> => [sentenciasN]
WHEN OTHERS => [sentenciasM]
END CASE;
Un ejemplo es:

CASE a IS
WHEN 0 => B:=0;
WHEN 1 to 50 => B:=1;
WHEN 99 to 51 => B:=2;
WHEN OTHERS => B:=3;
END CASE;

También podría gustarte