Sunteți pe pagina 1din 6

Sentencias Condicionales:

VHDL permite utilizar otro tipo de sentencias condicionales ms parecidas a los


lenguajes de programacin usados. Todas estas sentencias como se explicar la seccin
tiene que ir obligatoriamente dentro de un process.
VHDL presenta una estructura particular denominada process que define los lmites de
un dominio que se ejecutar (simular) si y slo si alguna de las seales de su
lista de sensibilidad se ha modificado en el anterior paso de simulacin.
Un process tiene la siguiente estructura:

Fig. Estructura de un process


La sentencia process es una de las ms utilizadas en programacin con VHDL ya
que tanto las sentencias condicionales como la descripcin de HW secuencial se realiza
dentro de l. Pero a la vez es, para aquellos que se acercan por primera vez a la
simulacin y sntesis con VHDL, el principal problema para un correcto diseo. Por eso
a continuacin se van a enumerar una serie de normas relacionadas directamente con las
propiedades de la sentencia process, que sern de obligado cumplimiento para que el
cdigo generado simule y sintetice de manera correcta.
Las sentencias condicionales ms comunes en VHDL son las siguientes:
SENTENCIA IF
IF es una construccin muy popular en cdigo secuencial y tiene una sintaxis muy
similar a lenguajes como C, Fortran, Java.
Permite desviar el flujo de ejecucin dentro de un proceso subprograma.

Fig. Estructura de la sentencia IF.


El orden en el que se sitan las condiciones dentro del if-elsif es importante, pues si hay
dos ciertas, se ejecutar nicamente la primera.
Ejemplo1:

Cdigo:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity comp_not is
Port ( a : in STD_LOGIC;
c : out STD_LOGIC);
end comp_not;
architecture Behavioral of comp_not is
begin
process (a)
begin
if a = '1' then
c <= '0';
else
c <= '1';
end if;
end process;
end Behavioral;
Simulacin:

Esquemtico:

Esquemtico RTL:

SENTENCIA IF THEN
IF THEN seleccionan la ejecucin de sentencias dependiendo de una o ms
condiciones, y tiene una sintaxis muy similar a lenguajes como C, Fortran, Java.
Permite desviar el flujo de ejecucin dentro de un proceso subprograma.

Fig. Sintaxis de las sentencias IF.


Cdigo:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity comp_or is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
C : out STD_LOGIC);
end comp_or;

architecture Behavioral of comp_or is


begin
process (A,B)
begin
if A='1' and B='1' then
C <= '1';
end if;
end process;
end Behavioral;
Simulacin:

Esquemtico:

Esquemtico rtl:

S-ar putea să vă placă și