【问题标题】:VHDL how to have multiple conditions in if statementVHDL如何在if语句中有多个条件
【发布时间】:2016-01-27 03:54:25
【问题描述】:

我正在尝试做一个 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 的任意二进制数。有没有更压缩的方式来写这样的声明?

谢谢

【问题讨论】:

标签: if-statement vhdl


【解决方案1】:

如果您使用的是 IEEE 包 numeric_std,您可以使用比较,如

if bet_target >= 0 and bet_target <= 36 then
    ...

请注意,unsigned 期望自然范围整数值作为关系运算符的操作数。

(另请注意,没有包含多余的括号 - 它们是允许的)。

这些关系运算符返回布尔值,中间的 and 将是布尔逻辑运算符。

在 IEEE numeric_std 包声明和 IEEE Std 1076-2008 9.2 运算符中查找方式和原因的位置。

意识到一个无符号数将有一个自然数的二进制等价物,你可以用一个条件来表达:

if bet_target <= 36 then
    -- do something

end if;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多