LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; entity mux4reg is port ( status : in std_logic_vector( 2 downto 0); cfg1 : in std_logic_vector( 5 downto 0); cfg2 : in std_logic_vector( 3 downto 0); cfg3 : in std_logic_vector( 1 downto 0); SEL : in std_logic_vector( 1 downto 0); Y : out std_logic_vector( 7 downto 0)); end mux4reg; architecture a of mux4reg is begin -- use only one of the two descriptions! with SEL select Y <= "000000" & cfg3 when "11", "0000" & cfg2 when "10", "00" & cfg1 when "01", "00000" & status when "00", (others => 'X') when others; process(status, cfg1, cfg2, cfg3, SEL) begin Y <= (others => '0'); case SEL is when "00" => Y(status'range) <= status; when "01" => Y(cfg1'range ) <= cfg1; when "10" => Y(cfg2'range ) <= cfg2; when "11" => Y(cfg3'range ) <= cfg3; when others => Y <= (others => 'X'); end case; end process; end;