0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog基本语法之运算符

jf_GctfwYN7 来源:IC修真院 2023-06-25 10:17 次阅读

运算符分类

运算符按功能分为9类:

算术运算符

逻辑运算符

关系运算符

等式运算符

缩减运算符

条件运算符

位运算符

移位运算符

位拼接运算符

运算符按操作数的个数分为3类:

单目运算符:带一个操作数 逻辑非!,按位取反~,缩减运算符,移位运算符

双目运算符:带两个操作数 算术,关系,等式运算,逻辑,位运算符的大部分

三目运算符:带三个操作数 条件运算符

01 算术运算符:

+
-
*
/
% 求模
算术运算符 说明

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

%为求模运算符,要求%两侧均为整型数据

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

例:-11%3 结果为-2

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

02 逻辑运算符:

逻辑运算符把它的操作数当成布尔变量

非零的操作数被认为是真(1’b1);

零被认为是假(1’b0);

不确定的操作数如4‘bxx00,被认为是不确定的(可能为零,也可能是非零);但4‘bxx11,被认为是真

&&(双目) 逻辑与
||(双目) 逻辑或
!(单目) 逻辑非
逻辑运算符 说明

进行逻辑运算后的结果为布尔值(1或0)

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

逻辑非!优先级最高

例:(a>b)&&(b>c) 可简写为:a>b && b>c

(a==b)||(x==y) 可简写为:a==b || x==y

(!a) || (a>b) 可简写为:!a || a>b

建议采用带括号形式

03 位运算符:

~(单目) 按位取反
&(双目) 按位与
| (双目) 按位或
^(双目) 按位异或
^~,~^(双目) 按位同或
位运算符 说明

位运算其结果与操作数位数相同。位运算符中的双目运算符要求对两个操作数的相应位逐位进行运算

两个不同长度的操作数进行位运算时,将自动按右端对齐,位数少的操作数会在高位0补齐

例 a=5'b11011 b=3'b001 a&b = 5'00001

04 关系运算符(双目):

< 小于
<= 小于等于
> 大于
>= 大于等于
关系运算符 说明

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

关系运算时,若关系为真,则返回值为1;若关系为假,则返回值为0;若某操作数为不定值x,则返回值为x。

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

关系运算符的优先级别低于算术运算符。

例:a

05 等式运算符:

== 等于
!= 不等于
=== 全等
!== 不全等
等式运算符 说明

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

等于运算符(==)和全等运算符(===)的区别:

使用等式运算符时两个操作数必须逐位相等,结果才为1;若某些位为x或z,则结果为x;

使用全等运算符时,若两个操作数的相应位完全一致(如同是1,0,x,z)则结果为1;否则为0.

所有的等式运算符优先级别相同

===和!==运算符常用于case表达式的判别,又称为"case等式运算符".

==真值表

== 0 1 x z
0 0 0 x x
1 0 1 x x
x x x x x
z x x x x

===真值表

=== 0 1 x z
0 0 0 0 0
1 0 1 0 0
x 0 0 1 0
z 0 0 0 1

06 缩减运算符(单目):

&
~& 与非
|
~| 或非
^ 异或
^~,~^ 同或
缩减运算符 说明

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

最后运算结果缩减为1位二进制数

例:reg[3:0] a;

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

07 移位运算符(单目):

>> 右移
<<  左移
移位运算符 说明

A >>n 或A<< n

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

左移会扩充位数,右移位数不变,但数据会丢失

08 条件运算符(三目):

信号 = 条件?表达式1:表达式2

当条件为真,信号取表达式1的值,条件为假,则取表达式2的值

09 位拼接运算符:

运算符号{ },用于将两个或多个信号的某些位拼接起来,表示一个整体信号。

{信号1,信号2}

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

用重复法简化表达式,如:{4{w}} //等同于{w,w,w,w}

