Feedback

FPGAリアルタイム信号のプロービングを行うFPGAデータ・キャプチャ(日本語吹き替え・字幕)

FPGAでのプロトタイピングは、実際の入力信号で高速にテストするには良いですが、問題をデバッグする必要がある場合は、FPGA内部で何が問題なのかを確認することは非常に困難です。

HDL VerifierのFPGA Data Capture機能を使用すると、JTAG経由でコンピュータに接続されたボードのFPGA内にプローブを挿入できるため、MATLABまたはSimulink環境でFPGAの内部信号を直接解析することができます。

この機能を利用するには、FPGAボード用の最新のHDL Verifierハードウェアサポートパッケージをダウンロードしてインストールします。 ここでは、Altera/Intelを使用しています。

例として、サポートパッケージに付属の、Verilogで手書きされたオーディオフロントエンドのサンプルを使用します。

この例を実行するにあたり、すでにいくつかのコマンドを実行してセットアップを行ってあるので、次にgenerateFPGADataCaptureIPコマンドを呼び出してコンポーネントを生成するためのダイアログを開きます。 このコマンドはハードウェアサポートパッケージに付属しているので、インストールしていない場合はこのコマンドを実行することはできません。

この例では、入力12ビットオーディオ信号をサンプリングするADコンバータとフリーランニング8ビットカウンタの出力を調べます。 Verilogの名前とビット幅を一致させて入力します。 Use AsをBoth(両方)のままにしておきます。どちらの信号の変化でもサンプルがトリガーされ、両方ともサンプルリングされます。 この設定は、Valid信号のような特定の信号をトリガーに設定し、他の信号をデータのみに設定してサンプリングするような場合のために用意されています。

次に、FPGAベンダーが正しく設定され、言語がVerilogであることを確認します。 出力フォルダとコンポーネントの名前は自由に設定できます。

Sample Depthは、データキャプチャのコンポーネントがMATLAB環境に戻す各信号のサンプル数です。回転ウィンドウのようにトリガーが発生したときにウィンドウがMATLABに送信されるように考えます。 その設定は128のままにして、コンポーネントを生成します。

必要なものがすべて生成され、このレポートではその使用方法が示されます。 生成されたデータキャプチャモジュールを自分のデザインのトップレベルでインスタンスする必要があります。 次に、MATLABアプリケーションを実行するか、生成されたSimulinkブロックを接続するための手順が示されます。 今回はMATLABで実行します。

このtop.vファイルでは、データキャプチャのコンポーネントをインスタンスしているため、デザインがFPGAにコンパイルされると、それがその一部になります。 このモジュールには、内部信号をプローブし、トリガーを制御し、データをMATLABまたはSimulinkに送り返すために必要な、FPGAに追加されるロジックが含まれています。これはQuartus用のTclスクリプトで、プロジェクトを作成し、Verilogファイルを追加、論理合成し、FPGAのプログラムを行います。

FPGAがプログラミングされたら、生成ディレクトリに移動し、アプリケーションを実行します。データがキャプチャされると、このMATLAB変数にデータが格納されます。 DSP System Toolboxをお持ちであれば、ロジック・アナライザーで波形解析を行うことがでるので、それを使用しましょう。

すぐにデータをキャプチャするか、1つまたは複数のトリガーでキャプチャするかをアプリケーションで設定することができます。 また、トリガーとして設定した信号に対しても、値が8になったときというように条件を設定することができます。このTrigger position パラメータは、回転ウィンドウのどこにトリガー条件があるかを設定しています。 ですので、それを中央に設定すると、トリガー条件が発生したとき、トリガーの前に64サンプル、後に64サンプルのデータをキャプチャできます。左いっぱいに設定すると、トリガーの後に128サンプルのデータをキャプチャできます。

キャプチャボタンをクリックすると、実行とデータのキャプチャが開始されます。 この例では、JTAG経由でPCに接続されたFPGAボードに、オーディオ信号が入力されており、FPGA内部信号をロジック・アナライザーにキャプチャして、問題箇所をデバッグすることができます。

Product Focus

Related Videos and Webinars