Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

FPGA データ キャプチャを使用して Xilinx FPGA ボードから温度センサー データをキャプチャする

この例では、既存の HDL 設計で FPGA データ キャプチャを使用し、JTAG またはイーサネット接続を介して FPGA 内部信号をキャプチャする方法を示します。オンチップ温度センサー データを読み取るために Xilinx® XADC IP を実装した既存の FPGA 設計から始めます。XADC IP は、内部レジスタの読み取りおよび書き込み用の動的再構成ポート (DRP) インターフェイスを公開します。この FPGA 設計には、XADC IP から温度センサー レジスタを読み取るロジックが含まれています。さらなる分析のために温度の読み取り値を取得するには、FPGA データ キャプチャ機能を使用して、生のセンサー データを MATLAB® ワークスペースに読み込みます。次に、MATLAB は生の温度データを摂氏に変換します。

要件と前提条件

  • Xilinx Vivado® Design Suite(サポートされているバージョンはサポートされているEDAツールとハードウェアに記載されています)

  • JTAG接続の場合:ZedBoard™ または Xilinx Virtex®-7 VC707 開発ボード

  • イーサネット接続の場合:Xilinx Virtex-7 KC705 開発ボード

  • JTAGケーブルおよび/またはイーサネットケーブル

サンプルリソースを準備する

Xilinx Vivado Design Suite をセットアップします。この例では、Xilinx Vivado 実行可能ファイルがファイル C:\Xilinx\Vivado\2020.2\bin\vivado.bat にあることを前提としています。実行可能ファイルの場所が異なる場合は、代わりにパスを使用してください。

hdlsetuptoolpath('ToolName','Xilinx Vivado','ToolPath', ...
                 'C:\Xilinx\Vivado\2020.2\bin\vivado.bat');

FPGA開発ボードのセットアップ

1. 電源スイッチがオフになっていることを確認してください。

2. AC 電源コードを電源プラグに接続し、電源アダプタ ケーブルを FPGA 開発ボードに差し込みます。

3. JTAG ダウンロード ケーブルを使用して、FPGA 開発ボードをホスト コンピューターに接続します。

4. クロスオーバー イーサネット ケーブルを使用して、FPGA 開発ボード上のイーサネット コネクタをホスト マシン上のイーサネット アダプタに直接接続します。

5. FPGAボードの電源スイッチをオンにします。

FPGAデータキャプチャコンポーネントを生成する

MATLAB でこのコマンドを実行して、FPGA Data Capture Component Generator ツールを起動します。

generateFPGADataCaptureIP

この例では、温度センサー システムの既存の HDL コードから 2 つの信号を監視します。16 ビットの temperature と 8 ビットの countertemperature 信号は、変換された生の温度センサーを格納する XADC からのレジスタ 0x00 の読み取り値です。16 ビットありますが、生の温度センサーの読み取り値は 12 ビットの最上位ビット (MSB) のみです。最後の信号 counter は 8 ビットのフリーランニング カウンターです。JTAG またはイーサネット接続を介してこれら 2 つの信号で動作するようにデータ キャプチャ コンポーネントを構成するには、次の手順に従います。

1. FPGA ベンダーXilinx に設定します。

2. 接続タイプを次のいずれかのオプションに設定します。

  • JTAG - JTAG接続を介してデータをキャプチャする

  • PL Ethernet - イーサネット接続を介してデータをキャプチャする

3. 生成された IP 言語Verilog に設定します。

4. 追加 ボタンを 1 回クリックして、ポート テーブルに 1 行追加します。

5. 最初の信号の名前を temperature に変更し、2 番目の信号の名前を counter に変更します。

6. 2 つの信号のビット幅をそれぞれ 168 に変更します。

7. サンプル深度1024に設定します。これは、トリガーが検出されるたびにデータ キャプチャ ツールが MATLAB に返す各信号のサンプル数です。

8.最大トリガー ステージ2 に設定します。この値は、複数のトリガー条件を提供するためにデータ キャプチャ中に追加できるトリガー ステージの最大数です。

