-- VHDL code position: p265_ex9_3_sequence_statement_case_alu.txt -- Note : This is code for explaing sequence_statement of VHDL -- See Also: example 9-1, 9_2, 9_3 -- Debug : no debug --------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity alu is port ( a, b : in std_logic_vector( 7 downto 0 ); opcode : in std_logic_vector( 1 downto 0 ); result : out std_logic_vector( 7 downto 0 ) ); end alu ; architecture behav of alu is CONSTANT plus : std_logic_vector( 1 downto 0 ) := b"00"; CONSTANT minus : std_logic_vector( 1 downto 0 ) := b"01"; CONSTANT equal : std_logic_vector( 1 downto 0 ) := b"10"; CONSTANT not_equal : std_logic_vector( 1 downto 0 ) := b"11"; BEGIN PROCESS ( opcode, a, b ) BEGIN CASE opcode IS WHEN plus => result <= a + b; WHEN minus => result <= a - b; WHEN equal => IF ( a = b ) THEN result <= x"01"; ELSE result <= x"00"; END IF; WHEN not_equal => IF ( a /= b ) THEN result <= x"01"; ELSE result <= x"00"; END IF; END CASE; END PROCESS; end architecture behav ;