logo

Verilog オペレーター

演算子は、式内の 1 つ以上のオペランドに対して演算を実行します。式はオペランドと適切な演算子を組み合わせて、目的の関数式を生成します。

1. 算術演算子

FPGA の場合、除算と乗算は非常に高価であり、除算を合成できない場合があります。値に Z または X を使用した場合、結果は不明です。この操作では、値が符号なしとして扱われます。

キャラクター 実行された操作
+ 追加 b + c = 11
- 減算 b - c = 9、-b=-10
/ 分ける b / a = 2
* かける a * b = 50
% 係数 b % a = 0

2. ビット演算子

各ビットが演算され、その結果が最大のオペランドのサイズとなり、小さい方のオペランドは大きい方のオペランドのサイズまでゼロで拡張されたままになります。

キャラクター 実行された操作
各ビットを反転する ~a = 3'b010
& そしてそれぞれのビット b & c = 3'b010
| あるいはビットごとに | b = 3'b111
^ 各ビットのXOR a ^ b = 3'b011
^~ または ~^ 各ビットをXnorします a ^~ b = 3'b100

3. リダクション演算子

これらの演算子はベクトルを 1 ビットのみに削減します。文字 z と x がある場合、結果は既知の値になる可能性があります。

キャラクター 実行された操作
& そしてすべてのビット &a = 1'b0、&d = 1'b0
~& すべてのビットをナンドします ~&a = 1'b1
| またはすべてのビット |a = 1'b1、|c = 1'bX
~| すべてのビットでもありません ~|a= 1'b0
^ すべてのビットの XOR ^a = 1'b1
^~ または ~^ すべてのビットを除外する ~^a = 1'b0

4. 関係演算子

これらの演算子はオペランドを比較し、結果は 1 ビットのスカラー ブール値になります。大文字小文字の等価演算子と不等号演算子は、不明な値または高インピーダンス値 (z または x) に使用でき、2 つのオペランドが不明な場合、結果は 1 になります。

キャラクター 実行された操作
> より大きい a > b = 1'b0
< より小さい ある
>= 以上 a >= d = 1'bX
<=< td> 以下 ある<= e='1'bX</td'>
== 平等 a == b = 1'b0
!= 不平等 a != b = 1'b1
=== 大文字と小文字の等価性 e === e = 1'b1
!=== 大文字と小文字の区別 そして !== d = 1'b1

5. 論理演算子

これらの演算子はオペランドを比較し、結果は 1 ビットのスカラー ブール値になります。

キャラクター 実行された操作
違います !(a && b) = 1'b1
&& どちらの式も真です a && b = 1'b0
|| 1 つまたは両方の式が true そして || b = 1'b1

6. シフト演算子

これらの演算子はオペランドを右または左にシフトし、サイズは一定に保たれ、シフトされたビットは失われ、ベクトルはゼロで埋められます。

中央のCSSボタン
キャラクター 実行された操作
>> 右にシフト b >> 1 結果 4?b010X
<< 左にシフト a << 2 件の結果 4?b1000

7. 代入演算子

3 つの代入演算子があり、それぞれが異なるタスクを実行し、異なるデータ型で使用されます。

  • assign (連続代入)
  • <= (non-blocking assignment)< li>
  • = (ブロッキング代入)

8. その他のオペレーター

これらは、条件のテストとベクトルの作成に使用される演算子です。

キャラクター 実行された操作
?: 条件テスト テスト条件? true の場合はこれを実行し、そうでない場合はこれを実行します
{} 連結する c = {a,b} = 8'101010x0
{{}} 複製する {3{2'b10}}= 6'b101010

9. 演算子の優先順位

表の順序は、どの操作が最初に行われるかを示します。最初のものが最も優先されます。 () を使用してデフォルトをオーバーライドできます。

演算子の優先順位
+、-、!、~ (単項)
+、- (バイナリ)
<>
,=
==、!=
&
^、^~ または ~^
|
&&
||
?: