手順 6: FPGA での DFX Controller のクエリ - 2023.2 日本語

Vivado Design Suite チュートリアル: Dynamic Function eXchange (UG947)

Document ID
UG947
Release Date
2023-11-29
Version
2023.2 日本語

この手順では、ハードウェア マネージャーから JTAG を介してコアを使用し、コアのステータスを理解し、ソフトウェア トリガーを出力します。

Vivado のハードウェア マネージャーで、JTAG を介してデバイスとのリンクを確立するため Refresh Device をクリックする必要がある場合があります。XADC および 6 個の ILA コア、そして hw_axi リンクが、Hardware ビューでデバイスの下に表示されています。

  1. Tcl コンソールで、cd コマンドを使用して DFX Controller のチュートリアル ディレクトリに移動し、AXI4-Lite コマンドの Tcl スクリプトを実行します。
    source ./Sources/scripts/axi_lite_procs_us.tcl

    これで、今後 DFX Controller を使用するときのプロシージャ セットが簡単になります。これらのプロシージャがどのように定義されているかを確認するため、このファイルを開きます。これらはこのデザイン用にハードコードされているので、ほかのデザインの仮想ソケットへ参照する場合は変更する必要があります。このトピックの詳細は、 『Dynamic Function eXchange Controller IP LogiCORE IP 製品ガイド』 (PG374) を参照してください。

  2. 次のプロシージャを実行して、DFX Controller との通信を確立します。
    dfxc_jtag_setup
  3. 各仮想ソケットのステートをチェックし、モードがシャットダウン モードかどうかを確認します。
    is_vsm_in_shutdown vs_shift
    is_vsm_in_shutdown vs_count

    シフトの仮想ソケットはアクティブ モード (値 = 0)、カウンターの仮想モードはシャットダウン モード (値 = 1) になっているはずです。

  4. 各仮想ソケットのステータスを確認します。
    dfxc_decode_status vs_shift
    dfxc_decode_status vs_count

    返されたデータを調べる前に、 『Dynamic Function eXchange Controller IP LogiCORE IP 製品ガイド』 (PG374) の STATUS Register セクションの表を参照してください。このセクションの表に、STATUS レジスタの値が定義されています。これは 32 ビット レジスタなのですが、上位 8 ビットは UltraScale デバイスの仮想ソケット マネージャー (VSM) 用に使用されるので、最下位から 24 ビットのみに注目するだけで十分です。

    vs_shift のステータスは 263 で、2 進数で表すと 0000_0000_0000_0001_0000_0111 です。vs_shift のステータスは 7 で、唯一の違いは RM_ID が 0 になっている点です。

    • RM_ID (ビット 23:8) = 1。つまり RM 1 が (rm_shift_right) 読み込まれます。また、RM_ID (ビット 24:8) = 0 であるかのように見える場合もあります。その場合は RM 0 (rm_shift_left) が読み込まれます。
    • SHUTDOWN (ビット 7) = 0。この VSM はシャットダウン ステートではありません。
    • ERROR (ビット 6:3) = 0000。エラーはありません。
    • STATE (ビット 2:0) = 111。仮想ソケットがいっぱいです。

    vs_count のステータスは 129 で、2 進数で表すと 0000_0000_0000_0000_1000_0001 です。

    • RM_ID (ビット 23:8) = 0。その場合は RM 0 (rm_count_up) が読み込まれます。
    • SHUTDOWN (ビット 7) = 1。この VSM はシャットダウン ステートです。
    • ERROR (ビット 6:3) = 0000。エラーはありません。
    • STATE (ビット 2:0) = 001。この VSM はハードウェアのシャットダウンを実行しているので、RM_SHUTDOWN_ACK は 1 になります。

    次の詳細は、この Tcl プロシージャからの戻り値に、ステータス レジスタの内訳としてレポートされます。

  5. シフトの仮想ソケットにソフトウェア トリガーを送信します。
    dfxc_send_sw_trigger vs_shift 0
    dfxc_send_sw_trigger vs_shift 1

    DFX Controller のカスタマイズ中に定義されたように、値が 0 および 2 のときは左シフト、値が 1 および 3 のときは右シフトです。

  6. カウンターの仮想ソケットの RM のコンフィギュレーションを確認します。
    dfxc_show_rm_configuration vs_count 0
    dfxc_show_rm_configuration vs_count 1

    クリア ビットストリームおよびパーシャル ビットストリームの両方のビットストリームのサイズおよびアドレスの値がここにレポートされます。これらの値は、レポートされてから、ビットストリームのサイズや位置を調整するために変更できます。新しい RM を挿入するため、異なるインデックスを追加できます。vs_shift VSM はシャットダウン ステートではないので、vs_shift にはこのクエリは実行できない点に注意してください。

  7. カウンターの VSM をアクティブ モードにします。
    dfxc_restart_vsm_no_status vs_count

    これで、カウントアップおよびカウントダウンのプッシュボタンは、DFX Controller を使用してこれらのパーシャル ビットストリームを読み込むことができる状態になりました。