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;