Verilog运算符(Operators)
运算符有三种形式:
- 运算符+操作数
- 符号运算符(+ -)
- 逻辑非(!)
- 按位取反(~)
- 约简(& ~& | ~| ^ ~^ ^~)
- 操作数+运算符+操作数
- 算术运算(+ - * / **)
- 取模(%)
- 比较(> >= < <=)
- 逻辑运算(&& ||)
- 逻辑等(== !=)
- 条件等(=== !===)
- 按位(& ~& | ~| ^ ~^ ^~)
- 移位(<< >> <<< >>>)
- 其他运算符
- 选择运算符(? :)
- 连接运算({M, N})
- 重复运算({N{M}})
- 触发(->)
运算优先级:
+ - ! ~ (unary) // 高优先级
* / % **
+ - (binary)
<< >> <<< >>>
< <= > >=
== != === !==
& ~&
^ ~^
| ~|
&&
||
?: // 低优先级
* / % **
+ - (binary)
<< >> <<< >>>
< <= > >=
== != === !==
& ~&
^ ~^
| ~|
&&
||
?: // 低优先级
例子
- A + B
- A && B || C && D // same as (A && B) || (C && D)
- ~4’b1001 // Gives 4’b0110
- &4’hF // Gives 1’b1 as all bits are 1
A + B
A && B || C && D // same as (A && B) || (C && D)
~4'b1001 // Gives 4'b0110
&4'hF // Gives 1'b1 as all bits are 1
本文转自:https://blog.csdn.net/QQ604666459/article/details/59496086
今日在见到一段Verilog代码,让我有些摸不着头,代码内容如下:
if (&compare_valid & rdata_valid_flag_reg & pnf_persist_compare) pnf_persist1 <= 1'b1; else pnf_persist1 <= 1'b0;
常用的约简运算符的关键字和位操作符关键字一样,仅仅由单目运算和双目运算的区别。
如果看到这里依然不能理解的我给出一个一元简约运算符的 Verilog 实例如下:
wire [3 : 0] wire1; wire wire2; assign wire1 = 4'b1010; assign wire2 = &wire1; //&即为一元约简运算符“与”
其等效为:
wire [3 : 0] wire1; wire wire2; assign wire1 = 4'b1010; assign wire2 = wire1[0] & wire1[1] & wire1[2] & wire1[3]; //即为一元约简运算符“与” 等效效果
相信这些可以让更多人理解了吧。
本文转自:https://www.cnblogs.com/kuvon/archive/2013/04/02/2996463.html
Verilog运算符(Operators)
运算符有三种形式:
- 运算符+操作数
- 符号运算符(+ -)
- 逻辑非(!)
- 按位取反(~)
- 约简(& ~& | ~| ^ ~^ ^~)
- 操作数+运算符+操作数
- 算术运算(+ - * / **)
- 取模(%)
- 比较(> >= < <=)
- 逻辑运算(&& ||)
- 逻辑等(== !=)
- 条件等(=== !===)
- 按位(& ~& | ~| ^ ~^ ^~)
- 移位(<< >> <<< >>>)
- 其他运算符
- 选择运算符(? :)
- 连接运算({M, N})
- 重复运算({N{M}})
- 触发(->)
运算优先级:
+ - ! ~ (unary) // 高优先级
* / % **
+ - (binary)
<< >> <<< >>>
< <= > >=
== != === !==
& ~&
^ ~^
| ~|
&&
||
?: // 低优先级
* / % **
+ - (binary)
<< >> <<< >>>
< <= > >=
== != === !==
& ~&
^ ~^
| ~|
&&
||
?: // 低优先级
例子
- A + B
- A && B || C && D // same as (A && B) || (C && D)
- ~4’b1001 // Gives 4’b0110
- &4’hF // Gives 1’b1 as all bits are 1
A + B
A && B || C && D // same as (A && B) || (C && D)
~4'b1001 // Gives 4'b0110
&4'hF // Gives 1'b1 as all bits are 1
本文转自:https://blog.csdn.net/QQ604666459/article/details/59496086
今日在见到一段Verilog代码,让我有些摸不着头,代码内容如下:
if (&compare_valid & rdata_valid_flag_reg & pnf_persist_compare) pnf_persist1 <= 1'b1; else pnf_persist1 <= 1'b0;
常用的约简运算符的关键字和位操作符关键字一样,仅仅由单目运算和双目运算的区别。
如果看到这里依然不能理解的我给出一个一元简约运算符的 Verilog 实例如下:
wire [3 : 0] wire1; wire wire2; assign wire1 = 4'b1010; assign wire2 = &wire1; //&即为一元约简运算符“与”
其等效为:
wire [3 : 0] wire1; wire wire2; assign wire1 = 4'b1010; assign wire2 = wire1[0] & wire1[1] & wire1[2] & wire1[3]; //即为一元约简运算符“与” 等效效果
相信这些可以让更多人理解了吧。
本文转自:https://www.cnblogs.com/kuvon/archive/2013/04/02/2996463.html