VHDL: как проверить выбранные биты вектора

Мне интересно, есть ли способ проверить только интересующие меня биты логического вектора std в VHDL. Моя новая попытка выглядит так:

IF (vectorname = "1-00") THEN

action

END IF;

Мне здесь интересно только проверить биты 3, 1 и 0 вектора. Бит 2 в этом случае не имеет значения. Я думал - будет работать, так как это "не волнует", но это не так.

Любые способы сделать это просто? Я знаю, что это возможно с STD_MATCH, но я хочу принять другой подход.

2 ответа

Что случилось с std_match? Это "правильный" способ сделать это, ИМХО, и я не могу сразу придумать причину, чтобы "использовать другой подход"...

Первый способ (также ответил vermaete как комментарий):

IF vectorname(3) = '1' AND vectorname(1 DOWNTO 0) = "00" THEN
  action
END IF;

... вышесказанное работает, если оно внутри процесса. Если нет, используйте что-то вроде этого:

my_output <= "11111111" WHEN vectorname(3) = '1' AND vectorname(1 DOWNTO 0) = "00" ELSE "00000000";

Второй способ:

SIGNAL bits_i_care_about : STD_LOGIC_VECTOR(2 DOWNTO 0);


bits_i_care_about <= vectorname(3) & vectorname(1 DOWNTO 0);

p_my_process : PROCESS(bits_i_care_about)
BEGIN
  IF bits_i_care_about = "100" THEN
    action
  END IF;
END PROCESS;
Другие вопросы по тегам