If Statement – VHDL Example
If statements are used in VHDL to test for various conditions. They are very similar to if statements in other software languages such as C and Java. There are three keywords associated with if statements in VHDL:
if, elsif, and else. Note the spelling of elsif!
The example below demonstrates two ways that if statements can be used. The first example is used in conjunction with a Generate Statement. The second example uses an if statement in a process. Both of these use cases are synthesizable.
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity example_if_statement is generic ( g_INIT : natural := 1 -- 0="DEAD", 1="BEEF" ); end example_if_statement; architecture behave of example_if_statement is signal r_CHOICE : std_logic_vector(1 downto 0) := "00"; signal r_VECTOR : std_logic_vector(15 downto 0) := (others => '0'); begin -- If statement outside of a process (requires generate keyword) g_IF_SETTING_1 : if g_INIT = 0 generate r_VECTOR <= X"DEAD"; end generate g_IF_SETTING_1; g_IF_SETTING_2 : if g_INIT = 1 generate r_VECTOR <= X"BEEF"; end generate g_IF_SETTING_2; -- If statement inside of a process p_IF_TEST : process (r_VECTOR) is begin if r_VECTOR = X"DEAD" then r_CHOICE <= "01"; elsif r_VECTOR = X"BEEF" then r_CHOICE <= "10"; else r_CHOICE <= "11"; end if; end process p_IF_TEST; end behave;
Leave A Comment