Verilog HDL的语言的运算符的范围很广,按照其功能大概可以分为以下几类:

(1)算术运算符 +,-,*,/,%

优先顺序

!~

*  /   %

+    -

<<    >>

<    <=  >   >=

==  !==  === !===

&

^  ^~

|

&&

||

?:

最高优先级别

最低优先级别

(2)赋值运算符 =,<=

(3)关系运算符> ,<,>=,<=

(4)逻辑运算符 &&, ||, !

(5)条件运算符 ?:

(6)位运算符 ~, | , ^ ,& ,^~

(7)移位运算符 << ,>>

(8)拼接运算符 {}

(9)其他。

1)基本的算术运算符:加减乘都比较简单这里不再记录。

在进行整数的除法运算时,结果要略去小数部分,只取整数部分;而进行取模运算时(%,亦称作求余运算符)结果的符号位采用模运算符中第一个操作数的符号。

-10%3  结果 -1  11%-3  结果为2

注意:在进行算术运算时,如果某一个操作数有不确定的值x,则整个结果也为不确定值x。

2)位运算符:

按位取反~ 、按位与 & 、按位或 | 、按位异或 ^ 、按位同或 ^~

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

3)逻辑运算符:

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

其中&&和||是双目运算符,其优先级别低于关系运算符,而 !高于算术运算符。

4)关系运算符

< 、 > 、  <=  、  >= 如果关系运算是假的,则返回值是0,如果声明的关系是真的,则返回值是1。 关系运算符的优先级别低于算数运算符。

如:  a<size-1                //这种表达方式与下面的表达方式相同

a<(size-1)             //

size-1<a               //这种表达方式与下面的表达方式不同

size-(1<a)            //

5)等式运算符

== 、!= 、===、!==  符号之间不能有空格。

“==”和“!=”称作逻辑等式运算符,其结果由两个操作数的值决定。由于操作数可能是x或z,其结果可能为x;

“===”和“!==”常用于case表达式的判别,又称作cae等式运算符。其结果只为0和1.如果操作数中存在x和z,那么操作数必须完全相同结果才为1,否则为0.

逻辑等式运算符和case等式运算符的区别:

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

6)移位运算符

<< 、 >>  a>>n其中a代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。

如果操作数已经定义了位宽,则进行移位后操作数改变,但是其位宽不变。

/*不懂之处;(夏宇闻第三版,p41)

4'b1001<<1=5'b10010;    4'b1001<<2=6'b100100;   (左移会使得位数增加?)

1<<6=32'b1000000;        4'b1001>>1=4'b0100;       (右移不会改变位数?)

4‘b1001>>4=4'b0000;

*/

7)位拼接运算符

{信号1的某几位,信号2的某几位,......信号n的某几位} 将某些信号的某些为列出来,中间用逗号分开,最后用大括号括起来表示一个整体的信号。

在位拼接的表达式中不允许存在没有指明位数的信号。

{a,b[3:0],w,3'b101}               //等同于{a,b[3],b[2],b[1],b[0],w,1b'1,1'b0,1'b1}

{4{w}}                                   //等同于{w,w,w,w}

{b,{3{a,b}}}                          //等同于{b,a,b,a,b,a,b}  这里面的3、4必须是常量表达式。

8)缩减运算符

这是单目运算符,也包括与、或、非运算。运算规则与位运算相似,不过是对单个运算符的每一位逐步运算,最后的运算结果是一位的二进制数。

c=&B;          //意思同c=((B[0]&B[1]) &B[2] ) & B[3];

