如何解释Verilog关系运算符的讨论

如何解释Verilog关系运算符的讨论,verilog,Verilog,这显然至少有一个错误: 结果是一个标量值(示例a

这显然至少有一个错误:

  • 结果是一个标量值(示例a
  • 如果关系为false(a大于b),则为0
  • 1如果关系为真(a比b小)
  • 如果任何操作数具有未知的x位(如果a或b包含x),则为x
注意:如果任何操作数为x或z,则该测试的结果为 视为假(0)

显然,“a大于b”应该是“a大于或等于b”

在我看来还有其他一些问题,但我不知道这是否只是因为我是一个Verilog新手。最后一个要点似乎与后面的注释相矛盾,除非具有所有未知位的操作数(在这种情况下,关系运算符的结果为x)与具有x的操作数(在这种情况下,结果为0)之间存在差异


操作数为x与其所有位为x之间是否存在差异?我知道Verilog是区分大小写的

我认为你应该把你的评论转告该网站的作者

我以()中的语句为例

1如果关系为真(例如,如果a比b小)

后面的注释涉及一个更一般的问题,该问题不特定于关系运算符。当你有

if (expression) true_statement; else false_statement;
当表达式的计算结果为X或0时,将采用false_语句分支


此外,Verilog对数字文本不区分大小写
'habcxz
'habcxz
是等效的。

我想你应该把你的评论交给该网站的作者

我以()中的语句为例

1如果关系为真(例如,如果a比b小)

后面的注释涉及一个更一般的问题,该问题不特定于关系运算符。当你有

if (expression) true_statement; else false_statement;
当表达式的计算结果为X或0时,将采用false_语句分支


此外,Verilog对数字文本不区分大小写
'habcxz
'habcxz
是等效的。

verilog以其x传播悲观主义而闻名

从lrm 11.4.4开始

如果指定的关系为false,则使用这些关系运算符的表达式应产生标量值0 如果为真,则为值1。如果关系运算符的任一操作数包含未知(x)或高阻抗 (z) 值,则结果应为1位未知值(x)

因此,如果任何值包含“x”位,结果将是“x”

现在,在这种情况下,当结果用作条件表达式时,
if
语句将成为真正的早午餐,当且仅当结果为“1”。否则它将采用假分支。此外,verilog中还有转换规则,其中
x
z
值在二进制操作中转换为
0
,条件操作是

因此,网站上的评论是正确的,它是在谈论测试结果(如if声明)

如果任何操作数是x或z,则该测试的结果将被视为false(0)


verilog以其x传播悲观主义而闻名

从lrm 11.4.4开始

如果指定的关系为false,则使用这些关系运算符的表达式应产生标量值0 如果为真,则为值1。如果关系运算符的任一操作数包含未知(x)或高阻抗 (z) 值,则结果应为1位未知值(x)

因此,如果任何值包含“x”位,结果将是“x”

现在,在这种情况下,当结果用作条件表达式时,
if
语句将成为真正的早午餐,当且仅当结果为“1”。否则它将采用假分支。此外,verilog中还有转换规则,其中
x
z
值在二进制操作中转换为
0
,条件操作是

因此,网站上的评论是正确的,它是在谈论测试结果(如if声明)

如果任何操作数是x或z,则该测试的结果将被视为false(0)


你的意思是说“‘a大于b’应该是‘a大于或等于b’”@BobJarvis是的,谢谢。我来解决这个问题。一个错误更正的例子!当我使用“清楚”时,我应该小心你的意思是说“‘a大于b’应该是‘a大于或等于b’”@BobJarvis是的,谢谢。我来解决这个问题。一个错误更正的例子!当我使用“清楚”时,我应该小心你回答的第二部分啊哈。回答的第二部分啊哈。