パート 2: 固定小数点型を使用した設計 - 2020.2 日本語

Vivado Design Suite チュートリアル: System Generator を使用したモデル ベースの DSP デザイン (UG948)

Document ID
UG948
Release Date
2020-12-11
Version
2020.2 日本語
このパートでは、パート 1: 浮動小数点型を使用した設計 のデザインを固定小数点型を使用してインプリメントし直し、新しいデザインと元のデザインを比較します。固定小数点型を使用する利点と欠点を説明し、System Generator でデザインを簡単に比較して、FPGA インプリメンテーションを確定する前に Simulink 環境で精度とリソースのトレードオフを検討できることを示します。
  1. コマンド プロンプトに「open Lab1_4_2.slx」と入力し、デザインを開きます。

  2. MATLAB コマンド ウィンドウに次を入力します。
    MyCoeffs = xlfda_numerator('FDATool')
  3. Gateway In2 インスタンスをダブルクリックし、データが 16 ビット固定小数点値としてサンプリングされることを確認します。
  4. Cancel をクリックしてプロパティ エディターを閉じます。
  5. [Run simulation] ボタンをクリックしてデザインをシミュレーションし、[Spectrum Analyzer SysGen Fixed] ウィンドウに表示されるフィルター処理された出力を確認します。

    FIR-Fixed-Point インスタンスの出力を見ると、System Generator で入力データ型が自動的にフィルターを介して伝搬され、信号の精度を保つために出力を 43 ビット (28 小数部ビット) にする必要があることがわかります。

    これは、フィルターを介したビット増加およびフィルター係数が 16 ビットであることにに基づきます。

  6. MATLAB のコマンド ウィンドウに「sum(abs(MyCoeffs))」と入力し、現在の係数を使用して絶対最大増加を決定します。

    係数の正の値と負の値を考慮すると、最大増加は 1.2070 であり、出力信号は最大でも入力信号 (16 ビット) よりも少し小さいことがわかります。2 進小数点より上位のデータを 15 ビット (43 ~ 28) にする必要はありません。

    次に、Reinterpret および Convert ブロックを使用して、正しい結果を表すのに必要な幅以上にならないように固定小数点データを変更し、ハードウェアで最も効率的なデザインを作成します。

  7. キャンバスのどこかを右クリックし、Xilinx BlockAdd をクリックします。
  8. [Add Block] ボックスに「Reinterpret」と入力します。
  9. Reinterpret コンポーネントをダブルクリックし、デザインに追加します。
  10. 上記の 3 手順を繰り返して、次のコンポーネントを追加します。
    1. Convert
    2. Scope
  11. デザインで Gateway Out2 インスタンスを選択します。
    1. 右クリックして [Copy] および [Paste] を使用し、Gateway Out ブロックの新しいインスタンスを作成します。
    2. さらに 2 回貼り付けて、Gateway Out のインスタンスをあと 2 つ作成します (合計で 3 つ作成)。
  12. Scope コンポーネントをダブルクリックします。
    1. [Scope] ダイアログ ボックスで File > Number of Inputs > 3 をクリックします。
    2. View > Configuration Properties をクリックし、[Number of input ports] が 3 に設定されていることを確認します。

    3. OK をクリックして [Configuration Properties] ダイアログ ボックスを閉じます。
    4. File > Close をクリックして [Scope] ダイアログ ボックスを閉じます。
  13. ブロックを下の図に示すように接続します。
  14. Scope に入力される信号の名前を、次の図に示すように Convert、Reinterpret、および Growth に変更します。

    信号名を変更するには、既存の名前ラベルをクリックしてテキストを編集するか、ラベルがない場合はワイヤをダブルクリックして名前を入力します。



  15. [Run simulation] ボタンをクリックしてデザインをシミュレーションします。
  16. Scope をダブルクリックして信号を調べます。
    ヒント: 信号の詳細を表示するには、拡大するか、View > Configuration Properties をクリックしてスケールを調整する必要がある場合があります。


    この時点では Reinterpret および Convert ブロックを設定していないので、3 つの信号は同一です。

    ザイリンクス Reinterpret ブロックは、入力の数値を保持するかどうかにかかわらず、出力を新しいデータ型にします。符号なしデータを符号付きデータに再解釈したり、符号付きデータを符号なしデータに再解釈したりします。2 進小数点の位置を変えることにより、データのスケーリングの再解釈も可能です。

    この演習では、データを係数 2 でスケーリングし、大型のシステムで発生する可能性のある追加のデザイン処理をモデリングします。Reinterpret ブロックは、スケール ダウンにも使用できます。

  17. Reinterpret ブロックをダブルクリックし、プロパティ エディターを開きます。
  18. Force Binary Point をクリックします。
  19. [Output Binary Point] に 27 を入力し、OK をクリックします。

    ザイリンクス Convert ブロックは、各入力サンプルをさまざまな演算タイプに変換します。たとえば、数値を符号付き (2 の補数) または符号なしの値に変換できます。信号の量子化の切り捨てまたは丸め、信号のオーバーフローの折り返し、飽和、またはエラーとしてフラグも可能です。

    このチュートリアルでは、Convert ブロックを使用して 43 ビット ワードを 16 ビット値に削減します。この演習では、Reinterpret ブロックはより複雑なデザインをモデリングし、データを係数 2 でスケーリングするために使用しています。そのため、出力の 2 進小数点の上位にこの増加を表すのに十分なビット数があることを確認する必要があります。

  20. Convert ブロックをダブルクリックし、プロパティ エディターを開きます。
  21. [Fixed-Point Precision] セクションで [Binary Point] に 13 と入力し、OK をクリックします。
  22. デザインを保存します。
  23. [Run simulation] ボタンをクリックしてデザインをシミュレーションします。
  24. Scope をダブルクリックして信号を調べます。
    ヒント: 信号の詳細を表示するには、拡大するか、View > Configuration Properties をクリックしてスケールを調整する必要がある場合があります。

    次の図では、フィルター (Growth) からの出力の値が -1 ~ +1 の範囲であることがわかります。Reinterpret ブロックからの出力は、-2 ~ +2 の範囲です。

    波形の詳細表示では、再解釈された結果と比較すると、使用されるのは 16 ビットだけですが、最終出力 (Convert) の忠実性に違いはありません。



    最後に、最上位デザインを合成します。

  25. System Generator トークンをダブルクリックし、プロパティ エディターを開きます。
  26. [Compilation] タブで、[Compilation] に [IP Catalog] が選択されていることを確認します。
  27. [Clocking] タブで、[Perform analysis] に Post Synthesis を選択し、[Analyzer type] に Resource を選択します。このオプションを選択すると、完了後にリソース使用率の詳細が表示されます。
  28. Generate をクリックし、デザインをハードウェア記述にコンパイルします。完了すると、次の図に示すように [Resource Analyzer] ダイアログ ボックスにリソース使用量が表示されます。

  29. OK をクリックして [Compilation status] ダイアログ ボックスを閉じます。
  30. OK をクリックして System Generator トークンを閉じます。

    手順 1 と比較すると、リソース使用量は次のようになっています。

    • フリップフロップは約 45% 増加
    • LUT 約 45% 増加
    • DSP48 は約 30% 増加

    ただし、このデザインには元の浮動小数点フィルターと新しい固定小数点フィルターが含まれているので、固定小数点フィルターでは、許容可能な信号忠実性およびデザイン パフォーマンスを達成しながら、リソース使用量は約 75 ~ 50% になっています。

  31. Vivado Design Suite を閉じます。
  32. Lab1_4_2.slx ワークシートを閉じます。