手順 3: 個別のコンポーネントを使用したデザインの作成 - 2020.2 日本語

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

Document ID
UG948
Release Date
2020-12-11
Version
2020.2 日本語
この手順では、System Generator で個別のコンポーネントを使用してデザインを作成し、効率的なハードウェア デザインを達成する方法を示します。
  1. コマンド プロンプトに「open Lab1_3.slx」と入力します。

    次の図に示すような Simulink デザインが表示されます。このデザインは、手順 1 および 2 のデザインと似ていますが、フィルターが個別のコンポーネントを使用して作成されており、完成していません。この手順では、このデザインを完成させることにより、個別のコンポーネントを追加して設定する方法を学びます。



    このフィルターは、次のように動作します。

    • サンプルは In ポートから、シフト レジスタ (ASR インスタンス) に保存された遅延後に入力されます。
    • フィルター係数の保存に ROM が必要です。
    • 計算に使用するデータおよび係数サンプルを選択するため、カウンターが必要です。
    • 計算を実行するために積和ユニットが必要です。
    • 最後のダウン サンプル ユニットにより、出力が nth サイクルごとに選択されます。

    まず、デザインに個別のコンポーネントを追加します。

  2. Simulink ツールバーの [Library Browse] ボタン をクリックし、Simulink Library Browser を開きます。
    1. [Xilinx Blockset] を展開します。
    2. Control Logic を選択し、Counter を右クリックして [Add block to model Lab1_3] をクリックし、このコンポーネントをデザインに追加します。

    3. Memory を選択し、ROM をデザインに追加します。
    4. DSP を選択し、DSP48 Macro 1.0 をデザインに追加します。
  3. 新しい 3 つのインスタンスを、次の図に示すようにデザインの残りの部分に接続します。

    次に、これらのインスタンスを設定してデータが正しくフィルター処理されるようにします。

  4. FDATool インスタンスをダブルクリックし、[Filter Coefficients] ツールバー ボタン をクリックしてフィルターの仕様を確認します。

    これは、前の手順の仕様と同じで、11 個の係数があります。Gateway In の入力をダブルクリックして、入力のサンプル レートが 20 MHz (サンプル周期 1/20e6) であることも確認できます。次に、この情報を使用して個別のコンポーネントを設定します。

  5. FDATool のプロパティ エディターを閉じます。
  6. Counter インスタンスをダブルクリックし、プロパティ エディターを開きます。
    1. [Counter type] で Count limited をオンにし、Count to value に「length(xlfda_numerator('FDATool'))-1」と入力します。

      これにより、カウンターが 0 から 10 までカウントするようになります (11 個の係数とデータ アドレス)。

    2. [Output type] をデフォルトの [Unsigned] のままにし、[Number of Bits] に 4 と入力します。11 までカウントするのに必要な 2 進アドレスは 4 ビットです。
    3. [Explicit Sample Period] に 1/(11*20e6) と入力し、サンプル周期が入力データ レートの 11 倍になるようにします。各入力サンプルに対して、フィルターで計算を 11 回実行する必要があります。

    4. OK をクリックしてプロパティ エディターを閉じます。
  7. ROM インスタンスをダブルクリックし、プロパティ エディターを開きます。
    1. [Depth] に「length(xlfda_numerator('FDATool'))」と入力します。これにより、ROM の要素数が 11 になります。
    2. [Initial value vector] に「xlfda_numerator('FDATool')」と入力します。係数値は FDATool インスタンスにより供給されます。

    3. OK をクリックしてプロパティ エディターを閉じます。
  8. DSP48 Macro 1.0 インスタンスをダブルクリックし、プロパティ エディターを開きます。
    1. [Instructions] タブで、既存の命令を A*B+P に変更し、A*B を追加します。sel 入力が偽の場合、DSP は積和を実行します。sel 入力が真の場合、DSP は乗算を実行します。

    2. [Pipeline Options] タブで、[Pipeline Options] ドロップダウン リストから By_Tier を選択します。
    3. Tier 3 および Tier 5 をオンにします。これにより、レジスタが A と B への入力および乗算と累算の間に使用されるようになります。

    4. OK をクリックしてプロパティ エディターを閉じます。
  9. Save をクリックしてデザインを保存します。
  10. [Run simulation] ボタンをクリックしてデザインをシミュレーションし、結果を確認します。

    最後に、デザインをハードウェア記述にコンパイルして合成します。

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

    Digital FIR Filter マクロを使用して作成したデザインと比較して、FPGA ハードウェア リソース数が少なくなっていることがわかります。

  15. OK をクリックして [Resource Analyzer] ウィンドウを閉じます。
  16. OK をクリックして [Compilation status] ダイアログ ボックスを閉じます。
  17. OK をクリックして System Generator トークンを閉じます。
  18. Lab1_3.slx ワークシートを閉じます。