Подтвердить что ты не робот

Случай VHDL/Когда: несколько случаев, одинарная оговорка

Внутри процесса у меня есть что-то вроде этого:

CASE res IS
  WHEN "00" => Y <= A;
  WHEN "01" => Y <= A;
  WHEN "10" => Y <= B;
  WHEN "11" => Y <= C;
  WHEN OTHERS => Y <= 'X';
END CASE;

Обратите внимание, что случай "00" и "01" получает одно и то же значение. Есть ли правильный синтаксис для чего-то вроде

WHEN "00", "01" =>?

Дополнительная заметка: Намного больше, чем Y, меняя, я просто использовал это для простоты. Таким образом, случай/когда необходимо.

4b9b3361

Ответ 1

Вы можете отделить несколько вариантов с помощью символа "pipe" или bar. Правильный синтаксис для вашего примера:

CASE res IS
  WHEN "00" | "01" => Y <= A;
  WHEN "10" => Y <= B;
  WHEN "11" => Y <= C;
  WHEN OTHERS => Y <= 'X';
END CASE;

Ответ 2

Вы также можете предоставить ряд вариантов для случая:

USE IEEE.STD_LOGIC_ARITH.ALL;

CASE CONV_INTEGER(res) IS
  WHEN 0 to 1 => Y <= A;
  WHEN 2 => Y <= B;
  WHEN 3 => Y <= C;
  WHEN OTHERS => Y <= 'X';
END CASE;