首页 > 其他分享 >Verilog运算符优先级

Verilog运算符优先级

时间:2022-09-26 18:12:58浏览次数:82  
标签:操作数 优先级 逻辑 线网 运算符 Verilog 赋值

Verilog运算符按功能可以分为九类。

1. 基本算数运算符

运算符 中文名 举例 举例结果 说明
+ 加法运算符或正值运算符 12+3 15 同普通加法
- 减法运算符或负值运算符 12-3 9 同普通减法
* 乘法运算符 12*3 36 同普通乘法
/ 除法运算符 12.5/3 4 结果为4,小数部分省去
% 模运算符 12%4 0 可整除,余数为0

注:若进行基本运算操作时,某一操作数有不确定数X,则结果也为X;

2. 赋值运算符

a. 连续赋值:用于对线网型变量进行赋值,而不能对寄存器变量进行赋值。

基本语法格式为:线网型变量类型 [线网型变量位宽] 线网型变量名;

                                assign #(延时量) 线网型变量名 = 赋值表达式;

举例:wire  [2:0]  a;

            wire  [3:0]  b; 

            assign   a = 3'd4;

            assign   b [3] = 1'b1;

b. 过程赋值:主要用于两种结构化模块(initial 模块和always模块)中的赋值语句,在过程块中只能使用过程赋值语句,过程赋值语句只能对寄存器类型的变量(reg、integer、real、time)进行操作,经过赋值后,上面这些变量的取值将保持不变,直到另一条赋值语句对变量重新赋值为止。

基本格式为:<被赋值变量><赋值操作符><赋值表达式>

举例: reg  c;

            always. @(c)

            begin

                   c = 1'b0;

            end

3. 关系运算符

在进行关系运算时,如果操作数之间的关系成立,则返回值为1;关系不成立,则返回0;若某一个操作数的值不定,则关系是模糊的,返回的是不定值X;关系运算符共有以下8种:

> >= < <= == != === !==
大于 大于等于 小于 小于等于 逻辑相等 逻辑不相等 实例相等 实例不相等

4. 逻辑运算符

对运算符两边操作数进行操作,返回“True”或“FALSE”。

&& || !
逻辑与 逻辑或 逻辑非

逻辑运算符的真值表

a b !a !b a&&b a||b
1 1 0 0 1 1
1 0 0 1 0 1
0 1 1 0 0 1
0 0 1 1 0 0

5. 条件运算符

条件运算符格式如下:

y = x ? a : b;      // 若y = x为True,返回操作数a,否则返回第三个操作数b。

嵌套的条件运算符可以多路选择:

assign s = (a >= 2) ? 1: (a < 0) ? 2:0;   //当a >= 2时,s = 1 ; 否则继续执行下一个条件选择选择;即当a < 0时,s = 2;若0 <= a < 2时,s = 0;

6 . 位运算符

位运算对其自变量的每一位进行操作,如S1 & S2 的含义就是S1 和 S2 的对应位相与。

& ^ ^~ ~& ~
异或 同或 与非 或非

7. 移位运算符

移位运算符有两种: “<<”(左移)和“>>”右移,左移相当于乘2,右移一位相当于除2。

S1 << N,其含义是将第一个操作数S1向左移位,所移动的位数由N决定,且用0来填补移出的空位。

8. 拼接运算符

拼接运算符可以将两个或多个信号的某些位拼接起来进行运算操作,格式如下:

{S1, S2, ......, Sn}

例: 拼接符的Verilog实现

reg [15:0] shiftreg;

always @(posedge clk)

          shiftreg [15:0] <= {shiftreg [14:0],data_in} ;

优先级总结: 

名称 运算符 优先级
求非,求反 ~ !
乘,除,取模 *,/,%  
加,减 +,-
移位 << , >>
关系 < , < = , > , > =
等式 = = , != , = = = , != =
按位与 &,~&
按位异或 ^ , ~^
按位或 | , ~ |
逻辑与 &&
逻辑或 ||
选择 ? :

注:由上至下,优先级由高到低;

参考: 《无线通信FPGA设计》田耕 徐文波 张廷伟等.

标签:操作数,优先级,逻辑,线网,运算符,Verilog,赋值
From: https://www.cnblogs.com/amxiang/p/16731866.html

相关文章

  • 数据类型,bool,tuple,set,用户交互,格式化输出,运算符
    基本数据类型之布尔值bool1.用来判断事物的对错是否可行只要用于流程控制中2.只有两种状态True对的真的可行的False错的假的不可行的3.python中所有......
  • 运算符
    一、算数运算符符号描述实例+加print(1+1)输出结果为2-减print(1-1)输出结果为0*乘print(2*2)输出结果为4/除print(4/2)输出结果为2//整除......
  • Java基础语法 三元运算符
    格式优先级packageBasicGrammar.day03;/*运算符之五:位运算符(了解)结论:1.位运算符操作的都是整型的数据2.<<:在一定范围内,每向左移1位,相当于*2>>:在一......
  • Java基础语法 位运算符
    定义结论:1.位运算符操作的都是整型的数据2.<<:在一定范围内,每向左移1位,相当于*23.>>:在一定范围内,每向右移1位,相当于/2packageBasicGrammar.day03;/*运算符......
  • verilog学习
    可综合/不可综合可综合:语法结构能与实际硬件电路对应起来不可综合:语法结构不能与实际硬件电路对应起来可综合语句:input、output、parameter、reg、wire、always、assign......
  • 常见的css样式 弹性布局 css优先级
    1.工作常用到的添加手势cursor:pointer2.弹性布局display:flex参考如下:   3.css的优先级参考如下: ......
  • 运算符
    运算符运算符算数运算符+-*/%++--赋值运算符=关系运算符><>=<===!=instanceof逻辑运算符(boolean)与&&或||非!位运算符&|^~>><<>>>......
  • 枚举、Flags和位运算符
    如果你是一个游戏开发者,你可能很熟悉描述一个特性的不同变化的需要。无论它是哪种攻击类型(近战、冰、火、药丸。。。),或是敌人的状态(空闲、警戒、追逐、攻击、休息。。。),你......
  • Nginx的location优先级
    在nginx配置文件中,location主要有这几种形式:语法:location[=|^~|~|~*|@]/uri/{…}功能:根据URI的不同需求进行配置,可以使用字符串与正则表达式匹配。如果要使用正......
  • JS数据类型及运算符
     一.数据类型js的数据类型分为原始型数据类型和引用型类型原始类型分为数值型、字符串型、布尔型、未定义型、空​1、数值型常见数字​浮点型1.232.343.1415e1=>31.41......