Verilog Operators

 

 

Operators are used to manipulate variables.

Bitwise Operators

Bitwise operators act on the individual bits of a variable. They are very similar to the bitwise operations in other languages, such as C.

Function Operator
AND &
OR |
XOR ^
XNOR ~^
NOT ~

These operators get synthesized directly into their equivalent logic gate.

Reduction Operators

Reduction operators are similar to bitwise operators, except they act on all bits of a variable simultaneously, to produce a 1-bit output (hence the name reduction). Some of the operators are the same as the bitwise operators, and so operator used depends on the context.

Function Operator
AND &
NAND ~&
OR |
XOR ~|
XNOR ^
NOT ~^

Shift Operators

Shift operators shift the bits in a variable left or right by a number of specified places. The basic shifts are very similar to the shift operations in other languages, such as C. The arithmetic shift operators preserve the sign of the value when dealing with variables that represent signed numbers (this is done automatically in C, depending on the type of the variable).

Function Operator
Left Shift <<
Right Shift >>
Arithmetic Left Shift <<<
Arithmetic Right Shift >>>

Concatenation And Replication Operators

Concatenation is used to combine two input variables into a wider output variable. Replication is used to repeat a variables many times in a pattern.

Function Operator
Concatenation {,}
Replication {{}}

Arithmetic Operators

Arithmetic operators are used to perform basic mathematics on variables. Most follow the same syntax as C, except the power operator ( **), which is not supported in C.

Function Operator
Addition +
Subtraction -
Multiplication *
Division /
Modulus %
Power **

Remember that an FPGA does not have ALU like a microcontroller, so all of these operations will be created with gates in hardware! In some cases, this can be very taxing, so you must always be careful when using arithmetic operators in a hardware description language.

Comparison Operators

These operators compare two values and produce a single bit output.

Function Operator
Less Than <
Greater Than >
Less Than Or Equal =
Greater Than Or Equal >=
Equal To ==
Not Equal To !=
Case Equality ===
Case Inequality !==

Logical Operators

Function Operator
Logical And &&
Logical Or ||
Logical Not !