Verilog基本语法之运算符(三)

这篇具有很好参考价值的文章主要介绍了Verilog基本语法之运算符(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

运算符分类

运算符按功能分为9类:

算术运算符

逻辑运算符

关系运算符

等式运算符

缩减运算符

条件运算符

位运算符

移位运算符

位拼接运算符

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

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

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

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

算术运算符:

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

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

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

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

例: -11%3   结果为-2

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

逻辑运算符:

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

非零的操作数被认为是(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

建议采用带括号形式

位运算符:

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

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

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

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

关系运算符(双目):

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

运算结果为1位的逻辑值1或0或x.关系运算时,若关系为真,则返回值为1;若关系为假,则返回值为0;若某操作数为不定值x,则返回值为x。

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

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

例:a<size -1      等同于:a<(size -1)

等式运算符:

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

运算结果为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

缩减运算符 (单目

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

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

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

例:reg[3:0] a;

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

移位运算符(单目)

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

A >>n   或A<< n

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

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

条件运算符(三目)

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

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

位拼接运算符

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

{信号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

Verilog基本语法之运算符(三)文章来源地址https://www.toymoban.com/news/detail-405644.html

到了这里,关于Verilog基本语法之运算符(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog中的^~、~^、~&、~|运算符

    今天看书上的Verilog代码中,出现了运算符 ~^ ,从来没见过,搜了一些资料,记录一下。 ~^ 、 ^~ 作为二元运算符时,是同或; ~^ 、 ^~ 作为一元运算符时,是 缩减异或的取反 (感谢@smile、陌离老哥在评论区指正); ~ 只能作为一元运算符,是对缩减 结果的取反; ~| 只能作为

    2024年02月02日
    浏览(46)
  • Verilog运算符优先级

    0 ! ~ 1 * / % 2 + 1 3 4 = = 5 == != === !== 6 ~ 7 ^ ^~ 8 | ~| 9 10 || 11 ?: 从上至下优先级依次降低

    2024年02月16日
    浏览(27)
  • 【JavaSE语法】运算符

    计算机的最基本的用途之一就是执行数学运算,运算符即对操作数进行操作时的符号,不同运算符操作的含义不同 Java中运算符可分为以下: 算术运算符 (+ - * /)、 关系运算符 ( ==)、 逻辑运算符 、 位运算符 、 移位运算符 以及 条件运算符 等 1. 基本四则运算符:加减乘除模

    2024年02月07日
    浏览(35)
  • FPGA设计Verilog基础之Verilog的运算符

    注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料 ,将在公众号 CTO Plus 发布,请关注公众号: CTO Plus FPGA设计Verilog基础之Verilog的运算符 Verilog是一种硬件描述语言,支持多种运算符,包括算术运算符、比较(关系)运算符、逻辑运算符、条件

    2024年02月03日
    浏览(33)
  • Verilog学习记录3——三目运算符

    进阶示例: 以牛客网 VL1 四选一多路器 为例 使用三目运算符写法:

    2024年02月11日
    浏览(48)
  • Verilog常用运算符及表达式

    本文详细介绍了Verilog常用的运算符和表达式,特别是分享了处理“计算位宽溢出”和“负数”的可行方式,帮助读者更加轻松地理解和掌握Verilog语言的运算符。 算数运算符:加(+)、减(-)、乘(*)、除(/)、取余(%) 赋值运算符:非阻塞赋值(=)、阻塞赋值(=);

    2024年02月08日
    浏览(37)
  • java基础语法(运算符&循环)

    在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换。 1.1 隐式转换(理解) ​ 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。例如: 说明: 整数默认是int类型,

    2024年02月09日
    浏览(29)
  • C++语法——详解运算符重载

    运算符重载是C++的一个重要特性。有了运算符重载,在代码编写时能更好的实现封装。 目录 一.运算符重载介绍 二.运算符重载形式 (一).参数 (二).返回值 (三).应用 三.特殊的运算符重载 (一).默认赋值运算符重载 (二).自增运算符A++与++A (三).流提取与流插入

    2023年04月25日
    浏览(42)
  • 【Java SE语法篇】3.运算符

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 计算机的最基本的用途之一就是执行数学运算,比如: 上述 + 和 等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义

    2024年02月02日
    浏览(27)
  • 【Lua语法】算术、条件、逻辑、位、三目运算符

    加减乘除取余:+ - * / % Lua中独有的:幂运算 ^ 注意: 1.Lua中没有自增自减(++、–),也没有复合运算符(+=、-=) 2.Lua中字符串可以进行算术运算符操作,会自动转成number 如:“10.3” + 1 结果为11.3 大于 小于 大于等于 = 小于等于 = 等于 == 不等于 ~= 返回值依然是bool 注意: 1.与C

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包