Имеет ли 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;