Estoy usando una declaración de caso en VHDL donde la expresión es una dirección de bus de 12 bits y la salida es un bus de datos de 32 bits.
Aquí está mi código:
process (iAPB_BUS_IN.pclk)
begin
if rising_edge(iAPB_BUS_IN.pclk) then
if (write_pulse = '1') then
case bus_addr is
when TX_CTRL =>
rd_data(31) <= tx_enable;
rd_data(30) <= arb_suppress_mgmt;
rd_data(29) <= arb_suppress_2022;
rd_data(28 downto 0) <= (others => '0');
when TX_STATUS =>
rd_data(31 downto QUEUE_NUMBER) <= (others => '0');
rd_data(QUEUE_NUMBER -1 downto 0) <= tx_que_avalb;
when RX_CTRL =>
rd_data(31) <= rx_enable;
rd_data(30) <= rx_allow_tcp;
rd_data(29 downto 0) <= (others => '0');
--------------------------------------------------
-- What happens if I add another expression below?
--------------------------------------------------
when RX_CTRL2 =>
rd_data(31) <= rx_que;
rd_data(30) <= rx_allow_udp;
rd_data(29 downto 0) <= (others => '0');
end case;
end if;
end process;
Aquí hay algunas respuestas que dan un ejemplo de síntesis de declaraciones de casos (como esta ) , pero no dan ningún detalle sobre cuántas LUT se utilizan.
Me gustaría saber cómo juzgar cuántas LUT adicionales se agregarán si agrego otra cuando declaración.