Условный оператор if...then относится к последовательным операторам языка VHDL:
if <условие> then <операторы>;
else <операторы>;
end if;
По отношению к сигналам можно использовать и параллельные формы условного оператора. Форма when: <сигнал> <= <список>; где каждая строка списка имеет вид <выражение> when <условие> else причем в последней строке else отсутствует, а when может отсутствовать. Например:
y <= a1 and a2 when J = 1 else
a1 and not a2 when J = 2 else
a1 when J = 3;
Форма select: with <переменная> select <сигнал> <= <список>; где каждая строка списка имеет вид: <выражение> when <значение_переменной>;. В том же примере имеем:
with J select y <=
a1 and a2 when 1,
a1 and not a2 when 2,
a1 when 3;
Оператор выбора:
case <выражение> is <список_действий>
end case;
В списке действий столько строк, сколько имеется альтернативных действий. Каждая строка имеет вид: when <значение_выражения> => <оператор>;. Например:
case J is
when 1 => y <= a1 and a2;
when 2 => y <= a1 and not a2;
when 3 => y <= a1;
end case;