Verilog 运算符
Verilog Operators
- Verilog HDL
运算符按功能分类
逻辑运算符
算术运算用于数值计算,逻辑运算用于逻辑判断和控制
- !逻辑非
- &&逻辑与
- || 逻辑或
位运算符:
位运算符
~ //按位取反
& //按位与
| //按位或(bitwise OR)操作符,它对两个数的所有位执行逻辑或操作
|| //逻辑或(logical OR)操作符,它对两个表达式执行逻辑或操作
^ //按位异或
^~,~^ //按位同或
- 注意区分&&和&(按位与)的区别
关系运算符
< //小于
<=
>
>=
运算结果为真,则结果为1,否则为0。若某操作数为不定值x,则返回值x
缩减运算符
单目运算符
& //与
~& //与非
| //或
~| //或非
^ //异或
~^,^~ //同或
注意:缩减运算符写在操作数左边,结果是一位的
例:
reg[3:0] a: b= | a
// b=(a[0] | a[1] | a[2] | a[3])
移位运算符
>> //右移 缩小;右移一位的操作是将每一位数字向右移动一个位置。这个过程中,最右边的位(最低位)被丢弃,然后左边填充0
<< //左移 放大,左移几位在后面添几个零,左移会扩充位数
用法:A>>n // 将操作数右移n位,同时用n个0填补移出的空位。
例: 4’b1001>>3 = 4b’0001; 4’b1001>>4 = 4b’0000 4’b10111>>1 = 4’b01011
4‘b1001<<1= 5’b10010 4’b1001<<2 = 6’b100100;
位拼接运算符(重点)

还有一些简化写法:如
- {4{w}}
- {b,{3{a,b}}}
注意:在位拼接表达式中,不允许存在没有指明位数的信号,必须指明信号的位数;若未指明,则默认为32位的二进制数!
- 如{1,0}=64’h00000001_00000000(32位的1和32位的0作拼接),注意{1.0}不等于2‘b10
等式运算符
== //等于——
两个操作数逐位相等,结果才是1,若某些位有x,则结果为x
!= //不等于
=== //全等
完全相等,如两个xx,则结果也是1
!== //不全等
注意:==和===的区别
条件运算符
- 属于三目运算符
信号=a?表达式1 : 表达式2
如果a为真,则选表达式1,否则表达式2
运算符的优先级
- 不用单独记忆,括号里面先运算
延迟四个单位,对ain取值,%取余
例化 (名随便取)
逗号后面打一个空格,来连接信号,提高可读性
表示0-15的数,ain和bin能取到的最大值
没有finish的话仿真会一直执行下去,看不到波形
-
声明
-
赋初值
-
时钟信号规律
-
波形“输入”的变化取值
-
开始是时候结束
-
例化