Main Content

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

FPGA データ キャプチャを使用したザイリンクス FPGA ボードからの温度センサー データのキャプチャ

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

要件と前提条件

  • MATLAB

  • HDL Verifier™

  • ザイリンクス FPGA ボード用HDL Verifierサポート パッケージ

  • Fixed-Point Designer™

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

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

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

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

サンプルリソースの準備

ザイリンクス Vivado デザイン スイートをセットアップします。この例では、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. 「追加」ボタンを 1 回クリックして、「ポート」テーブルに 1 行を追加します。

2.最初の信号にtemperature 、2 番目の信号にcounterという名前を付けます。

3.2 つの信号のビット幅をそれぞれ 16 と 8 に変更します。

4.FPGA ベンダーXilinxとして選択します。

5.「生成された IP 言語」をVerilogとして選択します。

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

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

8.これらのオプションの 1 つとして、接続タイプ を選択します。

  • JTAG - JTAG 接続経由でデータをキャプチャするには

  • Ethernet - イーサネット接続経由でデータをキャプチャするには

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

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

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

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

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

《JTAG接続の場合》

ZedBoard を使用している場合は、この例で提供されているtop.vファイルを開きます。VC707 を使用している場合は、この例で提供されているtop_vc707.vファイルを開きます。このコードのコメントを外します。

datacapture 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 コンソールで次のコマンドを実行して、イーサネット MAC ハブ IP と FPGA データ キャプチャ IP を Vivado プロジェクトに挿入します。FPGA Data Capture Component Generator ツールは、 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ワークスペースの構造体dataCaptureOutに保存されます。DSP System Toolbox™ソフトウェアをお持ちの場合、キャプチャされたデータは、Logic Analyzer ツールで信号波形としても表示されます。

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

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

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

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

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

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

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

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

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

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

FPGA から定期的なイベントをキャプチャするには、FPGA データ キャプチャ ツールでキャプチャ ウィンドウの数 を設定します。

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

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

Window depth = Sample depth/Number of capture windows;

Logic Analyzer ツールは、この結果を 8 回のトリガーの発生として表示し、それぞれ 128 サンプルの温度が記録されます。

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

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

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

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

1. トリガーステージ数2として選択します。

2.Trigger Stage 1 セクションで、Signalcounterとして選択します。「+」ボタンをクリックして、このトリガー信号を有効にします。対応するトリガー条件値 () を 0 として選択します。

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

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

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

参考

|

関連するトピック