Verilog学习笔记基本语法篇(二)·········运算符的更多相关文章

  1. Verilog学习笔记基本语法篇(十二)········ 编译预处理

    h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...

  2. Verilog学习笔记基本语法篇(九)········ 任务和函数

    task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试.任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段.输入. ...

  3. Verilog学习笔记基本语法篇(一)·········数据类型

    Verilog中共有19种数据类型. 基本的四种类型: reg型.wire型.integer型.parameter型. 其他类型:large型.medium型.small型.scalared型.tim ...

  4. Verilog学习笔记基本语法篇(十一)········ 常用系统函数

    1)系统任务:$monitor   格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...

  5. Verilog学习笔记基本语法篇(十三)...............Gate门

    Verilog中已有一些建立好的逻辑门和开关的模型.在所涉及的模块中,可通过实例引用这些门与开关模型,从而对模块进行结构化的描述. 逻辑门: and (output,input,...) nand ( ...

  6. Verilog学习笔记基本语法篇(十)········ 常用系统函数

    $display 和 $write 任务 格式: $display (p1,p2,...,pn); $write (p1,p2,..,pn); 这两个函数和系统的任务作用是用来输出信息,即将参数p2到 ...

  7. Verilog学习笔记基本语法篇(七)········ 生成块

    生成块可以动态的生成Verilog代码.可以用于对矢量中的多个位进行重复操作.多个模块的实例引用的重复操作.根据参数确定程序中是否包含某段代码.生成语句可以控制变量的声明.任务和函数的调用.还能对实例 ...

  8. Verilog学习笔记基本语法篇(八)········ 结构说明语句

    Verilog中的任何过程都可以属于以下四种结构的说明语句; 1) initial;  2) always;  3) task;   4) function; 1) initial说明语句: 一个程序 ...

  9. Verilog学习笔记基本语法篇(六)········ 循环语句

    在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数. 1)forever语句: 连续执行的语句. 2)repeat语句:  连续执行n次的语句. 3)while语句:    执行语 ...

随机推荐

  1. CentOS Linux 搭建 SVN(CollabNet Subversion)服务器

    安装CollabNet Subversion之前必须先安装JDK1.6和python2.4 ~ 2.6 groupadd svn useradd -g svn svnuser  passwd svnu ...

  2. L. Right Build bfs

    http://codeforces.com/gym/101149/problem/L 给出一个有向图,从0开始,<u, v>表示要学会v,必须掌握u,现在要学会a和b,最小需要经过多少个点 ...

  3. 《深入理解java虚拟机》笔记(1)运行时数据区域

    1.Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来. 2.运行时数据区域划分 java虚拟机在执行java程序的过程中会把它所管理的内存划 ...

  4. IIS+PHP访问量大时内存爆满等性能问题解决方案

    如今还是有许多人在用老掉牙的 IIS6 + PHP.本文解决方法适用于使用 FastCGI 运行 PHP 的用户. 问题原因: 你可以试一试,你在 VPS 上用 IIS6 安装 FastCGI 跑 P ...

  5. Nginx 配置https 开启ssl 同时支持http

    server { listen ; listen 443 ssl; server_name default; index index.html index.php; root /www/html; a ...

  6. jQuery3.2.1 和2.0和 1区别

    1. 移除旧的IE工作区新的最终版最主要的目标是更加快速,更加时尚,因此,那些支持早于IE9版本的相关技术与工作区都被移除了.这意味着如果你想要或者需要支持IE6-8,你必须用回1.12版本,因为甚至 ...

  7. SQL问题:未启用当前数据库的 SQL Server Service Broker

    数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...

  8. 一次性删除数据库所有表和所有存储过程 SQL语句

    一次性删除数据库所有表和所有存储过程 SQL语句 今天转移数据库数据,需要把数据库原来的表和存储过程清空.删除所有的表:如果由于外键约束删除table失败,则先删除所有约束: --/第1步****** ...

  9. 洛谷 P3183 [HAOI2016]食物链

    题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3.... ...

  10. @AutoWired注解使用时可能会发生的错误

    @Autowired注解:用于对Bean的属性变量.属性的set方法及构造函数进行标注,配合对应的注解处理器完成Bean的自动配置工作.@Autowired注解默认按照Bean类型进行装配.  1.在 ...