Complex Multiplier ブロックは、ユーザーが指定したオプションに基づいて、デバイスに AXI4-Stream 準拠の高性能で最適化された複素乗算器をインプリメントします。
2 つの被乗数入力とオプションの丸めビットは、スレーブ インターフェイスとして独立した AXI4-Stream チャネルで入力され、結果の積は AXI4-Stream マスター インターフェイスで出力されます。
各チャネル内で、オペランドおよび結果は、符号付き 2 の補数フォーマットで出力されます。オペランドや結果のビット幅はパラメーター指定可能です。
ブロック パラメーター
- Page 1 タブ
-
Basic タブには、次のパラメーターがあります。
- [Channel A Options]
-
- Has TLAST
- ブロックの A チャネルに tlast 入力ポートを追加します。
- Has TUSER
- ブロックの A チャネルに tuser 入力ポートを追加します。
- TUSER Width
- ユーザーが定義します (1 から 256 まで)。
- [Channel B Options]
-
- Has TLAST
- ブロックの B チャネルに tlast 入力ポートを追加します。
- Has TUSER
- ブロックの B チャネルに tuser 入力ポートを追加します。
- TUSER Width
- ユーザー定義の値で、1 ~ 256 の値を指定します。
- [Multiplier Construction Options]
-
- Use_Mults
- エンベデッドされた乗算器/XtremeDSP スライスを使用します。
- Use_LUTs
- 乗算器を構築するのに、ファブリックの LUT を使用します。
- Optimization Goal
- [Use_Mults] が選択されている場合のみ使用可能です。
- Resources
- 3 実数乗算構造を使用します。ただし、3-1 乗算構造でより多くの乗算リソースが使用される場合は、4 実数乗算構造が使用されます。
- Performance
- 最高の周波数パフォーマンスを達成できるよう、常に 4 実数乗算構造を使用します。
- Flow Control Options
-
- Blocking
- ブロッキング モードを選択します。このモードでは、1 つの入力チャネルにデータがない場合、データが別の入力チャネルで受信されたときに、演算の実行がブロックされます。
- NonBlocking
- ノンブロッキング モードを選択します。このモードでは、1 つの入力チャネルにデータがない場合でも、データが別の入力チャネルで受信されたときに、演算の実行はブロックされません。
- [Page 2] タブ
-
- [Output Product Range]
-
出力ビット幅を選択します。A および B のオペランド幅を設定すると、自動的に全精度の積になるように値が設定されます。出力は、必要に応じて符号拡張されます。
複素乗算の自然数の出力幅は、(APortWidth + BPortWidth + 1) です。出力幅をこれより狭く設定している場合、結果の最上位 (MSB) ビットが出力され、残りのビットは選択されている [Output Rounding] オプションに従って切り捨てられるか丸められます。つまり、出力の MSB は (APortWidth + BPortWidth) に固定されます。詳細は、https://japan.xilinx.com/cgi-bin/docs/ipdoc?c=cmpy;v=v6_0;d=pg104-cmpy.pdf の製品ガイドを参照してください。
- Output Rounding
- 丸めが必要な場合、出力の LSB がゼロよりも大きい値である必要があります。
- Truncate
- 出力を切り捨てます。
- Random_Rounding
- このオプションを選択すると、ブロックに ctrl_tvalid および ctrl_tdata の入力ポートが追加されます。ctrl_tdata 入力ポートが演算の丸めの種類を決定する場合はビット 0 です。詳細は、 『Complex Multiplier LogiCORE IP 製品ガイド』 (PG104) の丸めに関するセクションを参照してください。
- [Channel CTRL Options]
- [Random Rounding] を選択した場合、次のオプションが有効になります。
- Has TLAST
- ブロックに ctrl_tlast 入力ポートを追加します。
- Has TUSER
- ブロックに ctrl_user 入力ポートを追加します。
- TUSER Width
- Ctrl_tuser 入力ポートのビット幅を指定します。
- [Output TLAST Behavior]
- dout_tlast 入力ポートの動作を指定します。
- Null
- 出力はヌルになります。
- Pass_A_TLAST
- a_tlast 入力ポートの値を dout_tlast 出力ポートに渡します。
- Pass B_TLAST
- b_tlast 入力ポートの値を dout_tlast 出力ポートに渡します。
- Pass CTRL_TLAST
- a_tlast 入力ポートの値を dout_tlast 出力ポートに渡します。
- OR_all_TLASTS
- 表示されているすべての TLAST 入力ポートの論理 OR を渡します。
- AND_all_TLASTS
- 表示されているすべての TLAST 入力ポートの論理 AND を渡します。
- Core Latency
-
- Latency Configuration
-
- Automatic
- 最高のパフォーマンスを達成するため、Model Composer で基になる LogiCORE™ をパイプライン処理することにより、ブロックのレイテンシを自動的に決定します。
- Manual
- ブロック レイテンシを最小値を指定して調整します。
- Minimum Latency
- ブロック レイテンシの最小値を手動で指定します。
- Control Signals
-
- ACLKEN
- コアのクロック イネーブル (
aclken
) を有効にします。コアのすべてのレジスタは、この制御信号により有効になります。 - ARESETn
- アクティブ Low の同期クリア入力。ACLKEN よりも優先されます。この信号にはパフォーマンスのため内部でレジスタが付けられているので、2 サイクル以上の ARESETn アクティブ パルスが必要です。1 サイクルのパルスでコアはリセットされますが、パルスに対する応答はその直後のサイクルでは現れません。
- Advanced タブ
- ブロック アイコンの表示
- Display shortened port names
- デフォルトでオンになっています。たとえば、オフになっている場合は、dout_tvalid が m_axis_dout_tvalid になります。
LogiCORE 資料
『Complex Multiplier LogiCORE IP 製品ガイド』 (PG104)