一、基本运算符
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