Main Content

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

FPGA-in-the-Loop を使用した通信システム シミュレーションの高速化

この例では、FPGA-in-the-Loop (FIL) シミュレーションを使用して、通信システムの一部を高速化します。このアプリケーションは、ビタビ アルゴリズムを使用して、BPSK 変調され、AWGNチャネル経由で送信され、復調された畳み込みエンコードされたランダム ストリームをデコードします。サンプルごとのアプローチを使用すると、通常のSimulink®シミュレーションよりも若干速度が向上しますが、[フレームとして処理] オプションを使用するとさらに速度が向上します。

この例では、 Communications Toolbox™ をHDL Coder™およびHDL Verifier™と組み合わせて使用​​し、FPGA インザループを使用してシミュレーションを高速化するための設計ワークフローを示します。

要件と前提条件

この例を実行するには次のツールが必要です。

  • FPGA設計ソフトウェア

  • サポートされている FPGA 開発ボードの 1 つ。サポートされているハードウェアについては、 FPGA検証用にサポートされているFPGAデバイスを参照してください。

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

  • JTAGを使用した接続の場合:Intel FPGA ボード用の USB Blaster I または II ケーブルおよびドライバー。Digilent® JTAG ケーブルおよびザイリンクス FPGA ボード用ドライバー。

  • PCI Express®を使用した接続の場合:FPGA ボードはホスト コンピューターの PCI Express スロットに取り付けられます。

要件:MATLAB®および FPGA 設計ソフトウェアは、ローカルのコンピューターにインストールすることも、ネットワークでアクセス可能なデバイスにインストールすることもできます。ネットワークからのソフトウェアを使用する場合は、FPGA 開発ボードにプライベート ネットワークを提供するために、コンピュータに 2 番目のネットワーク アダプタをインストールする必要があります。ネットワーク アダプターのインストール方法については、お使いのコンピューターのハードウェア ガイドとネットワーク ガイドを参照してください。

1. Simulinkモデルを開いて実行する

モデルを開きます。処理するデータが大量であるため、FIL を使用しない場合、シミュレーションには約 9 秒かかります。次の手順では、FPGA-in-the-Loop を使用してシミュレーション速度を向上させます。

2.HDL コードの生成

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

これらのコピーしたファイルを使用する場合は、直接手順 3 に進みます。

次の手順を実行して、Viterbi ブロック サブシステムの HDL コードを生成します。

a. viterbi_block1というラベルの付いた既存の FIL ブロックを右クリックします。コード生成のためにこのブロックを削除するには、[削除] をクリックします。

「b.」 「モデリング」タブで、「モデル設定」をクリックします。

「d.」 「HDL コード生成」ペインをクリックし、「hdlcoderviterbi_for_fil/viterbi_block」が選択されていることを確認します。

「e.」 「生成」をクリックします。

あるいは、 MATLABプロンプトで次のコマンドを入力して HDL コードを生成することもできます。

makehdl('hdlcoderviterbi_for_fil/viterbi_block')

3.FPGA設計ソフトウェア環境の設定

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

4.FPGAインザループウィザードの実行

FIL ウィザードを起動するには、 MATLABプロンプトで次のコマンドを入力します。

filWizard;

4.1 ハードウェアオプション

ボードリストからボードを選択します。[次へ] をクリックして続行します。

4.2 ソースファイル

a. Viterbi Blockサブシステム用に以前に生成されたすべての HDL ソース ファイルを追加します。

「b.」ファイルviterbi_block.vhd をトップレベル ファイルとして選択します。これらのオプションを表示するには、FPGA インザループ ウィザードのウィンドウを広くする必要がある場合があります。

「c.」 viterbi_block がデフォルトのトップレベル モジュール名として入力されていることに注意してください。[次へ] をクリックして続行します。

4.3 DUT I/O ポート

最上位モジュールのポートが正しく識別されていることを確認します。[次へ] をクリックして続行します。

4.4 ビルドオプション

a.出力フォルダーを選択します。

「b.」 [Build] をクリックして、FIL ブロックとプログラミング ファイルをビルドします。

ビルド プロセス中に、次のアクションが発生します。

  • viterbi_block という名前の FIL ブロックが新しいモデルに生成されます。

  • 新しいモデルの生成後、FIL ウィザードはコマンド ウィンドウを開き、FPGA 設計ソフトウェアが合成、マッピング、配置配線、タイミング解析、および FPGA プログラミング ファイルの生成を実行します。このブロックの場合、これらの手順には約 20 分かかります。

FPGA 設計ソフトウェアのプロセスが完了すると、コマンド ウィンドウにメッセージが表示され、ウィンドウを閉じてもよいことが通知されます。

5.FIL 用のSimulinkモデルを開いて完成させる

a. hdlcoderviterbi_for_fil.mdlを開きます

「b.」以前に生成した FIL ブロックをそこにコピーし、viterbi_block と並列に、または viterbi_block の代わりに接続します。元のブロックには右側に入力があることに注意してください。FIL ブロックの入力が右側にあるようにするには、ブロックを右クリックし、フォーマット > ブロックの反転 を選択します。

6.FIL ブロックの構成

a.モデル内の FIL ブロックをダブルクリックして、ブロック マスクを開きます。

「b.」 「ロード」をクリックします。

「c.」 「OK」をクリックしてブロックマスクを閉じます。

7.FIL シミュレーションの実行

シミュレーションを 20480 秒間実行し、パフォーマンスを観察します。

FrameSize = 1;
tic;
sim('hdlcoderviterbi_for_fil');
fs1 = toc

フレーム サイズをより大きな数値に設定してみてください。この例では、フレーム サイズは 1024 バイトに設定されています。

FrameSize = 1024;
tic;
sim('hdlcoderviterbi_for_fil');
fs2 = toc

私たちのテストでは、FrameSize = 1 の場合のシミュレーション時間は約 16 秒で、これは FIL を使用しないSimulinkでのシミュレーションとほぼ同じですが、ザイリンクスを使用してフレーム サイズを 1024 に増やすと、シミュレーション時間は約 12 秒に短縮されました。 Spartan-6 SP605 ボード。この特定のボードとシステムでは全体の速度が約 1.7 倍速くなりますが、他のボードと通信システムではさらに高速になる可能性があります。

speedup = fs1 / fs2

Simulinkブロック バージョンを削除して FIL バージョンのみをシミュレーションし、デザインの FIL 部分にさらにブロックを追加してSimulinkスコープと表示を可能な限り削除することで、さらに高速化が可能です。

これで、FPGA インザループを使用した通信システム シミュレーションの高速化の例は終了です。