Есть ли у VHDL тройной оператор?

Мне нравится аккуратность тройного оператора vs if clauses.

Этот оператор существует в vhdl? Мои поиски были обратными. Я также проверил выражение when, но это не оператор, и я хочу также использовать его в процессах...

Ответ 1

Нет. Он обсуждался для 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)). Вы должны написать его для каждого интересующего вас типа.

Ответ 2

Не тот, который вы знаете из C/С++, но вы можете использовать:

destination <= signal1 when condition else signal2;