VHDL Case/When:多个案例,单个子句

问题描述 投票:0回答:2

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

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;

注意 case

"00"
"01"
得到相同的值。是否有像

这样的正确语法

WHEN "00", "01"  =>
?

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

case vhdl
2个回答
38
投票

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

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

9
投票

也可以给一个case选择范围:

USE IEEE.NUMERIC_STD.ALL;

CASE TO_INTEGER(res) IS
  WHEN 0 to 1 => Y <= A;
  WHEN 2 => Y <= B;
  WHEN 3 => Y <= C;
  WHEN OTHERS => Y <= 'X';
END CASE;
© www.soinside.com 2019 - 2024. All rights reserved.