DSP48EまたはDSP48E1アプリケーションでの数値精度を維持するには、構成ダイアログボックスの固定小数点の構成ページを使用して、入出力端子の整数ワード長を適切に設定します。LabVIEWはこれらの端子のワード長を定数に保つため、整数ワード長は制御可能な変数です。

LabVIEWは特定の関数端子をそれぞれグループ分けします。これらのグループは同じ固定小数点データタイプを保持する必要があります。以下の表は、各グループの端子およびワード長を示しています。

グループ内の端子 端子のワード長
aacin 関数ページで演算構成が選択され乗算器が使用される場合、ダイレクトモードでは25、カスケードモードでは30のワード長になります。それ以外の場合は、以下の例外を除きワード長は30になります。
  • UltraScaleターゲットでは、下位27ビットのみが乗算器に渡されます。
  • UltraScaleではないターゲットでは、下位25ビットのみが乗算器に渡されます。
acout 30
bbcinbcout 18
c 48
ppcinpcout 48
(DSP48E1) d 25
メモ DSP48EおよびDSP48E1関数の入力/出力端子については、XilinxのWebサイト (www.xilinx.com) で利用可能な『Virtex-5 FPGA XtremeDSP Design Considerations User Guide』の「A, B, and C ports」セクション、または『Virtex-6 FPGA DSP48E1 Slice User Guide』の「A, B, C and D ports」セクションを参照してください。

aおよびb端子の精度を維持する

NIは、aおよびb端子の整数ワード長が以下の条件を満たしていることを推奨します。

  • これらの端子の整数ワード長からワード長を引いた小数部分ワード長は、端子に配線されたデータタイプの小数部分ワード長以上です。
  • 端子の整数ワード長は、ソースの整数ワード長以上です。

たとえば、<+/–,16,1>データタイプをb端子に配線した場合、データタイプの小数部分ワード長は15ビットです。bのワード長は18ビットに固定されているため、bの整数ワード数を3、2、または1ビットに設定します。15、16、17ビットの小数部分ワード長、およびソースの整数ワード長以上であるbの整数ワード長という設定は、上の条件を満たします。

整数ワード長が1ビット以下または3ビット以上の場合、LabVIEWがb端子の値を強制変換するため、精度が失われます。入力端子上に強制ドットが表示され、この状況について警告します。

乗算器の精度を維持する

乗算器p = a * bとして構成されたDSP48EまたはDSP48E1関数で精度を完全に維持するには、pの小数部分ワード長をaおよびb端子の小数部分ワード長の合計に設定します。

以下の例について検証します。

  • aへのソースのデータタイプは<+/–, 16, 1>です。小数部分ワード長は15ビットです。
  • bへのソースのデータタイプは<+/–, 16, 2>です。小数部分ワード長は14ビットです。

小数部分ワード長の合計は29ビットです。この状況では、NIは以下の手順を実行することを推奨します。

  1. aを<+/–,30,15>に設定します。この設定は、この端子に配線されたソースの15ビット小数部分ワード長に一致します。
  2. bを<+/–,18,4>に設定します。この設定は、この端子に配線されたソースの14ビット小数部分ワード長に一致します。
  3. pを<+/–,48,19>に設定します。この設定は、aおよびb端子の合計である29ビット小数部分ワード長に一致します。

アキュムレータの精度を維持する

アキュムレータp = p + cとして構成されたDSP48EまたはDSP48E1関数で精度を完全に維持するには、pの小数部分ワード長をcの小数部分ワード長と同じに設定します。たとえば、cへのソースのデータタイプが<+/–, 16, 3>の場合、cの小数部分ワード長は13ビットです。pを<+/–,48,35>に設定します。