iT邦幫忙

2021 iThome 鐵人賽

DAY 6
1
Software Development

verilog or very lag系列 第 6

【Day06】Dataflow Level

算術運算子

運算子 說明
+ 加法
- 減法
* 乘法
** 次方
/ 除法
% 取餘數

在這裡的 "/" 以及 "%" 撰寫時盡量少用,因為會非常耗硬體資源


二元運算子

運算子 說明
~ NOT
& AND
/(直的) OR
^ XOR

邏輯運算子

運算子 說明
! 邏輯NOT
&& 邏輯AND
//(也是直的) 邏輯OR

比較用的運算子

運算子 說明
> 大於
< 小於
>= 大於等於
<= 小於等於
== 等於
!= 不等於

左移及右移運算子

運算子 說明
>> 邏輯右移
<< 邏輯左移
>>> 算術右移
<<< 算術左移

在做二的次方倍的乘除法時,我們會使用左移及右移來避免使用乘法器

而邏輯移位跟算術移位的差別在於,邏輯移位不管左移還是右移,都會移 "0" 進來,而算術移位在右移時則會去依照數字的正負號來決定移入 "0" 還是 "1",正的話移入 "0",負則移入 "1"。


連結運算子

運算子 說明
{} 串接變數

EX:

a = {1'b0, 3'd7}        //a = 4'b0111
b = {4{1'b1}};          //b = 4'b1111;
c = {4{1'b1}, 3{1'b0}}; //c = 7'b1111000;


條件運算子

運算子 說明
?: if-else

EX:

c = (a==1'b1)?1'b0:1'b1;//等效c = !a,不過合成出來的電路不相同

上一篇
【Day05】Gate Level
下一篇
【Day07】Behavior Level
系列文
verilog or very lag30

尚未有邦友留言

立即登入留言