Main Content

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

FPGA データ キャプチャを使用してインテル FPGA ボードからオーディオ信号をキャプチャする

この例では、既存の HDL コードで FPGA データ キャプチャを使用して FPGA 内部信号を読み取る方法を示します。オーディオ信号をサンプリングするためのオンチップ アナログ デジタル コンバーター (ADC) を実装する既存の FPGA デザインから始めます。ADC IP は、制御用の Avalon® メモリマップド (MM) スレーブ インターフェイスとデータ出力用の Avalon ストリーミング インターフェイスを公開します。この FPGA デザインには、ADC を開始するための Avalon MM マスターがすでに含まれています。FPGA データ キャプチャ機能を使用して、Avalon ストリーミング インターフェイスからMATLAB®ワークスペースに ADC 出力データを収集します。

要件と前提条件

  • MATLAB

  • HDL Verifier™

  • インテル® FPGA ボード用HDL Verifier・サポート・パッケージ

  • Fixed-Point Designer™

  • インテル Quartus® Prime ソフトウェア (サポートされているバージョンはサポートされている EDA ツールとハードウェアにリストされています)

  • Arrow® DECA MAX® 10 FPGA 開発ボード

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

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

2.JTAG ダウンロード ケーブルを FPGA 開発ボードとホスト コンピュータの間に接続します。

3.(オプション) 3.5 mm オーディオ ケーブルを介して、FPGA ボードのライン入力ポートを携帯電話などのオーディオ ソースに接続します。このステップをスキップすると、キャプチャされたデータはランダムなノイズになります。

サンプルリソースの準備

インテル Quartus をセットアップします。この例では、 インテル Quartus 実行可能ファイルがファイルC:\altera\18.0\quartus\bin\quartus.exeにあることを前提としています。実行可能ファイルの場所が異なる場合は、代わりにパスを使用してください。

  hdlsetuptoolpath('ToolName','Altera Quartus II', ...
                   'ToolPath','C:\altera\18.0\quartus\bin\quartus.exe');

FPGA データ キャプチャ コンポーネントの生成

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

  generateFPGADataCaptureIP

この例では、オーディオ システムの既存の HDL デザインからの 2 つの信号を監視します。12 ビットadc_outと 8 ビットcounteradc_out信号は、オーディオ ライン入力信号のデジタル サンプルです。次の信号counter は8 ビットのフリーランニング カウンタです。これら 2 つの信号で動作するようにデータ キャプチャ コンポーネントを設定するには、次の手順に従います。

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

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

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

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

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

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

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

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

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

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

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

この例で提供されているadc_top.vファイルを開きます。このコードのコメントを外します。

  datacapture u0 (
      .clk(adc_clk),
      .clk_enable(adc_valid),
      .ready_to_capture(),
      .adc_out(adc_out),
      .counter(counter[7:0]));

adc_top.vを保存し、変更した FPGA デザインをコンパイルし、次の Tcl スクリプトを使用して FPGA プログラミング ファイルを作成します。

  system('quartus_sh -t adc_deca_max10.tcl &')

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

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

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

3.設計をコンパイルします。

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

Quartus プロセスが正常に終了するまで待ってから、次のステップに進みます。このプロセスには約 5 ~ 10 分かかります。

データのキャプチャ

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

  cd hdlsrc

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

  launchDataCaptureApp

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

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

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

特定のイベントに関して 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.「トリガー ステージ 2」セクションで、シグナルをcounterとして選択します。「+」ボタンをクリックして、このトリガー信号を有効にします。対応するトリガー条件値 () を5として選択します。「トリガータイムアウト」を選択し、 5に設定します。

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

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

参考

|

関連するトピック