我正在尝试做一个if语句,检查bet_target是否是多个数字之一,代码看起来像这样:
bet_target : in unsigned(5 downto 0);
if (bet_target = 1 or bet_target = 2 or bet_target = 3) then
--do stuff
end if;
投注目标是从6个开关以二进制形式从0到36的任何数字。是否有更压缩的方式来编写语句?
由于
答案 0 :(得分:3)
如果您使用的是IEEE数据包numeric_std,则可以使用
中的比较if bet_target >= 0 and bet_target <= 36 then
...
请注意,unsigned要求自然范围整数值作为关系运算符的操作数。
(另请注意,未包含多余的括号 - 允许使用它们)。
这些关系运算符返回布尔值,而中间的&将是一个布尔逻辑运算符。
在IEEE numeric_std包声明和IEEE Std 1076-2008 9.2运算符中查找方式和原因的位置。
并且意识到无符号将具有自然数的二进制等价物,您可以用单一条件表达:
if bet_target <= 36 then
-- do something
end if;