---------------------------------------------------------------------------------- -- Company: -- Engineer: -- -- Create Date: 16:16:58 10/03/2011 -- Design Name: -- Module Name: lab1 - Behavioral -- Project Name: -- Target Devices: -- Tool versions: -- Description: -- -- Dependencies: -- -- Revision: -- Revision 0.01 - File Created -- Additional Comments: -- ---------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity lab1 is port( ctrl: in std_logic_vector(2 downto 0); src0, src1: in std_logic_vector(7 downto 0); result: out std_logic_vector(7 downto 0) ); end lab1; architecture Behavioral of lab1 is signal sum, diff, inc: std_logic_vector(7 downto 0); begin -- note conversion to signed and back to std_logic inc <= std_logic_vector(signed(src0)+1); sum <= std_logic_vector(signed(src0)+signed(src1)); diff <= std_logic_vector(signed(src0)-signed(src1)); result <= inc when ctrl(2)='0' else sum when ctrl(1 downto 0)="00" else diff when ctrl(1 downto 0)="01" else src0 and src1 when ctrl(1 downto 0)="10" else src0 or src1; end Behavioral;