--========================================================
-- Design units : nMUX_four (Entity, Architecture)
--
-- File name    : nMUX_four.vhd
--
-- Purpose      : n-bit 4:1 multiplexer
--
-- Limitations  : -
--
-- Library      : IEEE
--
-- Dependencies : -
--
-- Author       : Claus-Juergen Thomas, REFT
--
-- Simulator    : Synopsys V3.2a on SUN SPARCstation 10
--
-----------------------------------------------------------
-- Revision list
-- Version Author Date           Changes
--
--  v1.0   cjt    04.07.1996     new
--=========================================================
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.ELEMpack.all;

ENTITY nMUX_four IS
GENERIC(N : POSITIVE := 4);
PORT(A  : IN std_logic_vector(N-1 DOWNTO 0);   -- Data in 0
     B  : IN std_logic_vector(N-1 DOWNTO 0);   -- Data in 1
     C  : IN std_logic_vector(N-1 DOWNTO 0);   -- Data in 2
     D  : IN std_logic_vector(N-1 DOWNTO 0);   -- Data in 3
     S0 : IN std_logic;   -- Select input 0
     S1 : IN std_logic;   -- Select input 1
     Y  : OUT std_logic_vector(N-1 DOWNTO 0)); -- Data out
END nMUX_four;

--============================ARCHITECTURE==================

ARCHITECTURE Behavior OF nMUX_four IS

BEGIN

  main: PROCESS (A,B,C,D,S0,S1)
 
    BEGIN

      IF S1 = '0' THEN

        IF S0 = '0' THEN
          Y <= A;
        ELSE
          Y <= B;
        END IF;

      ELSE

        IF S0 = '0' THEN
          Y <= C;
        ELSE
          Y <= D;
        END IF;

      END IF;

  END PROCESS;

END Behavior;