(3) 选择信号赋值语句

  选择信号赋值语句是只含有一个case语句的进程结构的简写形式。
   with 表达式 select
    信号 <= 选择项
     波形1 when 分支1,
      ……
     波形n when 分支n;
  等价于
   process (敏感信号表)
   begin
   case 表达式 is
    when 分支1 =>
     信号 <= 选择项 波形1;
       ……
    when 分支n =>
      信号 <= 选择项 波形n;
    end case;
   end process
;
  例:
   with Sel select
    Dout<=
      "0001" when "00",
      "0010" when "01",
      "0100" when "10",
      "1000" when "11";

  等价于:
    process (Sel)
    begin
       case Sel is
         when "00" =>
          Dout <= "0001";
         when "01" =>
          Dout <= "0010";
         when "10" =>
          Dout <= "0100";
         when "11" =>
          Dout <= "1000";
       end case;
     end process;

  并行语句中的条件赋值语句和选择赋值语句分别等价于只含有条件结构(if)和选择结构(case)的进程。要注意并行语句中没有ifcase语句的形式,而条件赋值和选择赋值语句也只能出现在Architectureheblock结构中,而不能出现在进程和子程序中。