代码之家  ›  专栏  ›  技术社区  ›  Jay Wick

vhdl case/when:多个事例,单个子句

  •  19
  • Jay Wick  · 技术社区  · 16 年前

    在一个过程中,我有这样的东西:

    CASE res IS
      WHEN "00" => Y <= A;
      WHEN "01" => Y <= A;
      WHEN "10" => Y <= B;
      WHEN "11" => Y <= C;
      WHEN OTHERS => Y <= 'X';
    END CASE;
    

    注意这个情况 "00" 和 "01" 得到相同的值。有正确的语法吗

    WHEN "00", "01" => ?

    额外说明:这比Y的变化要多得多,我只是为了简单起见才使用它。所以在必要的时候。

    2 回复  |  直到 12 年前
        1
  •  30
  •   Charles Steinkuehler    16 年前

    可以使用“管道”或条形符号分隔多个选项。示例的正确语法是:

    CASE res IS
      WHEN "00" | "01" => Y <= A;
      WHEN "10" => Y <= B;
      WHEN "11" => Y <= C;
      WHEN OTHERS => Y <= 'X';
    END CASE;
    
        2
  •  4
  •   VahidG    12 年前

    您还可以为案例提供一系列选择:

    USE IEEE.STD_LOGIC_ARITH.ALL;
    
    CASE CONV_INTEGER(res) IS
      WHEN 0 to 1 => Y <= A;
      WHEN 2 => Y <= B;
      WHEN 3 => Y <= C;
      WHEN OTHERS => Y <= 'X';
    END CASE;