微信公众号:FPGA动力联盟
本篇博主介绍verilog语言的操作符,这些操作符大多数都是平时在工程中经常使用的,因此在此篇先完整的罗列出来,大家对这些运算符都了解了吗?
接下来的博文会细说这些操作符的用法。
如下表所示为平时用到的verilog操作符总结:
操作符 | 类型 | 操作符 | 类型 | 操作符 | 类型 |
{ },{{ }} | 级联,复制 | +,-,*,/,** | 算术 | % | 求模 |
>,>=,<,<= | 关系 | ! | 逻辑非 | && | 逻辑与 |
|| | 逻辑或 | == | 逻辑等 | != | 逻辑不等 |
=== | 条件等 | 条件不等 | !== | ~ | 按位非 |
& | 按位与 | | | 按位或 | ^ | 按位异或 |
^~/~^ | 按位同或 | & | 缩位与 | ~& | 缩位与非 |
| | 缩位或 | ~| | 缩位或非 | ^ | 缩位异或 |
^~/~^ | 缩位同或 | << | 逻辑左移 | >> | 逻辑右移 |
<<< | 算术左移 | >>> | 算术右移 | ?: | 条件 |
or | 事件或 | () | 括号 |
这些操作符之间并不是并列的,和四则运算的乘除优先情况类似,操作符之间有明确的优先级顺序,其中括号“()”的优先级最高。博主在这里就不一一说明了,因为完全没有意义,通常不用死记硬背。实际代码中都是使用括号来方便阅读。例如:
- 无括号时:1’b1 ? 8’h3 * 8’h5 + 8’h8 : 8’h7 * 8’h2 - 8’h9
- 有括号时:(1’b1) ? (8’h3 * 8’h5 + 8’h8) : (8’h7 * 8’h2 - 8’h9)
上面的有括号和无括号运算,结果都是一致。但我们在写代码时,肯定是选择第二种,第一种写法需要避免,所以我们在写代码时一定要多用括号,这样才不容易出错!