VHDL如何在if语句中有多个条件

时间:2016-01-27 03:54:26

标签: if-statement vhdl

我正在尝试做一个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的任何数字。是否有更压缩的方式来编写语句?

由于

1 个答案:

答案 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;