Tengo un problema con la definición de una entidad. Estoy escribiendo una envoltura que acepta varios genéricos. Entre estos genéricos hay algunos valores booleanos que tienen la función de habilitar o deshabilitar la transmisión de alguna señal de entrada a la salida de la entidad. Me gustaría tener el ancho de la señal de salida relacionada con los valores booleanos. Esto es lo que quiero hacer:
entity of DUT is
generic(
DATA_1_WIDTH : natural := 16;
DATA_2_WIDTH : natural := 16;
SWITCH_1 : boolean := FALSE;
SWITCH_2 : boolean := FALSE;
....
);
port (
clk : in std_logic;
rst : in std_logic;
DATA_1 : in std_logic_vector(DATA_1_WIDTH - 1 downto 0);
DATA_2 : in std_logic_vector(DATA_2_WIDTH - 1 downto 0);
....
DATA_OUT : out std_logic_vector);
Cuando el ancho de "DATA_OUT" cambie con los valores de los interruptores:
- Cuando SWITCH_1 = TRUE y SWITCH_2 = TRUE = > ancho de DATA_OUT = DATA_1_WIDTH + DATA_2_WIDTH + constante;
- Cuando SWITCH_1 = TRUE y SWITCH_2 = FALSE = > ancho de DATA_OUT = DATA_1_WIDTH + constante;
Y así sucesivamente.
¿Puede alguien decirme una manera de hacer esto?