Main Content

FPGA Data Capture を使用した IP コアのデバッグ

この例では、HDL Coder™ で生成する IP コアを FPGA Data Capture のみを使用してデバッグする方法と AXI Manager および FPGA Data Capture の両方を一緒に使用してデバッグする方法を示します。

要件

はじめに

実際のハードウェアでの設計の実行中に 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 を同時に使用できます。詳細については、Simultaneous Use of FPGA Data Capture and AXI Manager (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 により、[ロジック アナライザー] にデータが取得されます。次の図は点滅方向の変化を示しています。