--=====================================================
-- Проект 03. Дешифратор 3 в 8
-- Процесс с оператором case: последовательное описание
-- внутри параллельного блока.
--=====================================================
library ieee;
use ieee.std_logic_1164.all;

entity decoder38 is
    port (
        addr    : in  std_logic_vector(2 downto 0);     -- адрес
        en      : in  std_logic;                        -- разрешение
        y       : out std_logic_vector(7 downto 0)      -- выходы
    );
end entity decoder38;

architecture rtl of decoder38 is
begin
    -- список чувствительности: процесс запускается при
    -- изменении любого перечисленного сигнала
    process (addr, en)
    begin
        if en = '0' then
            y <= (others => '0');                       -- все выходы погашены
        else
            case addr is
                when "000"  => y <= "00000001";
                when "001"  => y <= "00000010";
                when "010"  => y <= "00000100";
                when "011"  => y <= "00001000";
                when "100"  => y <= "00010000";
                when "101"  => y <= "00100000";
                when "110"  => y <= "01000000";
                when "111"  => y <= "10000000";
                when others => y <= (others => '0');
            end case;
        end if;
    end process;
end architecture rtl;
