library ieee; use ieee.std_logic_1164.all; entity EN_DEC_3TO8 is port (EN : in std_logic; I : in std_logic_vector(2 downto 0); O : out std_logic_vector(7 downto 0)); end EN_DEC_3TO8; architecture BEHAV of EN_DEC_3TO8 is begin process(EN, I) begin case EN is when '0' => case I is when "000" => O <= "00000001"; when "001" => O <= "00000010"; when "010" => O <= "00000100"; when "011" => O <= "00001000"; when "100" => O <= "00010000"; when "101" => O <= "00100000"; when "110" => O <= "01000000"; when "111" => O <= "10000000"; when others => O <= "00000000"; end case; when others => O <= "00000000"; end case; end process; end BEHAV; library ieee; use ieee.std_logic_1164.all; entity DEC_4TO16 is port (I : in std_logic_vector(3 downto 0); O : out std_logic_vector(15 downto 0)); end DEC_4TO16; architecture STRUCT of DEC_4TO16 is signal I3BAR : std_logic; component EN_DEC_3TO8C port (EN : in std_logic; I : in std_logic_vector(2 downto 0); O : out std_logic_vector(7 downto 0)); end component; for all : EN_DEC_3TO8C use entity work.EN_DEC_3TO8(BEHAV); begin I3BAR <= not I(3); U1 : EN_DEC_3TO8C port map (I(3), I(2 downto 0), O(7 downto 0)); U2 : EN_DEC_3TO8C port map(I3BAR, I(2 downto 0), O(15 downto 8)); end;