Barry618

导航

Verilog中的运算符及其相关基础知识

一、基本运算符

1.算术运算符:加(+)  减( -)   乘(*)    除(/)    取模(%)  求幂(**)。

(1)%是取模运算符:a % b 按照a 和 b中的长度长的补齐。两个参数都为有符号数结果为有符号数,否则为无符号数;

(2)**是求幂运算符:a**b表示a的b次方,即a表示底数,b表示指数;

(3)除法只能取整数;

2.关系运算符:大于(>)    小于(<)     小于等于(<=)    大于等于(>=)   

(1)(==)参与比较的两个操作数必须逐位相对,其结果才为1,如果某些值是不定态X或高阻态Z,那么得到的结果是不定值X;

(2)(===)参与运算的操作数中不定态X或高阻态Z的位也进行比较,两个操作数必须完全一致,其结果才为1,否则结果为0;     

(3)(!=)和(!==)的用法类似;

3.逻辑运算符:逻辑非(!)   逻辑与(&&)      逻辑或(||)

4.位运算符:按位非(~)    按位与(&)     按位或(|)     异或(^) 同或(~^)

(1)异或(^)举例:0+0=0 1+0=1 1+1=0

(2)同或(~^)举例:0+0=1 1+0=0 1+1=1

5.归约运算符:归约与(&)    归约与非(~&)     归约或(|)     归约或非(~|)    归约异或(~^)

注意:归约运算符的操作数只有一个,并只产生一位结果:举例a=0101,则&a=0(a中的所有位进行与操作); |a=1(a中的所有位进行或操作);

6.条件操作符(C语言中的三目运算符):a ? b :c         该式中a为条件表达式,b和c为待选的执行表达式:如果a为真,则选择执行b,否则执行c;

7.移位运算符:逻辑左移(<<)     逻辑右移(>>)   算术左移(<<<)     算术右移(>>>)

(1)逻辑左移和算术左移相同,都是在最低位补0,忽略操作数的符号;

(2)逻辑右移在最高位补0,忽略操作数的符号;算术右移对于有符号数,高位补充值和符号位相同,对于无符号数,高位补0;

8.拼接运算符:{a,b}     把位于大括号“{ }”中的两个及以上用“,”分隔的小表达式连接在一起,形成一个大表达式

9.赋值运算符

(1)阻塞型(=):常用于组合逻辑电路和时序逻辑电路;在该语句结束时就立即完成赋值操作;语句顺序执行       

(2)非阻塞型(<=):常用于时序逻辑电路,在整个过程语句结束时才会完成赋值操作;语句并列执行

注意:同一module中不能同时出现这两种赋值运算符;

10.特殊运算符

(1)a+:b为片选,即从a开始到a+b的位(举例:reg q [2+:5]类似于reg q [6:2])

 

二、运算符的优先级:

 

三、逻辑符号和逻辑图形符号

                    

 

四、基础知识

1.电平状态:高电平(1)  低电平(0)    未知电平(X)   高阻态(Z)

(1)高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定的.

2.进制: 二进制(b)    八进制(o)    十进制(d)   十六进制(h)

举例:4’hf:表示4位十六进制的f,即1111.        4‘b1010:表示4位二进制的1010,即1010.

3.变量:

 

 

 

 

4.独热码:One-Hot编码,又称为一位有效编码,主要是采用n位状态寄存器来n个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。

https://blog.csdn.net/baidu_31437863/article/details/83788786

 

posted on 2022-03-01 13:34  Barry618  阅读(8277)  评论(0编辑  收藏  举报