还可用嵌套方法简化书写,如{b,{3{a,b}} //{b,a,b,a,b,a}

在为拼接表达式中,不允许存在没有指明位数的信号,必须指明信号的位数;若未指明,则默认为32位的二进制数;

如{1,0}=64’h00000001_00000000, 不是2‘b10

8299d1aa-11b1-11ee-962d-dac502259ad0.png





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    708

    浏览量

    41254
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8160

原文标题:IC学霸笔记 | Verilog基本语法之运算符

文章出处:【微信号:IC修真院,微信公众号:IC修真院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    JAVA语言的运算符及表达式

    。3.5.1 表达式表达式是由操作数和运算符按一定语法形式组成的符号序列,以下是合法的表达式例子:a+b 、 (a+b)*(a-b) 、 "name="+"李&
    发表于 12-06 00:28

    Verilog 缩减运算符

    小弟刚学FPGA ,在看Veriolg ,遇到缩减运算符,对于缩减与 缩减或能理解,那个非本身就是单目运算,缩减非是怎么回事呢?
    发表于 10-07 10:13

    炼狱传奇-移位和位拼运算符之战

    1. 移位运算符移位运算符是双目运算符,将运算符左边的操作数左移或右移运算符右边的操作数指定的位数,用0来补充空闲位。如果右边操作数的值为X
    发表于 04-30 09:43

    Verilog HDL入门教程

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.6.6 连接运算符
    发表于 12-08 14:39

    【梦翼师兄今日分享】 常见的关系运算符(移位运算符)

    Verilog HDL 中有两种移位运算符:(逻辑右移)。梦翼师兄编写实例如下:[table][tr][td=568
    发表于 12-17 10:45

    【梦翼师兄今日分享】 常见的关系运算符(位拼运算符

    立即学习>>梦翼师兄FPGA培训(纯视频),手把手带你入门FPGA写在前面的话位拼运算符是将多个小的表达式合并形成一个大的表达式,用符号{}来实现多个表达式的连接运算,各个表达式之间用
    发表于 12-19 09:38

    C语言运算符优先级(超详细)

    C语言运算符优先级(超详细) 当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!C语言运算符优先级[table]优先级
    发表于 04-27 16:47

    Java基础Java运算符

    在Java中,表达式是由运算符和操作数组成的。比如,我们可以把下面的都称为表达式:5num1num1+num2sum=num1+num2Java的运算符包括:算术运算符、赋值运算符、关
    发表于 05-18 15:39

    【正点原子FPGA连载】第五章Verilog HDL语法-领航者ZYNQFPGA开发指南

    ://parameter defineparameter DATA_WIDTH = 8; //数据位宽为8位5.2.5Verilog运算符大家看完了Verilog的数据类型,我们再来介绍下V
    发表于 09-21 16:48

    逻辑运算符是什么

    逻辑运算符:与或非条件结构if -else及其嵌套循环结构whilefordo-while
    发表于 07-14 07:50

    如何去使用三目运算符

    三目运算的定义是什么?三目运算符是由什么组成的?如何去使用三目运算符
    发表于 07-15 13:13

    算术运算符的相关资料分享

    一:算术运算符算术运算符非常地简单,就是小学数学里面的一些加减乘除操作。不过呢,还是有一些语法细节需要注意的。1.加法运算符 + 1 在第3行利用加法
    发表于 11-30 06:09

    运算符的相关资料推荐

    运算符1、算数操作运算符+、-、*、/、%加法:A+B, AB最好是同类型乘除:乘法在很多CPU中并不支持,乘除法能不用就不用,可能会使执行变差求模/求余数:n%m=res[0~(m-1)]求模
    发表于 12-24 06:13

    2.7 python运算符

    2.7 python运算符0. 什么是运算符?本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子中,4和5被称为操作数,“+”号为运算符。Python语言支
    发表于 02-21 16:43

    verilog的逻辑运算符

    写在前面 之前曾经整理过verilog的各类运算符的表达方式,但是在学习的过程中并未深入研究关于逻辑运算符的相关知识,导致在实际使用过程中错误频出,下面是我从网络上整理的相关verilog
    的头像 发表于 09-21 10:07 945次阅读
    <b class='flag-5'>verilog</b>的逻辑<b class='flag-5'>运算符</b>