TU-VHDL/Task2/demux_beh.vhdl
2025-02-10 20:28:13 +01:00

56 lines
1.6 KiB
VHDL

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
architecture behavior of demux is
CONSTANT O1 : std_logic_vector(0 to 2) := "000";
CONSTANT O2 : std_logic_vector(0 to 2) := "001";
CONSTANT O3 : std_logic_vector(0 to 2) := "010";
CONSTANT O4 : std_logic_vector(0 to 2) := "011";
CONSTANT O5 : std_logic_vector(0 to 2) := "100";
CONSTANT OE : std_logic_vector(0 to 3) := "0000";
begin
process(SEL, IN1)
begin
case SEL is
when O1 =>
OUT1 <= IN1;
OUT2 <= OE;
OUT3 <= OE;
OUT4 <= OE;
OUT5 <= OE;
when O2 =>
OUT1 <= OE;
OUT2 <= IN1;
OUT3 <= OE;
OUT4 <= OE;
OUT5 <= OE;
when O3 => OUT3 <= IN1;
OUT1 <= OE;
OUT2 <= OE;
OUT3 <= IN1;
OUT4 <= OE;
OUT5 <= OE;
when O4 => OUT4 <= IN1;
OUT1 <= OE;
OUT2 <= OE;
OUT3 <= OE;
OUT4 <= IN1;
OUT5 <= OE;
when O5 => OUT5 <= IN1;
OUT1 <= OE;
OUT2 <= OE;
OUT3 <= OE;
OUT4 <= OE;
OUT5 <= IN1;
when others =>
OUT1 <= OE;
OUT2 <= OE;
OUT3 <= OE;
OUT4 <= OE;
OUT5 <= OE;
end case;
end process;
end behavior;