如何在Verilog中比较两个数字(网络,变量,常量)


10

我是Verilog的新手,并且想学习如何比较两个数字。例如,让我们比较参数或reg(例如a)与数字2(2'b10)。如何用Verilog编写?

Answers:


11

相等和关系运算符(如果操作数具有X或Z,则返回X)

m == n  // is m equal to n? (1-bit True/False result)

m != n  // is m not equal to n? (1-bit True/False result)

m < n   // is m less than n? (1-bit True/False result)

m > n   // is m greater than n? (1-bit True/False result)

m <= n  // is m less than or equal to n? (1-bit True/False result)

m >= n  // is m greater than or equal to n? (1-bit True/False result)

身份运算符(比较逻辑值0、1,X和Z)

m === n // is m identical to n? (1-bit True/False results)

m !== n // is m not identical to n? (1-bit True/False result)

如果reg a小于2'b10,则将2'b11存储在a中。

if (a < 2'b10) begin
   a = 2'b11;
end

注意事项

  1. 对于大多数操作,操作数可以是网络,变量,常量或函数调用。某些操作对真实(浮点)值不合法。
  2. 返回true / false结果的运算符将返回一个1位值,其中1表示true,0表示false,X表示不确定
  3. 合成不支持===和!==运算符,因为Z和X在模拟和硬件中的含义不同。
  4. 如果比较两个宽度不相等的数字,则较小的数字将被扩展。无符号操作数通过向左扩展零来扩展。通过使用最高有效位(符号位)的值向左扩展来扩展有符号的操作数。

来源:Stuart Sutherland撰写的“基于Verilog-2001标准(IEEE Std 1364-2001)的《 Verilog HDL快速参考指南》”


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.