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