Вам нужно включить режим VHDL2008 на вашем компиляторе, чтобы он работал.
Альтернатива (также 2008):
muxing: process (sig1, sig2) is
begin -- process muxing
case sig1 & sig2 is
when "00" => output <= '1';
when "01" => output <= '0';
when "10" => output <= '0';
when "11" => output <= '1';
when others => output <= '0';
end case;
end process muxing;
Если у вас нет режима VHDL-2008 на вашем компиляторе, он потерпит неудачу с жалобами на
Array type case expression must be of a locally static subtype.
или аналогичный.
Если ваш компилятор не может быть совместим с VHDL-2008, вы должны обойти это, создав тип, который вы можете использовать для окружения sig1 & sig2
, чтобы явно сообщить компилятору, что происходит:
subtype twobits is bit_vector(0 to 1);
Тогда:
with twobits'(sig1 & sig2) select
output <= '1' when "00",
-- etc.
или
case twobits'(sig1 & sig2) is
when "00" => -- etc.