在VHDL中,IF...THEN...ELSE是順序語句,只能出現在行為描述中(進程體或者子程序中);而WHEN...ELSE是並行語句,可以直接出現在結構體中,但卻不能出現在行為描述中。
WHEN...ELSE等效於一個進程體為IF...THEN...ELSE語句的進程。
四選一
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity mm is
PORT(A,B,C,D: IN STD_LOGIC;
S0,S1:IN STD_LOGIC;
Z: OUT STD_LOGIC);
end ENTITY mm;
architecture bhv of mm is
BEGIN
Z<=A WHEN S0='0' AND S1='0' ELSE
B WHEN S0='0' AND S1='1' ELSE
C WHEN S0='1' AND S1='0' ELSE
D WHEN S0='1' AND S1='1' ELSE
'Z';
END bhv;
