Main Content

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

FILソースブロックによるアルゴリズム検証

この例では、FPGA インザループ (FIL) を使用して HDL 設計を迅速かつ効率的に検証する方法を示します。テストベンチはテスト対象設計 (DUT) とともに合成され、その結果が FPGA ボードにダウンロードされ、FIL を使用してテストが実行されます。このプロセスに FIL を使用すると、テスト刺激の高速生成と処理が可能になり、結果は分析のために Simulink® に返されます。この例では、画像処理ユースケースに対してこれらのタスクを実行します。

要件

この例に必要なツール:

  • Signal Processing Toolbox™

  • FPGA設計ソフトウェア

  • サポートされている FPGA 開発ボードおよびアクセサリの 1 つ (この例では ML403 ボードはサポートされていません)。サポートされているハードウェアの詳細については、FPGA検証でサポートされるFPGAデバイス を参照してください。

  • イーサネットを使用した接続の場合:ホストコンピュータにインストールされたギガビットイーサネットアダプタ、ギガビットイーサネットクロスオーバーケーブル

  • JTAGを使用した接続の場合:Intel FPGA ボード用の USB Blaster I または II ケーブルとドライバー。Xilinx® FPGA ボード用の Digilent® JTAG ケーブルとドライバー。

  • PCI Express®を使用した接続の場合:ホスト コンピュータの PCI Express スロットにインストールされた FPGA ボード。

ソーベルエッジ検出

sobel_edge_hardware サブシステムは、FPGA に合成されるアルゴリズムです。刺激は、画像(一時停止の標識)を含む gif ファイルです。この例では、画像がアルゴリズムとともに FPGA 内で移動され、その FPGA 設計用の FIL ブロックが作成されます。

この手法を実装するために実行される手順は、モデル fil_sobel_model に示されています。このモデルでは、gif ファイルはルックアップ テーブルに含まれており、カウンターを使用して画像内の行をスキャンし、アルゴリズムに送信します。FIL ブロックは、動作ブロックと並行してモデルに追加され、結果分析の簡単な例として、FPGA の出力を動作モデルに対して直接チェックできるようになります。ボタンをクリックしてモデルを開きます。

HDL コードの生成

HDL Coder™ をお持ちの場合は、HDL ワークフロー アドバイザまたは構成パラメータ UI を使用して、「SobelEdge_FPGA」サブシステムのコードを生成できます (詳細については、HDL Coder のドキュメントを参照してください)。

HDL Coder がない場合は、現在のディレクトリにある事前に生成された HDL ファイルを使用できます。

FPGA設計ソフトウェアのセットアップ

FPGA インザループを使用する前に、FPGA 設計ソフトウェアにアクセスするためのシステム環境が適切に設定されていることを確認してください。関数 hdlsetuptoolpath を使用して、現在の MATLAB® セッションのシステム パスに FPGA 設計ソフトウェアを追加できます。

FPGA インザループの構成と構築

FIL ウィザードは、FPGA インザループの構築に必要な設定をガイドします。次のコマンドでウィザードを起動します。

filWizard;

1. ハードウェア オプションで、ホスト コンピューターに接続されている FPGA 開発ボードを選択します。必要に応じて、「詳細オプション」でボードの IP と MAC アドレスをカスタマイズすることもできます。[次へ] をクリックして続行します。

2. [ソース ファイル] で、参照 を使用して、デザイン用に生成された次の HDL ファイルをソース ファイル テーブルに追加します。

SobelEdge_FPGA.vhd,
DualPortRAM_128x9b.vhd
DualPortRAM_128x9b_block.vhd
sobel_edge_eml.vhd
sobel_edge_hardware.vhd
SobelEdge_FPGA_pkg.vhd
u_d_ram.vhd
u_d_ram_block.vhd

SobelEdge_FPGA の横にある最上位のチェックボックスをオンにします。[次へ] をクリックして続行します。

3. DUT I/O ポートでは、ポート名、方向、幅、ポート タイプなどの入力ポートと出力ポートの情報が HDL ファイルから自動的に生成されます。クロックやデータなどのポート タイプはポート名に基づいて生成されます。必要に応じて選択を変更できます。この例では、生成されたポート タイプは正しいので、[次へ] をクリックできます。

4. ビルド オプションで、FIL 出力ファイルのフォルダーを指定します。この例ではデフォルト値を使用できます。ビルドをクリックします。ビルドをクリックすると、FIL ウィザードによって FPGA インザループ シミュレーションに必要なすべてのファイルが生成され、次のアクションが実行されます。

  • 新しいSimulinkモデルでFILブロックを生成します

  • FPGAプロジェクトをコンパイルし、FPGAプログラミングファイルを生成するためのコマンドラインウィンドウを開きます。

FPGA プロジェクトのコンパイル プロセスには数分かかります。プロセスが完了すると、コマンド ライン ウィンドウを閉じるように求められます。今すぐこのウィンドウを閉じてください。

FILブロックを構成する

FPGA インザループ シミュレーションを準備するには、以下の手順に従って FIL ブロックを構成します。

1. テストベンチ モデル fil_sobel_model を開き、生成された FIL ブロックをモデルにコピーします。

2. FIL ブロックをダブルクリックしてブロック マスクを開きます。生成されたプログラミング ファイルを使用して FPGA をプログラムするには、ロード をクリックします。

3. ランタイム オプションで、オーバークロック係数 を 1 に変更します。これは、入力値が変更される前に、各入力値が FPGA クロックによって 1 回サンプリングされることを指定します。

4. 出力フレームのサイズを 20000 に設定します。

5. FIL ブロック マスクで、[信号属性] タブをクリックします。動作 Sobel ブロックのデータ型と一致するように、out1 のデータ型を boolean に変更します。

5. ブロックマスクを閉じるには、OK をクリックします。

結果

この例で提供されるモデルは、動作ブロックから取得された結果と FPGA から取得された結果を比較します。そのモデルを実行して同等性を観察することができます。動作パスのみを含む新しいモデルと、FIL ブロックを含むパスのみを含む別のモデルを作成することにより、動作シミュレーションと FIL シミュレーションの相対的なシミュレーション パフォーマンスを観察することもできます。次を使用して、各モデルを個別に実行します。

tic;
sim(your_model_name);
toc

FIL の方が高速であることがわかります。この速度の向上は、20000 サンプルに対して FIL 関数呼び出しが 1 回だけであるのに対し、動作モデルではすべてのデータを処理するために 20000 回の関数呼び出しが必要であるためです。したがって、画像のサイズが大きいほどパフォーマンスが向上します。この手順でこの例は終了します。