9. イーサネット接続のみ:IP アドレス192.168.0.2 に設定し、ポート アドレス50101 に設定します。インターフェース タイプGMII に設定します。これは、ターゲット FPGA 開発ボードのイーサネット インターフェイスのタイプです。

この図はこれらのツール設定を示しています。

FPGA データ キャプチャ コンポーネントを生成するには、生成 をクリックします。生成の結果はレポートに表示されます。

FPGAデータキャプチャHDL IPの統合

生成された HDL IP コアをサンプル FPGA デザインに含める必要があります。生成されたレポートからモジュール インスタンス コードをコピーできます。この例では、生成された HDL IP を XADC IP からの温度センサー出力と 8 ビットのフリーランニング カウンターに接続します。

JTAG接続の場合

ZedBoard を使用している場合は、この例に付属している top.v ファイルを開きます。VC707 を使用している場合は、この例に付属している top_vc707.v ファイルを開きます。このコードのコメントを解除します。

datacapture1 u0 (
     .clk(clk),
     .clk_enable(1'b1),
     .ready_to_capture(),
     .temperature(do_out),
     .counter(counter[7:0]));

変更したファイルを保存し、変更した FPGA 設計をコンパイルして、FPGA プログラミング ファイルを作成します。

ZedBoard を使用している場合は、MATLAB でこのコマンドを実行してください。

system('vivado -mode batch -source data_capture_xadc_zedboard.tcl &')

VC707を使用している場合は、MATLABでこのコマンドを実行してください。

system('vivado -mode batch -source data_capture_xadc_vc707.tcl &')

この例に含まれている上記の Tcl スクリプトは、これらの手順を実行します。

1. 新しい Vivado プロジェクトを作成します。

2. サンプル HDL ファイルと生成された FPGA データ キャプチャ HDL ファイルをプロジェクトに追加します。

3. デザインをコンパイルします。

4. FPGA をプログラムします。

次のステップに進む前に、Vivado プロセスが正常に終了するまで待機します。このプロセスには約 5 ~ 10 分かかります。

イーサネット接続の場合

1. MATLAB でこのコマンドを実行して、KC705 ボード用の Vivado プロジェクトを作成します。このコマンドの実行には約 1 分かかります。実行が完了すると、現在のディレクトリに data_capture_xadc_kc705.xpr という名前の Vivado プロジェクトが表示されます。

system('vivado -mode batch -source create_project_kc705.tcl &')

2. ファイル ブラウザーでプロジェクトをダブルクリックするか、MATLAB でこのコマンドを実行して、生成された Vivado プロジェクトを GUI モードで開きます。

system('vivado data_capture_xadc_kc705.xpr &')

3. Vivado Tcl コンソールでこのコマンドを実行して、hdlsrc フォルダーに移動します。

cd ./hdlsrc

4. Vivado Tcl コンソールでこのコマンドを実行して、Ethernet MAC Hub IP と FPGA データ キャプチャ IP を Vivado プロジェクトに挿入します。FPGA データ キャプチャ コンポーネント ジェネレーター ツールは、insertEthernet.tcl スクリプトを生成します。

source ./insertEthernet.tcl

5. Vivado プロジェクトで IP を接続して設計を完了し、設計をコンパイルし、Vivado Tcl コンソールでこのコマンドを実行して FPGA をプログラムします。

source ../ethernet_data_capture_xadc_kc705.tcl

6. この図は、Vivado のブロック図を示しています。

次のステップに進む前に、Vivado プロセスが正常に終了するまで待機します。このプロセスには約 5 ~ 10 分かかります。

データのキャプチャ

MATLAB で FPGA データ キャプチャ コンポーネントが生成されるディレクトリに移動します。

cd hdlsrc

FPGA Data Capture ツールを起動します。このツールは、データ キャプチャ信号に合わせてカスタマイズされています。

launchDataCaptureApp

データキャプチャを開始するには、データのキャプチャをクリックします。このアクションは、FPGA からキャプチャされたデータの 1 つのバッファーを要求します。デフォルトのトリガー設定では、トリガー条件を待たずにすぐにキャプチャします。

キャプチャされたデータは、MATLAB ワークスペース内の構造体 dataCapture1Out に保存されます。DSP System Toolbox™ ソフトウェアをお持ちの場合は、キャプチャされたデータは ロジック アナライザー ツールで信号波形としても表示されます。

キャプチャされた温度センサーデータは生の形式です。センサーのデータシートには、生の形式のデータを摂氏単位に変換するための式が記載されています。返されたすべてのサンプルの平均温度を計算して報告します。

CelsiusTemp = (double(dataCapture1Out.temperature))/(2^4)*503.975/4096 - 273.15;
sprintf('The FPGA Temperature is %fC\n',mean(CelsiusTemp))

トリガーを使用したデータキャプチャの範囲の限定

特定のイベントの前後で FPGA からデータをキャプチャするには、FPGA データ キャプチャ ツールでトリガー条件を設定できます。たとえば、カウンターが特定の値に達した後にのみ温度データをキャプチャします。

トリガーステージの数1に設定します。トリガー ステージ 1 セクションで、信号counter に設定します。+ ボタンをクリックして、このトリガー信号を有効にします。10 に対応するトリガー条件値 () を選択します。トリガー モードは自動的に トリガー時 に変更されます。この変更により、FPGA はデータをキャプチャして返す前にトリガー条件を待機するように指示されます。この図はこれらのツール設定を示しています。

もう一度 データのキャプチャ をクリックします。今回は、データ キャプチャ IP は、カウンターが 10 になったことを検出したときにキャプチャされた 1024 個のサンプルを返します。

他のビットに関係なく、トリガー値の特定のビットのデータを FPGA からキャプチャするには、ビットマスクされた値を使用してトリガー条件を設定できます。

たとえば、カウンターの 7 番目のビットが 1 のときのみ温度データをキャプチャするには、この図に示すように、トリガー条件値 () を 0bX1XXXXXX に設定します。

もう一度 データのキャプチャ をクリックします。データキャプチャIPは、[64, 127]から[192, 255]の範囲のカウンタ値の温度データをキャプチャするようにトリガーします。

複数のイベント発生をキャプチャする

FPGA から繰り返し発生するイベントをキャプチャするには、FPGA データ キャプチャ ツールで キャプチャ ウィンドウの数 を構成します。

たとえば、8 つの異なる時間スロットで温度データをキャプチャするには、キャプチャ ウィンドウの数8 に設定します。この図は更新されたツール設定を示しています。

データのキャプチャをクリックします。データ キャプチャ IP は、それぞれ 128 サンプルの 8 つのウィンドウを返します。合計サンプル深度は 1024 になります。

Window depth = Sample depth/Number of capture windows;

ロジック アナライザー ツールでは、この結果がトリガーの 8 回の発生として表示され、温度はそれぞれ 128 サンプルで記録されます。

信号 Capture WindowTrigger Position は、それぞれ対応するウィンドウ番号とトリガー位置を示します。

複数のトリガーステージでデータをキャプチャする

このシナリオでは、複数のトリガー ステージで一連のトリガー条件を指定してデータをキャプチャする方法について説明します。このアクションを実行するには、FPGA データ キャプチャ ツールで トリガー ステージ数 を 1 より大きい値に設定する必要があります。

たとえば、カウンタ値が 5 クロック サイクルで 0 から 5 に達したときに温度データをキャプチャするには、次のようにします。

1. トリガーステージの数2に設定します。

2. トリガー ステージ 1 セクションで、信号counter に設定します。+ ボタンをクリックして、このトリガー信号を有効にします。対応するトリガー条件値 () を 0 に設定します。

3. トリガー ステージ 2 セクションで、信号counter に設定します。+ ボタンをクリックして、このトリガー信号を有効にします。対応するトリガー条件値 () を 5 に設定します。トリガー タイムアウト を選択し、5 に設定します。

この図は更新されたツール設定を示しています。

データのキャプチャをクリックします。データ キャプチャ IP は、トリガー ステージ 1 で検出されたトリガー条件に続いて、5 クロック サイクル以内にトリガー ステージ 2 でトリガー条件を検出すると、1024 個のサンプルをキャプチャします。

参考

|

関連するトピック