process (a, b, c) begin
lf(a> bjthen If (a > c) then max <■ a; else
max <= c; endlf; else
lf(b >c)then max <= b; else
max <=c; endlf;
endlf;_
Konstrukcja If jest podobna do instrukcji przypisania warunkowego. Jednakie jest ona bardziej ogólna, gdyż gałęzie mogą zawierać sekwencje innych instrukcji
slgnal ac_max, bc_max: stdjoglc; ac_max <■ a when (a > c) else c; bc_max <- b when (b > c) else c; max <» ac_max when (a > b) else ac_max;
albo
a when ((a >b) and (a > c)) else b when (b > c) else ę;
process (a, b) begln
If (a > b) then y <= a + b; z <= a - b; x <= T; else
y<=a-b; z <= a + b; x <= ’0'; endlf;
Konstrukcja if jest bardziej odpowiednia także w sytuacji, gdy wiele operacji jest kontrolowanych przez to samo wyrażenie boolowskie.
y <■ a + b when (a >b) else b-a;
a - b when (a >b) else
b + a;
when (a >b) else
Mariusz Rawski