paicore_behavioral/encoders/encoder_generic.vhdl
2025-07-18 05:09:06 -05:00

33 lines
No EOL
948 B
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.encoder_components.all;
entity encoder_generic is
generic(
din_size : natural
);
port (
din : in STD_LOGIC_VECTOR(din_size-1 downto 0);
dout : out STD_LOGIC_VECTOR(get_dout_size(din_size)-1 downto 0);
valid : out STD_LOGIC -- '1' if any input is high, '0' if all zero
);
end encoder_generic;
architecture impl of encoder_generic is
begin
g_32_encoder: if din_size = 32 generate
encoder32: encoder32to5
port map (din => din, dout => dout, valid => valid);
end generate;
g_16_encoder: if din_size = 16 generate
encoder16: encoder16to4
port map (din => din, dout => dout, valid => valid);
end generate;
g_8_encoder: if din_size = 8 generate
encoder8: encoder8to3
port map (din => din, dout => dout, valid => valid);
end generate;
end impl;