【问题标题】:VHDL Case/When: multiple cases, single clauseVHDL Case/When:多个案例,单个子句
【发布时间】:2011-04-12 01:20:09
【问题描述】:

在一个过程中,我有这样的事情:

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" =&gt;?

额外说明:这远不止 Y 的改变,我只是为了简单起见。所以情况/什么时候是必要的。

【问题讨论】:

    标签: case vhdl


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        • 2019-01-10
        相关资源
        最近更新 更多