Verilog运算符及表达式

1.算数运算符:加、减、乘、除、取余(+、-、*、/、%);
2.赋值运算符:非阻塞赋值、阻塞赋值(=、<=);
3.关系运算符:大于、小于、等于、不等于、大于等于、小于等于(>、<、==、!=、>=、<=);
4.逻辑运算符:与、或、非(&&、||、!);
5.条件运算符:(?:);
6.位运算符 :(~、|、^、&、^~);
7.移位运算符:循环左移、循环右移(<<、>>);
8.拼接运算符:位拼接({});

常用运算符说明

算术运算符:

+:加法运算或者正值运算,a+b、+a
— :减法运算或者负值运算:a—b、—a
* :乘法运算:a*b
/ :除法运算:a/b
% :求余运算:a%b,%两侧的数据必须为整型数据;

位运算符:
Verilog HDL作为一种硬件描述语言,在电路中信号进行与或非时,反映在Verilog HDL中则是相应的操作数的位运算。Verilog HDL提供了以下五种位运算符:

~ :按位取反   	 	a=1001   ~a=0110
& :按位与   	 	a=1001   b=0001   a&b=0001
| :按位或      	 	a=1001   b=0001   a|b=1001
^ :按位异或	     	a=1001   b=0001   a^b=1000
^~ :按位同或(异或非) a=1001   b=0001   a^~b=0111

两个长度不同的数据进行位运算时,系统会自动地将两个数据从右端开始对齐,位数少的操作数在高位进行补0.

逻辑运算符:

&&:逻辑与:a&&b,a和b同时为真时才为真,否则为假
||:逻辑或:a||b,a和b同时为假时才为假,否则为真
! :a为真时,!a为假

条件运算符:
“?”用于判断条件是否成立,具体用法如下:

assign  a = (b)?4'b1:4'b0; 如果b为真,那么a = 4'b1,否则a = 4'b0

关系运算符:

a < b  :a小于b
a > b  :a大于b
a == b :a等于b
a != b :a不等于b
a <= b :a小于或等于b
a >= b :a大于或等于b

移位运算符:
在Verilog HDL中有两种移位运算符:<< (左移位运算符) 和 >>(右移位运算符)。其使用方法如下:a>>n或a<<n,a是操作数,n表示移动几位,这两种移位运算都用0填补移出的空位。

 reg [3:0] a,c;
 reg [5:0] b;
 a = 4'h1001;
 b = a<<2;    此时b=6'h100100
 c = a>>2;    此时c=4'h0010

左移位数增加,右移位数不变

位拼接运算符:
位拼接运算符可以把两个或多个信号的某些位拼接起来进行运算操作。其使用方法如下:
{数据1的某几位,数据2的某几位,…,…,数据n的某几位}

	a = 4'h1101;
	b = 6'h111000;
	c = 2'h11;
	d = {a[3],b[2:0],c};此时d = 100011
	e = {2{b}};          此时e = {b,b} = 111000111000
	f = {a,b,2{a,c}}     此时f = {a,b,a,c,a,c} = 111111000110111110111

运算符优先级:

! ~最高优先级
* ;/ ;%次高
+;–
<<;>>
<;<=;>;`>=
==;!=
&
^;^~
&&
||次低
?:最低优先级
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