Verilog基本语法——运算符和表达式
来源:互联网 发布:2017流行网络用语 编辑:程序博客网 时间:2024/06/16 15:33
本文是Verilog学习笔记,参考于《Xilinx FPGA开发实用教程》和夏宇闻老师的Verilog经典教程系列
在Verilog HDL语言中运算符所带的操作数是不同的,按其所带操作数的个数运算符可分为三种:
1) 单目运算符(unary operator):带一个操作数,操作数放在运算符的右边。
2) 二目运算符(binary operator):带二个操作数,操作数放在运算符的两边。
3) 三目运算符(ternary operator):带三个操作,这三个操作数用三目运算符分隔开。
1.基本的算术运算符
在Verilog HDL语言中,算术运算符又称为二进制运算符,共有下面五种:
1. + ———— 加法运算符或正值运算符(s1+s2,+3)
2. - ———— 减法运算符或负值运算符(s1-s2,-5)
3. * ———— 乘法运算符(s1*3)
4. / ———— 除法运算符(s1/3)
5. % ———— 模运算符(s1%3)
2. 赋值运算符
赋值运算符分为连续赋值和过程赋值两种
2.1 连续赋值
连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值
基本语法格式:
线网型变量类型[线网型变量位宽] 线网型变量名;assign #(延时量) 线网型变量名 = 赋值表达式// wire a;// assign a = 1'b1
2.2 过程赋值
过程赋值主要用于两种结构化模块(initial模块和always模块)中的赋值语句。在过程块中只能使用过程赋值语句(不能在过程块中出现连续赋值语句),同时过程赋值语句也只能用在过程赋值模块中
基本格式为:
<被赋值变量><赋值操作符><赋值表达式>// reg c;// always @(a)// begin// c = 1'n0;// end
<赋值操作符>是”=”或”<=”(分别代表了阻塞赋值和非阻塞赋值)
过程赋值变量只能对寄存器类型变量(reg,integer,real和time)进行操作
2.3 关系运算符
关系运算符公有以下8种:
1. > ———— 大于;
2. >= ———— 大于等于;
3. < ———— 小于;
4. <= ———— 小于等于
5. == ———— 逻辑相等
6. != ————逻辑不相等
7. === ———— 实例相等
8. !== ———— 实例不相等
在进行关系运算符时,如果操作数之间的关系成立,返回值为1;关系不成立,则返回值为0;若一个操作数的值不定,则关系是模糊的,返回值是不定值X
2.4 逻辑运算符
在Verilog HDL语言中存在三种逻辑运算符:
1. && 逻辑与
2. || 逻辑或
3. ! 逻辑非
“&&”和”||”是双目运算符,它要求有两个操作数,”!”是单目运算符,只要求一个操作数
2.5 条件运算符
条件运算符格式:
y = x ? a : b
三个操作数,若x是True(1),返回a,否则返回b
2.6 位运算符
针对硬件电路而言,在硬件电路中信号有四种状态值
1,0,x,z.在电路中信号进行与或非时,反映在Verilog HDL中则是相应的操作数的位运算
逻辑运算符:
1. ~ ———— 非
2. & ———— 与
3. | ———— 或
4. ^ ———— 异或
5. ^~ ———— 同或
6. ~& ———— 与非
7. ~| ———— 或非
2.7 移位运算符
移位运算符:
1. “<<” ———— 左移 (左移一位 相当于乘2)
2. “<<” ———— 右移 (右移一位 相当于除2)
格式:
s1<<NS1>>N
2.8 拼接运算符
拼接运算符可以将两个或更多信号的某位并接起来进行运算操作
格式:
{s1 , s2 , ... , sn}
将某些信号的某些位详细地列出来,中间用逗号隔开,最后一个大括号表示一个整体信号
2.9 一元约简运算符
一元约简运算符是单目运算符,其运算规则类似于位运算符中的与、或、非,但其运算过程不同
约简运算符对单个操作数进行运算,最后返回一位数,运算过程:将操作数第一位和第二位进行与或非运算;再将第二位和第三位进行与或非运算直到最后一位
reg [3:0]s1;reg s2;s2 = &s1; //&为一元约简运算符"与"
- Verilog基本语法——运算符和表达式
- Verilog基本语法——模块
- Python笔记——基本语法:标识符、数据类型、变量、运算符及表达式/编码风格
- Python笔记——基本语法:标识符、数据类型、变量、运算符及表达式/编码风格
- Java——基本语法(二)变量,常量,运算符,表达式
- 基本运算符和表达式
- Verilog基本语法——数据类型及常量集合
- 二.Python的基本语法の (二)运算符和表达式
- 正则表达式—基本语法
- EL表达式的基本语法 []与.运算符 操作符
- Verilog的基本语法
- verilog的基本语法
- Verilog HDL——移位运算符
- 第三章 基本运算符和表达式
- 二、基本数据类型、运算符和表达式
- J2SE学习笔记3 — Java基本语法(3)变量和运算符
- PHP基本语法(二)—— 运算符
- Verilog学习笔记基本语法篇(二)·········运算符
- java排列组合变形汇总【经典】
- ORM
- 数据库四:浅谈数据库查询过程(Query Processing)
- Σd|nφ(d)=n的证明
- Java上手小项目(一)-太阳系模型笔记
- Verilog基本语法——运算符和表达式
- 康托展开,用于全排列的hash
- 所以引进了Optional的概念
- 《专注力--化繁为简的惊人力量》之创造力的30天
- 2017.9.15 模拟考试
- 47902376209184:error:0D0DC0C6:asn1 encoding routines:ASN1_item_sign_ctx:digest and key type not supp
- Windows核心编程--错误处理/字符/字符串
- 自学python笔记之一
- VS2015创建的MVC5显示异常解决方法参考