Verilog学习笔记-——运算符

Verilog学习笔记-——运算符

按功能分包括:算数运算符、逻辑运算符、关系运算符、等式运算符、缩减运算符、条件运算符、位运算符、移位运算符和位拼接运算符。
按运算符所带操作数的个数来区分,可分为三类:
单目运算符:运算符只带一个操作数。
双目运算符:运算符可带两个操作数。
三目运算符:运算符可带三个操作数。

算数运算符(Arithmetic operators)—双目运算符

常用算术运算符包扩:
+(加)、-(减)、*(乘)、/(除)、%(求模)

逻辑运算符(Logical operators)

&&(逻辑与)、||(逻辑或)、!(逻辑非)
其中 “&&、||”为双目运算符,“!”为单目运算符

位运算符(Bitwise operators)—双目运算符

~(按位取反)、&(按位与)、|(按位或)、^(按位异或)、 ^ ~ 或 ~ ^(按位同或)
当两个不同长度的数据进行位运算时,会自动将两个操作数按右端对齐,位数少的操作数会在高位用0补齐。

关系运算符(Relational operators)—双目运算符

<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)

等式运算符(Equality Operators)—双目运算符

= = == ==(等于)、!=(不等于)、 = = = === ===(全等)、!==(不全等)

相等运算符(==)和全等运算符( = = = === ===)的区别是:参与比较的两个操作数必须逐位相等,其相等比较结果才为1,如果某些位是不定态或高阻值,其相等比较得到的结果是不定值;而全等比较( = = = === ===)则是对这些不定态或高阻态的位也进行比较,两个操作数必须完全一致,其结果才是1,否则结果是0。
a = 5'b11x01,b=5'b11x01
a==b的结果为不定值"x",a===b的结果为"1".

缩减运算符(Reduction operators)—单目运算符

&(与)、~&(与非)、|(或)、 ~|(或非)、^(异或)、 ^ ~或 ~ ^ (同或)
缩减运算符将一个矢量缩减为一个标量。

移位运算符(Shift operators)

> > >> >>(右移)、 < < << <<(左移)、 > > > >>> >>>(算数右移)、 < < < <<< <<<(算数左移)
在Verilog-1995的移位运算符只有两个,左移和右移。其用法为
A>>n或 A<<n表示把操作数A右移或左移n位,该移位是逻辑移位,移出的位用0添补。
在Verilog-2001中增加了算术运算符">>>“和”>>>",对于有符号数,执行算术移位操作时,将符号位填补移出的位,以保持数值的符号。
A=8'b10100011

A>>3;             //逻辑右移后其值为8'b00010100
A>>>3;            //算术右移后其值为8'b11110100

指数运算符(Power operator)—双目运算符

Verilog-2001标准中增加了指数运算符" ** ",例如 2 8 2^8 28表示为2**8

条件运算符(Conditional operator)—三目运算符

格式:信号=条件?表达式1:表达式2;
例如:

out = sel ? in1 :in0;     //sel=1时 out=in1;sel=0时 out=in0;

位拼接运算符(Concatenation operators)—双目运算符

格式:{信号1的某几位,信号2的某几位,... ... ,信号n的某几位}
位拼接可以嵌套使用
例如:

{{2{a,b}},{3{c,d}}}  //等价于{a,b,a,b,c,d,c,d,c,d}

运算符优先级

在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值