ALU
alu.vhdl — VHDL document, 1 kB (1248 bytes)
Contenuto del file
library IEEE; use IEEE.std_logic_1164.all; use IEEE.NUMERIC_STD.ALL; entity simple_alu is port( a,b : in std_logic_vector(7 downto 0); --input operands op : in std_logic_vector(2 downto 0); --Operation to be performed r : out std_logic_vector(7 downto 0); --output of ALU zero,sign: out std_logic); end simple_alu; architecture behav of simple_alu is begin process(a,b,op) variable op1,op2,result : signed(7 downto 0) := (others => '0'); begin op1:=signed(a); op2:=signed(b); case op is when "000" => result := op1 + "00000001"; when "001" => result := op1 + op2; when "010" => result := op1 - op2; when "011" => result := not op1; when "100" => result := op1 and op2; when "101" => result := op1 or op2; when "110" => result := op1 xor op2; when "111" => result := "00000000"; when others => NULL; end case; r <= std_logic_vector(result); if (result=0) then zero<='1'; else zero<='0'; end if; if (result<0) then sign<='1'; else sign<='0'; end if; end process; end behav;