-- Patrick Wagstrom -- CS471 - 001 -- Lab 10: n-Bit ALU without overflow LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY alu1 IS PORT ( a, b: IN STD_LOGIC; zero_in, carry_in, less: IN STD_LOGIC; control: IN STD_LOGIC_VECTOR (2 DOWNTO 0); zero_out, result, carry_out: OUT STD_LOGIC); END alu1; ARCHITECTURE dataflow OF alu1 IS SIGNAL b_tmp, result_tmp, carry_tmp: STD_LOGIC; SIGNAL sel_tmp: STD_LOGIC_VECTOR (1 DOWNTO 0); BEGIN WITH control(2) SELECT b_tmp <= NOT b WHEN '1', b WHEN OTHERS; sel_tmp <= control(1) & control(0); WITH sel_tmp SELECT result_tmp <= (a AND b_tmp) WHEN "00", (a OR b_tmp) WHEN "01", (a XOR b_tmp) XOR carry_in WHEN "10", less WHEN OTHERS; carry_tmp <= ((a AND carry_in) OR (a AND b_tmp) OR (b_tmp AND carry_in)); carry_out <= carry_tmp; zero_out <= zero_in OR result_tmp; result <= result_tmp; END dataflow;