IF

Sequentielle Anweisungen – IF

PROCEDURE d_ff (CONSTANT delay : IN time := 2 ns;
SIGNAL d,clk : IN bit;
SIGNAL q,q_bar : OUT bit ) IS
BEGIN
IF clk = '1' AND clk'EVENT THEN

q <= d AFTER delay ;
q_bar <= NOT d AFTER delay ;
END IF ;

END d_ff ;
Die Anwendung hier in einer Prozedur zeigt die Minimallösung für eine IF-THEN-ELSE-Anweisung:

Sie besteht nur aus dem IF- und dem END IF-Teil.

ENTITY four_byte_rom IS
PORT (address : IN integer RANGE 1 TO 4;
contents : OUT bit_vector(1 TO 8) ) ;
END four_byte_rom;

------------------------------------------------

ARCHITECTURE if_variante OF four_byte_rom IS
BEGIN
PROCESS (address)
BEGIN
IF address = 1 THEN

contents <= "00001111" ;
ELSIF address = 2 THEN

contents <= "00111111" ;
ELSIF address = 3 THEN

contents <= "11111100" ;
ELSE

contents <= x"f0" ;
END IF ;

END PROCESS ;
END if_variante ;
Diese IF-Anweisung enthält mehrere ELSIF-Teile und einen ELSE-Teil, der alle bis dahin nicht eingetretenen Fälle abdeckt. Sowohl ELSIF- als auch ELSE-Teil sind optional, der ELSIF-Teil kann beliebig oft verwendet werden.

Man beachte die Schreibweise des ''ELSIF'', die im Gegensatz zu den gängigen Programmiersprachen kein zweites ''E'' und auch kein blank vor dem ''IF'' enthält!