DSPCPLX パイプライン コンフィギュレーション

Versal ACAP DSP エンジン アーキテクチャ マニュアル (AM004)

Document ID
AM004
Release Date
2022-09-11
Revision
1.2.1 日本語

CINT18 モードで複素乗算アルゴリズムを完全に実装するには両方の DSP58 の前置加算器と乗算器を連携動作させる必要があるため、有効なパイプライン コンフィギュレーションは限られます。DSPCPLX UNISIM では各パイプライン段をユーザーから見えるようにプログラムできます。ただし、無効な属性値を指定するとソフトウェア DRC が発生するため、属性の設定を変更する必要があります。次の 2 つの表に、複素数モードで入力のバランスがとれている場合と、プログラマブル ロジックで入力のバランスをとる必要がある場合の有効な属性値を示します。これらの表に示した以外の入力パイプラインの組み合わせはすべて無効で、オペランドが正しく並ばず無効な結果となります。その次の図は、複素 MACC の概略ブロック図です。

注記: *_A および *_B で表される共役入力は、これらが実数部および虚数部ではなく 2 つの複素入力に対するものであることを示します。また、ラベル A_RE、B_RE、A_IM、および B_IM は信号の物理的なソースを示しています。内部では、これらの信号は両方の DSP58 に入力されます。
表 1. CINT18 モードのプログラマブル レジスタの属性 (入力のバランスがとれている場合の有効なユース ケース)
AREG_RE BREG_RE ADREG AREG_IM BREG_IM 説明 CONJUGATE 入力 (RE、IM) に必要なレジスタ遅延 2 レイテンシ (入力ピンから MREG 入力まで)
0 0 0 0 0 有効なケース、すべてのレジスタをバイパス 0 0
1 1 0 1 1 有効なケース、バランスのとれたパイプライン 1 1 1
2 2 1 2 2 有効なケース、完全パイプライン モード 1 2
  1. ADREG を 0 に設定すると、DSP は AREG および BREG レジスタの 2 段入力パイプラインの最初のレジスタの出力を内部で選択します。
  2. CONJUGATE 入力 (RE と IM) で必要なレジスタ遅延の値は、CONJUGATEREG = 1 と設定するか、プログラマブル ロジック (PL) で INMODE 入力を 1 クロック サイクル分バランスをとる (PL でレイテンシを追加して CONJUGATEREG = 0 と設定する) ことによって確保できます。
表 2. CINT18 モードのプログラマブル レジスタの属性 (PL で入力のバランスをとる必要がある場合の有効なユース ケース)
AREG_RE BREG_RE ADREG AREG_IM BREG_IM 説明 1 CONJUGATE 入力 (RE、IM) に必要なレジスタ遅延 2 レイテンシ (入力ピンから MREG 入力まで)
0 0 0 0 1 A_RE、B_RE、A_IM 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 0 1 (B_IM ピンから)
0 1 0 0 0 A_RE、B_IM、A_IM 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 0 1 (B_RE ピンから)
0 1 0 0 1 A_RE、A_IM 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 0 1 (B_RE および B_IM ピンから)
1 0 0 1 0 B_RE、B_IM 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 1 1 (A_RE および A_IM ピンから)
1 0 0 1 1 B_RE 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 1 1 (A_RE、A_IM および B_IM ピンから)
1 1 0 1 0 B_IM 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 1 1 (A_RE、B_RE、A_IM ピンから)
1 2 0 1 0 BREG_IM 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 1 1 (A_RE、B_RE、A_IM ピンから)
1 0 0 1 2 BREG_RE 入力は、ロジックで 1 クロック サイクル分のバランスをとる必要があります。 1 1 (A_RE、A_IM、B_RE ピンから)
  1. 入力のバランスが必要な条件

    ADREG == 0 && { [(AREG_RE==0 && AREG_IM==0) && (BREG_RE==1 || BREG_IM==1)] || [(AREG_RE==1 && AREG_IM==1) && (BREG_RE==0 || BREG_IM==0)] }

  2. CONJUGATE 入力 (RE と IM) で必要なレジスタ遅延の値は、CONJUGATEREG = 1 と設定するか、プログラマブル ロジック (PL) で INMODE 入力を 1 クロック サイクル分バランスをとる (PL でレイテンシを追加して CONJUGATEREG = 0 と設定する) ことによって確保できます。
図 1. CINT18 モードの 18 × 18 複素乗算器および 58 + 58 複素アキュムレータの概略ブロック図

DSPCPLX 構成での CE の使用

次に、DSPCPLX 構成での CE の使用について説明します。
バランスのとれたパイプライン (ケース 2)
CEA1 と CEB1 (_RE/_IM) のみで正しく機能します。
完全パイプライン (ケース 3)
正しく機能させるには、CEA1、CEA2、CEB1 および CEB2 が必要です。
ACOUT/BCOUT を外部に引き出して次の DSPCPLX にカスケード接続したパス
ACASCREG と BCASCREG は、属性属性設定の説明の表に従って設定します。
ACASCREG = 1
正しく機能させるには、CEA1 が必要です。
ACASCREG = 2
正しく機能させるには、CEA2 が必要です。
BCASCREG
正しく機能させるには、CEB2 が必要です。ただし BCASCREG=1 かつ BREG=2 の場合は CEB1 が必要です。