インテル® FPGA SDK for OpenCL: カスタム・プラットフォーム・ツールキット・ユーザーガイド

ID 683085
日付 10/31/2016
Public
ドキュメント目次

1.4.1.1. ボード Qsys システムの作成

ボード・ハードウェアのデザインでは、オプションですべてのボードロジックを含むsystem.qsys内に Qsys サブシステムを作成することができます。デザインコードの編成に加え、このサブシステムでは保存が可能な Quartus® Primeパーティションを作成することができます。 Qsys サブシステムでボードシステムを作成するには、カスタム・プラットフォーム・ツールキットでboard.qsysテンプレートを変更する必要があります。

ボード Qsys サブシステムの実装は、次のコンポーネントを含んでいます。

  • 適切なリセットシーケンス
  • インテル® FPGA SDK for OpenCL™ 固有のコンポーネント
  • ホストから FPGA への通信 IP
  • SDKのグローバルメモリーで使用されるメモリー IP
  • ボード固有のインターフェイスへのストリーミング・チャネル

詳しい情報は、ボード Qsys システムの項を参照してください。

以下のハードウェア・デザイン・ファイルのテンプレートは、 ALTERAOCLSDKROOT/board/custom_platform_toolkit/board_package/hardware/templateディレクトリー内で使用可能です。

  • board.qsys
  • system.qsys
  • top.v
  • top.qpf
  • board_spec.xml

post_flow.tclファイルのテンプレートは、カスタム・プラットフォーム・ツールキットの ALTERAOCLSDKROOT/board/custom_platform_toolkit/board_package/hardware/template/scriptsディレクトリー内で使用可能です。

非カーネルロジックを作成するには、system.qsysのトップレベルの Qsys システムまたはボード Qsys サブシステムで、次のタスクを実行します。

  1. Qsys では、ホストとメモリー IP を Qsys システムに追加し、すべての必要な接続とエクスポートを確立します。
    重要: 個別の IP ライセンスの取得が必要な場合があります。有効なライセンスとライセンスがない IP ソリューションのリストは、アルテラのウェブサイト (www.altera.co.jp) の「All Intellectual Property」のページをご覧ください。各 IP の詳細は、「製品名」カラムのリンクをクリックして製品ページに移動し、参照してください。
    1. por_reset_controller/clkをドライブするように、ホスト・インターフェイス・クロックを接続します。デザインのグローバルリセットとクロック入力は、リセットカウンター (por_reset_counter) に供給されます。次に、このリセットカウンターは、Merlin Reset Controller (por_reset_controller) のホスト・インターフェイス・クロックに同期します。
      por_reset_counter ACL SW Reset コンポーネントは、パワーオンリセットを実装します。FPGA のコンフィグレーションが完了した後、サイクルの数のリセットの発行により、すべてのデバイス・ハードウェアをリセットします。
    2. ホスト IP からの要求を受信できるように、Avalon®Avalon-MM ( メモリー・マップド ) Pipeline Bridge コンポーネントのpipe_stage_host_ctrlパラメーターを変更します。ホスト・インターフェイスの Avalon-MM マスターポートをpipe_stage_host_ctrls0ポートに接続します。pipe_stage_host_ctrlm0ポートを、OpenCL Kernel Clock Generator と OpenCL Kernel Interface コンポーネントを含んだホスト・インターフェイスと通信する必要のあるすべてのペリフェラルに接続します。    
    3. Avalon-MM Clock Crossing Bridge コンポーネントのclock_cross_kernel_mem_<N> の数を、ボード上のメモリー・インターフェイスの数と一致するように調整します。このコンポーネントは、カーネルとメモリー・インターフェイスの間でクロック・クロッシングを実行します。各コンポーネントのパラメーターを、OpenCL Memory Bank Divider コンポーネントのパラメーターとboard_spec.xmlに記述されているinterface属性と一致するように変更します。m0 マスター、クロック、およびclock_cross_kernel_mem_<N> リセットポート ( つまり、それぞれm0m0_clk、およびm0_reset) をメモリー IP に接続します。
      重要: OpenCL Memory Bank Divider コンポーネントからのkernel_resetのアサーションがこのリセットをトリガーする方法で、m0_resetを接続します。
  2. SDK固有の Qsys システム・コンポーネントをカスタマイズします。
    重要: board.qsysシステム・テンプレートを使用して Qsys サブシステムを作成する場合、SDK固有のシステム・コンポーネントとboard_spec.xmlファイルと一致するようにエクスポートされた適切なインターフェイスとの間での必要な接続があらかじめ設定されていることに注意してください。 インテル® は、あらかじめ設定された接続をできるだけ保持することを推奨しています。
    1. Qsysでは、Tools > Optionsをクリックします。Optionsのダイアログボックスで、 ALTERAOCLSDKROOT/ip/boardQsys IP Search Pathに追加し、Finishをクリックします。
    2. OpenCL Kernel Clock Generator コンポーネントをインスタンス化します。コンポーネントのパラメーターを指定し、OpenCL Kernel Clock Generatorの説明のとおりに信号とポートを接続します。
    3. OpenCL Kernel Interface コンポーネントをインスタンス化します。コンポーネントのパラメーターを指定し、OpenCL Kernel Interfaceの説明のとおりに信号とポートを接続します。
    4. 各グローバルメモリーのタイプの場合、OpenCL Memory Bank Divider コンポーネントをインスタンス化します。コンポーネントのパラメーターを指定し、OpenCL Memory Bank Dividerの説明のとおりに信号とポートを接続します。
      重要: 結果になるバンクマスターがboard_spec.xmlファイルにあるglobal_memエレメントのインターフェイス属性で定義されるように、カーネルからのものと同等のアドレスビットとバースト幅を有するように、パラメーターを設定します。各メモリーバンクでは、Qsys は仕様として同じ特性を継承するマスターを生成します。
  3. 非カーネルロジックの Qsys サブシステムの作成を選択した場合、必要なすべての I/O をトップレベルのsystem.qsys Qsys システムにエクスポートします。
  4. トップレベルのtop.vファイルを編集してsystem.qsysをインスタンス化し、ボード固有の I/O を接続します。
  5. ボードデザインのために必要なすべての設定を使用してtop.qpf Quartus® Primeプロジェクトを設定します。
  6. Quartus® Primeのコンパイル時にfpga.binファイルを生成する Tcl コードを含めるために、Post_flow.tclファイルを変更します。
    fpga.binファイルは、ボードのプログラミングで必要です。
  7. ボード固有の記述を含めるために、board_spec.xmlファイルを編集します。