手順 1: クロック ドメイン階層の作成 - 2020.2 日本語

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

Document ID
UG948
Release Date
2020-12-11
Version
2020.2 日本語
この手順では、異なるデータ レートで動作する複数の部分を含むデザインを参照し、デザインを複数のサブシステムに分割して異なるクロック ドメインをインプリメントします。
  1. System Generator を起動します。
    • Windows の場合は、Start > All Programs > Xilinx Design Tools > Vivado 2020.x > System Generator > System Generator 2020.x をクリックします。
    • Linux システムの場合は、コマンド プロンプトに「sysgen」と入力します。
  2. cd C:\SysGen_Tutorial\Lab4」と入力して Lab4 フォルダーに移動します。
  3. コマンド プロンプトに「open Lab4_1.slx」と入力します。

    次の図に示すような Simulink デザインが表示されます。このデザインは、次の 3 つの部分から構成されています。

    • チャネル フィルターは、入力信号 (491.52 MSPS) を典型的なマルチレート フィルターを使用してベースバンド付近 (61.44 MSPS) に変換します。2 つのハーフバンド フィルターの後に 2 の間引き段フィルターを使用しており、1 つの大型フィルターよりも必要な係数の数が大幅に少なくなります。
    • 出力部分では、データを使用する後続のブロック用に出力の増加を制御します。
    • 増加は POWER_SCALE 入力で制御します。


  4. [Run simulation] ボタンをクリックしてデザインをシミュレーションします。

    次の図では、色を使用したサンプル時間表示がイネーブルになっており (キャンバスを右クリックして Sample Time Display > Colors をクリック)、デザインが複数のデータ レートで実行されていることが示されています。



  5. System Generator 環境では、異なるデータ レートがデザインで自動的に伝搬されます。

    このようなマルチレート デザインをハードウェアにインプリメントする場合、データと同じ周波数のクロックを使用するのが最適なインプリメンテーションですが、この環境ではクロックは表示されていません。次に、この理想的なインプリメンテーションを最も効率的に作成する方法を示します。

  6. System Generator を使用してマルチレート (マルチクロック) デザインを効率的にインプリメントするには、同じデータ レート (クロック周波数) で実行される部分を 1 つの階層に含めて、それぞれに System Generator トークンを追加します。これらの各階層を FIFO に接続します。
  7. このデザインには、はっきりとしたクロック ドメインが 2 つと、少しわかりにくいクロック ドメインが 1 つあります。
    • 増加制御入力 POWER_SCALE は CPU から設定できるので、CPU と同じクロック周波数で実行できます。
    • 出力段の実際の増加制御ロジックは、FIR からの出力データと同じ周波数で実行する必要があります。これにより、システムの後続のブロックにより効率的に接続できます。
    • わかりにくいのはフィルター チェーンです。演習 1 で説明したように、FIR Compiler などの System Generator で提供される複雑な IP では、自動的にオーバーサンプリングが利用され、最も効率的なハードウェアが得られます。たとえば、100 MHz で動作する乗算器を 40 個使用するのではなく、FIR Compiler では 500 MHz で動作する乗算器を 8 個 (= 40*100/500) 使用します。そのため、フィルター チェーン全体を 1 つのクロック ドメインにまとめることができます。最初の FIR Compiler インスタンスは最大クロック レートで実行し、次のインスタンスでは自動的にオーバーサンプリングを使用します。

    これらの領域を異なる階層にまとめることから始めます。

  8. 下の図に示すように、フィルター チェーンのすべてのブロックを選択します。これらを 1 つのクロック ドメインにまとめます。
  9. Create Subsystem をクリックして新しいサブシステムを作成します。

  10. サブシステムのインスタンス名を選択し、DDC に変更します。

  11. 出力パスのコンポーネントを選択し、Gain Control という名前のサブシステムを作成します。

  12. Gateway In インスタンス POWER_SCALEConstant を選択し、CTRL という名前のサブシステムを作成します。デザインは次の図に示すようになります。

デザインが完成すると、各サブシステムは異なるクロック周波数で実行されます。クロック ドメインはお互いに同期しない可能性があります。現時点では、1 つのサブシステムから別のサブシステムに無効なデータがサンプリングされるのを防ぐための機構はありません。

次の手順では、異なるドメイン間に非同期チャネルを作成し、デザインをハードウェアにインプリメントしたときに、データが異なるクロック ドメイン間で非同期に安全に転送されるようにします。