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的运算符及优先级相关推荐
- Verilog HDL——运算符
1.1 逻辑运算符 在Verilog HDL语言中有三种逻辑运算符: 1)&&逻辑与: 2)|| 逻辑或: 3)! 逻辑非. "&&"和" ...
- Verilog初级教程(9)Verilog的运算符
博文目录 写在前面 正文 Verilog算术运算符 Verilog关系运算符 Verilog等价运算符 Verilog逻辑运算符 Verilog位元运算符 Verilog移位运算符 参考资料 交个朋友 ...
- VC++运算符与优先级
C++的优先级 优先级 操作符 结合性 01: :: 左 02: . -> [] () 左 03: ++ -- ~ ! - + & * ...
- C语言语法之运算符及优先级
注:该内容整理自以下链接. http://blog.csdn.net/huangblog/article/details/8271791 表:C语言运算符及优先级 优先级 运算符 名称或含义 使用形式 ...
- (4)javascript的运算符以及运算符的优先级
运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为算术运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符等. ...
- 运算符中,优先级高低总结。
运算符中,优先级高低总结.
- 判断一个整数是否是水仙花数 || 编写程序,根据输入的月份和年份,求出该月的天数(1-12)|| 运算符的优先级问题 ||输出小写的a-z以及大写的Z—A||求出1-1/2+1/3-1/4…..1/
判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数, 其各个位上数字立方和等于其本身.例如: 153 = 1*1*1 + 5*5*5 + 3*3*3 ...
- c++自底向上算符优先分析_c语言运算符的优先级
点击上方关注我们获取更多 运算符的优先级&结合性 当c语言出现表达式时,表达式的运算结果就会和运算符的优先级有关,优先级高的先运算.优先级相同时,根据运算符的结合性,左结合的运算符先算左边,右 ...
- 15、MySQL运算符的优先级
运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,下表列出了 MySQL 中的各类运算符及其优先级. 优先级由低到高排列 运算符 1 =(赋值运算).:= 2 II.OR 3 XOR 4 &a ...
最新文章
- jquery的sortable拖拽排序问题,在页面上多次拖拽保存顺序之后,刷新页面,排序出现紊乱
- mysql 查询 distinct_MYSQL查询数据(二)SELECT | DISTINCT
- Arduino--库函数头文件
- android中布局全屏,怎么在Android 应用中实现一个全屏与非全屏功能
- python安装后怎样配解释器_入门Python第一步:如何安装Python解释器「新手必看」...
- c语言保留三位小数用float,float保留三位小数
- VS2012安装教程
- Linux C 信号量
- Google Chrome 提示 Adobe Flash Player 不是最新版本
- php6简介,[PHP框架] ThinkPHP6 介绍、安装及配置
- mysql rand 范围_MySQL的指定范围随机数函数rand()的使用技巧
- centos8搭建ftp虚拟用户登录
- JavaScript教程-18-JavaScript中的内置对象Global
- Spring Mvc - 用户注册服务端生成默认头像实现
- vs智能提示英文转为中文
- 考研中国科学院大学计算机分数线,中国科学院大学2017年考研分数线
- 一度智信:2021电商运营教程
- 计算机网络(4)传输层
- 模拟招聘大赛题目关于计算机,模拟招聘大赛活动策划书范文
- Shell脚本:数组(穿插四种排序算法)
热门文章
- python自动寻路算法_python实现Dijkstra静态寻路算法
- 【IPTV】Hybrid Video解决方案概念与价值
- bios 刷 灵耀14_华硕灵耀14 2020深度体验——这才是正统轻薄本
- 发票专用驱动sjz_“数智企业财税云领”增值税专用发票主题交流会圆满举办| 从专票电子化开始 开启企业数智化之旅...
- User: root is not allowed to impersonate anonymous (state=08S01,code=0)
- 入门版XNA开发套件供玩家开发X360游戏
- 太极软件qn的代码_超详细介绍如何利用太极+QN框架制作一个属于自己的QQxml卡片...
- java 字符串 复制_Java字符串复制
- 代码随想录算法训练营第七天
- 中国RPA 未来趋势