Verilog有哪些运算符及其优先级
⽬录
Verilog中的运算符
按照功能可以分为下述类型:
1、算术运算符
算术运算符,简单来说,就是数学运算⾥⾯的加减乘除,数字逻辑处理有时候也需要进⾏数字运算,所以需要算术运算符。
符号使⽤⽅法说明
+ a + b a加上b
- a - b a减去b
* a * b a乘以b
/ a / b a除以b
% a % b a模除b
Verilog实现乘除⽐较浪费组合逻辑资源,尤其是除法。⼀般2的指数次幂的乘除法使⽤移位运算来完成运算,详情可以看移位运算符章节。⾮2的指数次幂的乘除法⼀般是调⽤现成的IP,QUARTUS/ISE等⼯具软件会有提供,不过这些⼯具软件提供的IP也是由最底层的组合逻辑(与或⾮门等)搭建⽽成的。
2、关系运算符
关系运算符主要是⽤来做⼀些条件判断⽤的,在进⾏关系运算符时,如果声明的关系是假的,则返回值是0,如果声明的关系是真的,则返回值是1;所有的关系运算符有着相同的优先级别,关系运算符的优先级别低于算术运算符的优先级别
符号使⽤⽅法说明
> a > b a⼤于b
< a < b a⼩于b
>= a >= b a⼤于等于b
<= a <= b a⼩于等于b
== a == b a等于b
!= a != b a不等于b
3、逻辑运算符
逻辑运算符是连接多个关系表达式⽤的,可实现更加复杂的判断,⼀般不单独使⽤,都需要配合具体语句来实现完整的意思
符号使⽤⽅法说明
!!a a的⾮,如果a为0,那么a的⾮是1。
&& a && b a 与上 b,如果a和b都为1,a&&b结果才为1,表⽰真
|| a || b a 或上 b,如果a或者b有⼀个为1,a||b结果为1,表⽰真。
4、条件运算符
条件操作符⼀般来构建从两个输⼊中选择⼀个作为输出的条件选择结构,功能等同于always中的if-else语句。
符号使⽤⽅法说明
: a ? b : c如果 a 为真,就选择 b,否则选择 c
5、位运算符
位运算符是⼀类最基本的运算符,可以认为它们直接对应数字逻辑中的与、或、⾮门等逻辑门。
符号使⽤⽅法说明
~~a将 a 的每个位进⾏取反
& a & b将 a 的每个位与 b 相同的位进⾏相与
运算符优先级按从高到低排列
| a | b将 a 的每个位与 b 相同的位进⾏相或
^ a ^ b将 a 的每个位与 b 相同的位进⾏异或
位运算符的与、或、⾮与逻辑运算符逻辑与、逻辑或、逻辑⾮使⽤时候容易混淆,逻辑运算符⼀般⽤在条件判断上,位运算符⼀般⽤在信号赋值上。
6、移位运算符
移位运算符包括左移位运算符和右移位运算符,这两种移位运算符都⽤0来填补移出的空位。
符号使⽤⽅法说明
<< a << b 将 a 左移 b 位>>
a >> b
将 a 右移 b 位
符号使⽤⽅法说明
符号使⽤⽅法说明
{}
{a, b}
将 a 和 b 拼接起来,作为⼀个新信号
运算符优先级! 、 ~最⾼* 、 / 、%次⾼
+ 、 - 优
先 级 依 次 降 低
<< 、 >>
< 、 <= 、 > 、 >= == 、 != 、 === 、 !==&^ 、 ^~|&&||次低
最低
假设a有8bit数据位宽,那么a<<2,表⽰a左移2bit,a还是8bit数据位宽,a的最⾼2bit数据被移位丢弃了,最低2bit数据固定补0。如果a 是3(⼆进制:00000011),那么3左移2bit,3<<2,就是12(⼆进制:00001100)。⼀般使⽤左移位运算代替乘法,右移位运算代替除法,但是这种也只能表⽰2的指
数次幂的乘除法。
7、 拼接运算符
Verilog中有⼀个特殊的运算符是C语⾔中没有的,就是位拼接运算符。⽤这个运算符可以把两个或多个信号的某些位拼接起来进⾏运算操作。
8、运算符的优先级
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论