-- +-----------------------------+ -- | Library: multiplexer | -- | designer : Tim Pagden | -- | opened: 7 Jul 1998 | -- +-----------------------------+ -- Function: N-bit M-to-1 multiplexer library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.reg_file_pkg.all; entity mux_generic is generic ( data_width : integer := 1; -- N-bit data funnel_factor : integer := 2 -- M to 1, thus f_f = M ); port ( a : in std_logic_2D_array(0 to (funnel_factor-1), data_width-1 downto 0); sel : in std_logic_vector; y : out std_logic_vector ); end mux_generic; -- behaviour architecture behaviour of mux_generic is begin mux_a_to_y: process (a, sel) -- variable upper, lower : integer; begin for i in data_width-1 downto 0 loop y(i) <= a(to_integer(unsigned(sel)), i); end loop; end process; end behaviour;