Verilog的运算符

 

目录

1、算术运算符

2、关系运算符

3、 逻辑运算符

4、 条件运算符

5、位运算符

6、 移位运算符

7、 拼接运算符

8、运算符的优先级


Verilog中的运算符
按照功能可以分为下述类型:

  • 1、算术运算符、
  • 2、关系运算符、
  • 3、逻辑运算符、
  • 4、条件运算符、
  • 5、位运算符、
  • 6、移位运算符、
  • 7、拼接运算符。

1、算术运算符

算术运算符,简单来说,就是数学运算里面的加减乘除,数字逻辑处理有时候也需要进行数字运算,所以需要算术运算符。

符号使用方法说明
+a + b

                                        a加上b 

-a - ba减去b
*a * ba乘以b
/a / ba除以b
%a % ba模除b

 

 

 

 

 

 

 

Verilog实现乘除比较浪费组合逻辑资源,尤其是除法。一般2的指数次幂的乘除法使用移位运算来完成运算,详情可以看移位运算符章节。非2的指数次幂的乘除法一般是调用现成的IP,QUARTUS/ISE等工具软件会有提供,不过这些工具软件提供的IP也是由最底层的组合逻辑(与或非门等)搭建而成的。

2、关系运算符

关系运算符主要是用来做一些条件判断用的,在进行关系运算符时,如果声明的关系是假的,则返回值是0,如果声明的关系是真的,则返回值是1;所有的关系运算符有着相同的优先级别,关系运算符的优先级别低于算术运算符的优先级别

符号使用方法说明
>a > ba大于b
<a < ba小于b
>=a >= ba大于等于b
<=a <= ba小于等于b
==a == ba等于b
!=a != ba不等于b

 

 

 

 

 

 

 

 

3、 逻辑运算符

逻辑运算符是连接多个关系表达式用的,可实现更加复杂的判断,一般不单独使用,都需要配合具体语句来实现完整的意思

符号使用方法说明
!!aa的非,如果a为0,那么a的非是1。
&&a && ba 与上 b,如果a和b都为1,a&&b结果才为1,表示真
||a || ba 或上 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有8bit数据位宽,那么a<<2,表示a左移2bit,a还是8bit数据位宽,a的最高2bit数据被移位丢弃了,最低2bit数据固定补0。如果a是3(二进制:00000011),那么3左移2bit,3<<2,就是12(二进制:00001100)。一般使用左移位运算代替乘法,右移位运算代替除法,但是这种也只能表示2的指数次幂的乘除法。

7、 拼接运算符

Verilog中有一个特殊的运算符是C语言中没有的,就是位拼接运算符。用这个运算符可以把两个或多个信号的某些位拼接起来进行运算操作。

符号使用方法说明
{}{a, b}将 a 和 b 拼接起来,作为一个新信号

 

 

 

8、运算符的优先级

运算符优先级
!  、 ~最高
*  、 / 、%次高
+ 、 -

                        优

                        先

                        级

                        依

                        次

                        降

                        低

<< 、 >>
< 、 <= 、 > 、 >= 
== 、 != 、 === 、 !==
&
^ 、 ^~
|
&&
||次低
最低

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 28
    点赞
  • 187
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Verilog中有多种运算符可以用来进行各种运算操作。以下是一些常见的Verilog运算符: 1. 算术运算符: - 加法: 使用"+"运算符,例如 `a + b` - 减法: 使用"-"运算符,例如 `a - b` - 乘法: 使用"*"运算符,例如 `a * b` - 除法: 使用"/"运算符,例如 `a / b` - 取模: 使用"%"运算符,例如 `a % b` 2. 逻辑运算符: - 与: 使用"&"运算符,例如 `a & b` - 或: 使用"|"运算符,例如 `a | b` - 非: 使用"~"运算符,例如 `~a` - 异或: 使用"^"运算符,例如 `a ^ b` 3. 位运算符: - 左移: 使用"<<"运算符,例如 `a << b` - 右移: 使用">>"运算符,例如 `a >> b` - 按位与: 使用"&"运算符,例如 `a & b` - 按位或: 使用"|"运算符,例如 `a | b` - 按位非: 使用"~"运算符,例如 `~a` 4. 关系运算符: - 等于: 使用"=="运算符,例如 `a == b` - 不等于: 使用"!="运算符,例如 `a != b` - 大于: 使用">"运算符,例如 `a > b` - 小于: 使用"<"运算符,例如 `a < b` - 大于等于: 使用">="运算符,例如 `a >= b` - 小于等于: 使用"<="运算符,例如 `a <= b` 5. 赋值运算符: - 简单赋值: 使用"="运算符,例如 `a = b` - 加法赋值: 使用"+="运算符,例如 `a += b` (等同于 `a = a + b`) - 减法赋值: 使用"-="运算符,例如 `a -= b` (等同于 `a = a - b`) 这些是Verilog中常用的运算符,可以在模块设计中使用它们来实现各种逻辑和算术操作。请根据具体的需求选择适合的运算符进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值