我是 Verilog 的新手,想学习如何比较两个数字。例如,让我们将参数或 reg(比如 a)与数字 2 (2'b10) 进行比较。这将如何用 Verilog 编写?
如何在 Verilog 中比较两个数字(网络、变量、常量)
电器工程
验证日志
2022-01-26 05:17:13
2个回答
等式和关系运算符(如果操作数有 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 位值,其中 1 代表真,0 代表假,X 代表不确定
- 综合不支持 === 和 !== 运算符,因为 Z 和 X 在仿真和硬件中的含义不同。
- 如果比较两个宽度不等的数字,较小的会被扩大。无符号操作数通过用零向左扩展来扩展。有符号操作数通过使用最高有效位(符号位)的值左扩展来扩展。
资料来源:Stuart Sutherland 的“基于 Verilog-2001 标准 (IEEE Std 1364-2001) 的 Verilog HDL 快速参考指南”
Verilog 数值比较运算符与 C 中的类似:==、!=、<、>、<=、>=。
其它你可能感兴趣的问题