Имеет ли VHDL тернарный оператор?
Мне нравится аккуратность тернарного оператора против предложений if.
существует ли этот оператор в vhdl? Мои поиски были противоположны. Я также проверил оператор when, но это не оператор,и я хочу иметь возможность использовать его в процессах...
2 ответов
нет. Он обсуждался для VHDL-2008, но не попал. У тебя есть несколько вариантов. Если ваши инструменты поддерживают VHDL-2008, условные назначения теперь поддерживаются как последовательные операторы (ранее они были просто параллельными), поэтому вы можете написать что-то вроде:
process(clock)
begin
if rising_edge(clock) then
q <= '0' when reset else d; -- ie. much like q <= reset? '0':d;
end if;
end process;
Если у вас нет 2008, просто напишите функцию (q <= sel(reset, '0', d)
). Вы должны написать его для каждого типа, который вас интересует.
Не один, как вы знаете из C/C++, но вы можете использовать:
destination <= signal1 when condition else signal2;