05 verilog基础语法-运算符

虚拟机:VMware-workstation-full-14.0.0.24051
环 境:ubuntu 18.04.1



一、学习内容

  这节主要是学习上半部分-运算符及其表达式
在这里插入图片描述


二、运算符和表达式

  • 运算符按功能分为9类:
       算术运算符、逻辑运算符、关系运算符、等式运算符、缩减运算符、条件运算符、位运算符、移位运算符、位拼接运算符。
  • 运算符按操作数的个数分为3类:
    • 单目运算符–带一个操作数:逻辑非!、按位取反~、缩减运算符、移位运算符;
    • 双目运算符–带两个操作数:算术、关系、等式运算符;逻辑、位运算符的大部分;
    • 三目运算符–带三个操作数:条件运算符。

(1)算术运算符

算术运算符说明
+加法
-减法
*乘法
/除法
%求模
  • 进行整数除法运算时,结果值略去小数部分,只取整数部分!
  • %称为求模(或求余)运算符,要求%两侧均为整型数据;
  • 求模运算结果值的符号位取第一个操作数的符号位!【例 1】 -11%3,结果为-2
  • 进行算术运算时,若某操作数为不定值x,则整个结果也为x。

【例 2】 除法和求模运算的区别

module arithmetic(
	output reg [3:0] c,
	output reg [3:0] d,
	output reg [7:0] e,
	input 					  clk,
	input			[3:0] a,
	input 			[3:0] b
	);
always @ (posedge clk) begin
	c <= a/b;
	d <= a%b;
	e <= a*b;
end

在这里插入图片描述

(2)逻辑运算符

逻辑运算符说明
&&(双目)逻辑与
两竖杆(双目)逻辑或
!(单目)逻辑非
  • 非零的操作数被认为是真(1‘b1);
  • 零被认为是假(1‘b0);
  • 不确定的操作数如4’bxx00, 被认为是不确定的(可能为零,也可能为非零)(记为1’bx); 但4’bxx11被认为是真(记为1’b1,因为它肯定是非零的)
    注意进行逻辑运算后的结果为布尔值(为1或0或x)
       “&&”和“||”的优先级除高于条件运算符外,低于关系运算符、等式运算符等几乎所有运算符;逻辑非“!”优先级最高

(3)位运算符

在这里插入图片描述

  • 位运算其结果与操作数位数相同。位运算符中的双目运算符要求对两个操作数的相应位逐位进行运算。
  • 两个不同长度的操作数进行位运算时,将自动按右端对齐,位数少的操作数会在高位用0补齐。

【例 3】

A = 5’b11001,B = 3’b101,
	则A & B =5’b11001)&5’b00101)= 5’b00001

  思考:&&运算符和&运算符的区别。

(4)关系运算符(双目)

关系运算符说明
<小于
<=小于或等于
>大于
>=大于或等于
  • 运算结果为1位的逻辑值1或0或x。 关系运算时,若关系为真,则返回值为1;若声明的关系为假,则返回值为0;若某操作数为不定值x,则返回值为x;
  • 所有的关系运算符优先级别相同;
  • 关系运算符的优先级低于算术运算符。
	a < size - 1   等同于: a<(size - 1)
	size -1<a)  不等同于: size-1<a

(5)等式运算符(双目)

等 式 运 算 符说 明
==等 于
!=不 等 于
===全 等
!==不全等
  • 运算结果为1位的逻辑值1或0或x;
  • 等于运算符(= =)和全等运算符(= = =)的区别
      使用等于运算符时,两个操作数必须逐位相等,结果才为1;若某些位为x或z,则结果为x。
      使用全等运算符时,若两个操作数的相应位完全一致(如同是1,或同是0,或同是x,或同是z),则结果为1;否则为0。
  • 所有的等式运算符优先级别相同。

【例 4】 真值表比较
在这里插入图片描述

(6)缩减运算符

在这里插入图片描述

  • 运算法则与位运算符类似,但运算过程不同!
  • 对单个操作数进行递推运算,即先将操作数的最低位与第二位进行与、或、非运算,再将运算结果与第三位进行相同的运算,依次类推,直至最高位 。
  • 运算结果缩减为1位二进制数

【例 5】

reg[3:0] a;
b=|a; //等效于 b =( (a[0] | a[1]) | a(2)) | a[3]

  

(7)移位运算符(单目)

在这里插入图片描述
  用法:A>>n 或 A<<n,将操作数右移或左移n位,同时用n个0填补移出的空位。
【例 6】

4'b1001>>3 = 4'b0001;  4'b1001>>4 = 4'b0000;
4'b1001<<1 = 5'b10010; 4'b1001<<2 = 6'b100100;
1<<6 = 32'b1000000

(8)条件运算符(三目)

格式:信号 = 条件?表达式1:表达式2。当条件为真,信号取表达式1的值;为假,则取表达式2的值。

(9)位拼接运算符

在这里插入图片描述
  位拼接运算符为{ },用于将两个或多个信号的某些位拼接起来,表示一个整体信号。
【例 8】

output [3:0] sum; //和
output cout; // 进位输出
input[3:0] ina, inb;
input cin;
assign {cout, sum} = ina + inb +cin;// 进位与和拼接在一起

{a, b[3:0], w, 3’b101} = {a, b[3], b[2], b[1], b[0], w, 1’b1, 1’b0, 1’b1 }

(10)算术运算符

  可用重复法简化表达式,如:{4{w}} //等同于{w, w, w, w},还可用嵌套方式简化书写,如:{b, { 3{a, b} } } //等同于{b, {a, b}, {a, b}, {a, b}},也等同于{b, a, b, a, b, a, b}。
   在位拼接表达式中,不允许存在没有指明位数的信号,必须指明信号的位数;若未指明,则默认为32位的二进制数!如{ {1,0} } = 64’h h00000001_ 000000000 ,注 意{ {1 ,0} } 不等于2’b1100。


三、小结

在这里插入图片描述

  可以使用使用括号()来控制运算的优先级。


作者:xlinxdu
版权:本文版权归作者所有
转载:欢迎点赞、评论和转载,但未经作者同意,必须保留此段声明,必须在文章中给出原文连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xlinxdu

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值