このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
FPGA Data Capture を使用した IP コアのデバッグ
この例では、HDL Coder™ で生成する IP コアを FPGA Data Capture のみを使用してデバッグする方法と AXI Manager および FPGA Data Capture の両方を一緒に使用してデバッグする方法を示します。
要件
Xilinx® Zynq® ZC702 評価キット。ZC702 ハードウェアの設定の詳細については、Xilinx Zynq プラットフォームをターゲットにする方法の概要を参照してください。
HDL Coder Support Package for Xilinx FPGA and SoC Devices
HDL Verifier™ Support Package for Xilinx FPGA Boards
HDL の言語サポートおよびサポートされるサードパーティ製ツールとハードウェアにリストされているサポート対象バージョンの Xilinx Vivado™ Design Suite
(オプション) DSP System Toolbox
はじめに
実際のハードウェアでの設計の実行中に IP コアの内部信号を監視すると、設計のデバッグと解析が行えるため便利です。この例では、生成された IP コアの内部信号を MATLAB® で FPGA Data Capture を使用して取得する方法を示します。
この例では、ブロッキング モードとノンブロッキング モードの FPGA Data Capture の使用方法を示します。取得モードの詳細については、CaptureMode (HDL Verifier)を参照してください。ノンブロッキング モードでは、AXI Manager と FPGA Data Capture を JTAG インターフェイスから同時に使用できます。ブロッキング モードでは MATLAB の実行が一時停止するため、このモードの使用時は他のアプリケーションは使用できません。一方、ノンブロッキング モードでは、FPGA Data Capture でハードウェアからデータを取得しながら、AXI Manager を使用して IP コアを構成できます。
モデルを開きます。
open_system('hdlcoder_led_blinking_data_capture');
この例では、led_counter
サブシステムをハードウェアに実装します。このサブシステムは、ハードウェア上の LED を点滅させるカウンターをモデル化したものです。2 つの入力端子 Blink_frequency
および Blink_direction
は LED の点滅頻度および方向をそれぞれ決定する制御端子です。出力端子 LED
はハードウェア上の LED に接続します。出力端子 Read_back
を使用してデータを MATLAB に読み戻すことができます。
led_counter
サブシステムに、テスト ポイントとなる内部信号がいくつかあります。それらの内部信号を FPGA Data Capture の HDL IP に接続できるように、それらの信号の DUT から IP コアまでの経路が HDL Coder で指定されます。
open_system('hdlcoder_led_blinking_data_capture/led_counter');
HDL IP コアの生成
モデルから HDL ワークフロー アドバイザーを起動し、IP コアの生成ワークフローを実行します。詳しい手順については、Xilinx Zynq プラットフォームをターゲットにする方法の概要を参照してください。
1. 手順 1.1 で、[ターゲット ワークフロー] を IP Core Generation
、[ターゲット プラットフォーム] を Xilinx Zynq ZC702 evaluation kit
に設定します。[このタスクを実行] をクリックします。
2.手順 1.2 で、[リファレンス設計] を Default system
に設定します。[Insert AXI Manager (HDL Verifier required)] と [FPGA Data Capture (HDL Verifier required)] を JTAG
に設定します。[このタスクを実行] をクリックします。
3.手順 1.3 で、[テスト ポイントの HDL DUT 出力端子の生成を有効にする] を選択します。
4.手順 1.3 で、[blinkfrequency]、[blinkdirection]、[led_output]、および [count] の各端子のインターフェイスを FPGA Data Capture
に設定します。[このタスクを実行] をクリックします。
5.ワークフローの残りの手順を手順 3.1 まで進めます。手順 3.2 で、FPGA Data Capture IP のパラメーターを構成できます。[FPGA Data Capture のバッファー サイズ]、[FPGA Data Capture のシーケンスの最大深度]、および [FPGA Data Capture に取得条件ロジックを含める] です。この例では、これらのパラメーターの既定値を使用します。[このタスクを実行] をクリックします。
6.ワークフローの残りの手順を進め、HDL IP を生成し、ターゲット デバイスをプログラムします。
IP コアからのデータの取得と表示
次に、Zynq ボードからデータを取得します。
FPGA Data Capture の起動スクリプトを見つけます。この例では、HDL コード生成ディレクトリにある hdl_prj/ip_core/led_count_ip_v1_0/fpga_data_capture/launchDataCaptureApp.m
というスクリプトです。このスクリプトの場所はコード生成レポートでも確認できます。
MATLAB で launchDataCaptureApp
スクリプトを実行します。スクリプトのディレクトリを MATLAB パスに追加するか、現在の作業フォルダーを変更します。
ブロッキング モードでのデータの取得
スクリプトを実行して "FPGA Data Capture" ツールを起動します。既定では、FPGA Data Capture はブロッキング モードで動作します。トリガー条件を設定せずに FPGA からデータを取得するには、[Capture Data] をクリックします。
あるいは、トリガー条件を使用してデータを取得できます。たとえば、トリガー条件を led_counter == 0
と設定し、トリガー位置を 32 に設定します。その後、[Capture Data] をもう一度クリックします。
ノンブロッキング モードでのデータの取得
スクリプトを実行して "FPGA Data Capture" ツールを起動し、ワークスペースで fpgadc_obj
オブジェクトを作成します。MATLAB コマンド プロンプトで次のコマンドを実行して、取得モードをノンブロッキングに変更します。
fpgadc_obj.CaptureMode = 'nonblocking';
ノンブロッキング モードの FPGA Data Capture では、FPGA Data Capture と AXI Manager を同時に使用できます。詳細については、FPGAデータキャプチャとAXIマネージャの同時使用 (HDL Verifier)を参照してください。今度は、トリガー条件を led_blink_direction == 1
と設定し、トリガー位置を 512 に設定します。その後、[Capture Data] をクリックします。
FPGA Data Capture はトリガー条件まで待機します。FPGA Data Capture がノンブロッキング モードであるため、AXI Manager で読み取りと書き込みの処理を実行できます。
次に、FPGA Data Capture で [tp_blinkdirection] を High
に設定します。その後、MATLAB で AXI Manager オブジェクトを作成します。
axi_manager_obj = aximanager('Xilinx');
axi_manager_obj.writememory('0x40010104',1);
FPGA Data Capture により、[ロジック アナライザー] にデータが取得されます。次の図は点滅方向の変化を示しています。