运算符

运算符是代表特定数学或逻辑动作或过程的字符。

Untitled Diagram-Page-2 drawio (16)

序号运算符
1.算术运算符
2.关系运算符
3.相等运算符
4.逻辑运算符
5.按位运算符
6.移位运算符
7.条件运算符
8.约简运算符
9.连接和复制运算符

1. 算术运算符#

我们使用算术运算符对变量执行基本数学函数。这些运算符应该已经很熟悉,因为它们大多是常见数学符号的复制。

下表显示了 SystemVerilog 中算术运算符的完整列表。
airthmatic_1

2. 关系运算符#

运算符描述
a < ba 小于 b
a > ba 大于 b
a <= ba 小于 或等于 b
a >= ba 大于 或等于 b

这些运算符比较操作数并产生 1 位标量布尔值。

  • 0:如果关系为 false
  • 1:如果关系为 true
  • x:如果任何操作数具有未知的 x 位

3. 相等运算符#

相等运算符用于比较表达式。如果比较失败,则结果为 0,否则为 1。 等式运算符有两种类型。

运算符描述
a === ba 相等于 b, 包括 x 和 z
a !== ba 不相等于 b, 包括 x 和 z
a == ba 相等于 b, 结果可能是 unknown
a != ba 不相等于 b, 结果可能是 unknown
  • 如果逻辑相等 (==) 或逻辑不等 (!=) 的两个操作数都包含未知 (x) 或高阻抗 (z) 值,则比较结果将为未知 (x)。否则,要么是真,要么是假。

  • 如果大小写相等(===)或大小写不等(!==)的操作数包含未知(x)或高阻(z)值,则将逐位计算结果。

4. 逻辑操作符#

逻辑运算符与按位运算符类似 在逻辑运算符中,这些表达式返回 1(真)或 0(假)。 为了更好地理解,只有三个逻辑运算符,请遵循下面的备忘单

logical11

5. 按位运算符#

位运算符对两个操作数执行按位运算。 它们获取一个操作数中的每一位,并与另一操作数中的相应位执行操作。如果一个操作数比另一个操作数短,它将在左侧用零扩展以匹配较长操作数的长度。

OperatorDescription
~negation
&
|inclusive or
^exclusive or
^~ or ~^exclusive nor (equivalence)

6. 移位运算符#

有 2 种类型的移位运算符

  • 逻辑移位运算符
  • 算术移位运算符
OperatorDescription
«shift left logical
»shift right logical
«<shift left arithmetic
»>shift right arithmetic

移位运算符实际上需要两个参数。第一个是我们要移动的信号的名称。第二个参数是我们要移动的位数。

当我们使用逻辑移位运算符时,在信号移位所需位数后,所有空白位置都用 0 填充。

7.条件运算符#

要使用条件运算符,我们在?之前写一个逻辑表达式。然后评估该运算符以确定它是 true 还是 false。根据表达式的真假,将输出分配给两个值之一。

条件运算符的一般语法。

output = <condition> ? <true> : <false>

8.归约运算符#

归约运算符是一元的。 它们对单个操作数执行按位运算以产生单位结果。

运算符描述
&and
~&nand
|or
~|nor
^xor
^~ or ~^xnor

9.连接和复制运算符#

运算符描述
{ }连接运算符
{{ }}复制运算符
  • 连接运算符将两个或多个信号组合成一个向量。
  • 连接使用大括号字符 { 和 } 表示, 用逗号分隔其中的表达式。
  • 复制运算符用于将一组位复制 n 次。