verilog运算符

运算符和表达式

算数运算符

算数运算符

说明

+

-

*

/

%

求模

  • 进行整数除法运算时,结果值略去小数部分,只取整数部分;

  • %称为求模(或求余)运算符,要求%两侧均为整型数据;

  • 求模运算结果值得符号位取第一个操作数的符号位;

  • 进行算数运算时,若操作数位不定值X,则整个结果也为x

  • eg:x + a = x;

  • 定义一个a,b都是[1:0]两位的,b是1,c是6

  • a=b+c a=7但是换算成二进制111 但是a是两位的二进制,故a为11舍弃了最高位的1

关系运算符

关系运算符

说明

<

小于

<=

小于或等于

>

大于

>=

大于或等于

  • 运算结果值为1位的逻辑值1或0或x

  • 关系运算时,若关系为真,则返回值为1

  • 若声明的关系为假,则返回值为0

  • 若操作数为不定值x,则返回值为x

  • 所有关系运算符优先级别相同

  • 关系运算符的优先级低于算数运算符

逻辑运算符(其结果只有一个)

PS:进行逻辑运算后的结果为1或0或x 大于1也是真

  • 非零的操作数被认为是真(1'b1)

  • 零被认为是假(1'b0)1'在其中的含义为一位的位宽

  • 不确定的操作数如4'bxx00,被认为是不确定的(可能为0,也可能为非0)(记为1'bx),但4'bxx11被认为是真(记为1'b1,因为它肯定是非零的)

逻辑运算符

使用方法

说明

!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,表示为真

  • &&和||的优先级高于条件运算符外,低于关系运算符、等式运算符等几乎所有运算符

  • 逻辑!的优先级最高

  • eg:(a>b)&&(b>C)可简写为a>b && b>c

  • (a==b)||(x==y)可简写成 a==b||x == y

  • (!a)||(a>b)可简写成 !a||a>b

  • 为了提高程序的可读性,明确表达各运算符之间的优先关系,建议使用括号

位运算符(前面操作数有几位,则输出就为几位)

位运算符

说明

~

按位取反

单目运算符

&

按位与

双目运算符

|

按位或

^~、~^

按位同或

比如a为11 b为00 a的第一个1和b的第一个0按位与 如此类推

缩减运算符(与位运算符不同)

  • 缩减运算与位运算类似,但运算过程不同

  • 对单个操作数进行递推运算,即先将操作数的最低位与第二位进行与、或、非运算,再将运算结果与第三位进行相同的运算,依次类推至最高位

  • 运算结果缩减为1位二级制数

移位操作符

  • 用法:A>>n 或 <<n

  • 将操作数右移或左移n位,同时用n个0填补移出的空位

左移会扩充位数

位拼接运算符

  • 位拼接运算符为{}

  • 将两个或多个信号的某些位拼接起来,表示一个整体信号

表示重复的表达式必须位为常数表达式

等式运算符

运算符

说明

==

等于

!=

不等于

===

全等

!==

不全等

条件运算符

运算符的优先级(不要去挑战编辑器,不要给自己挖坑,用括号来控制运算的优先级)

条件赋值语句 out = sel ?in1:in0

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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常用的运算符,可以在模块设计使用它们来实现各种逻辑和算术操作。请根据具体的需求选择适合的运算符进行操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值