Main Content

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

HDL コシミュレーションを使用したビタビ デコーダの検証

この例では、固定小数点ビタビ デコーダを実装するための HDL コードを生成および検証する方法を示します。

この例を実行するには、必要なMATLAB®製品に加えて、Mentor Graphics® ModelSim®/Questasim® または Cadence® Xcelium® をインストールしてMATLABシステム パスに含める必要があります。

Simulinkモデルの概要

Simulink®モデル viterbi_codegen.slx を開きます。このモデルは、固定小数点ビタビ デコーダ用の HDL コードを生成します。

このモデルは、バイナリ位相偏移キーイング (BPSK) ブロックと加法性白色ガウス ノイズ (AWGN) ブロックを使用して、データのワイヤレス送信をシミュレートします。最上位モデルでは、平均信号エネルギー対ノイズ比を表すパラメーターEsNoがデータの送信に影響します。デフォルトでは、EsNoパラメーターは0に設定されています。

データ送信を開始すると、テスト ベンチは、 Wireless HDL Toolbox™製品を使用して実装されるViterbi Decoder (Wireless HDL Toolbox)ブロックにデータを送ります。Viterbi Decoder ブロックは元のデータの回復を試みますが、回復中にエラーが発生する可能性があります。このデコーダの精度を測定するために、テストベンチはデコードされたデータを元のデータとともにError Rate Calculation (Communications Toolbox)ブロックに送信します。次に、 Display (Simulink)ブロックにこの計算の結果が表示されます。

HDL コードの生成

HDL Coder(TM) アプリを開くには、 Simulinkツールストリップの アプリ タブで、HDL Coder アプリ アイコンをクリックします。コシミュレーションに使用するツールチェーンを選択するには、まず設定をクリックして、コンフィギュレーパラメーターダイアログボックスを開きます。左側のペインで、HDL コード生成、次にテストベンチ をクリックします。シミュレーション ツールパラメーターでは、ツールチェーンを選択します。「OK」をクリックして変更を適用します。

ビタビ デコーダの HDL コードを生成し、新しいSimulinkモデルを開くには、Generate Testbench をクリックし、次に HDL Cosimulation をクリックします。

HDLシミュレータを起動する

テストベンチに合わせて新しいSimulinkモデルを接続してフォーマットできます。この例には、viterbi_modelsim.slx と viterbi_xcelium.slx という 2 つの準備されたモデルが含まれています。ツールチェーンに適合するモデルを選択してください。この例では、図に示す ModelSim/QuestaSim Simulinkモデルを使用します。

HDL シミュレーターを起動するには、モデル内の Start Simulator ブロックをダブルクリックします。このアクションでは、HDL シミュレーターの起動に加えて、HDL コードをコンパイルするコマンドを入力し、 MATLABおよびSimulinkとの協調シミュレーションの準備を行います。

シミュレーションの実行

HDL シミュレータが HDL ファイルのコンパイルとシミュレーションの準備を完了すると、テキストReady for cosimulation ...が HDL シミュレータ コマンド ウィンドウに表示されます。このテキストが表示されたら、 Simulinkで開いているモデルに戻り、そこからシミュレーションを実行します。

シミュレーションが終了すると、 Simulinkモデルに結果が表示されます。この例では、結果は 2 つの表示ブロックに示されるビット誤り率 (BER) として表示されます。2 つの表示には、 Wireless HDL Toolbox製品の Viterbi Decoder ブロックと HDL HDL Coderを使用して実装された HDL コード化ブロックからの BER 結果が表示されます。結果に基づいて、 HDL Coder実装は元のブロックと同じ結果をもたらします。

新しいパラメーターを使用してシミュレーションを再実行する

パラメーターEsNoは、送信の動作を制御します。シミュレーションの動作を変更するには、このパラメーターを変更します。たとえば、 MATLABコマンド プロンプトで次のコマンドを入力します。

EsNo = 5;

この変更は Viterbi ブロックに影響しないため、このパラメーターを変更しても新しい HDL コードを生成する必要はありません。新しいパラメーター値を使用してこの例を繰り返すには、開いているSimulinkモデルからシミュレーションを再度実行します。

シミュレーションを終了する

シミュレーションが終了したら、HDL シミュレーター セッションを閉じます。次に、 Simulinkに戻り、モデルを閉じます。

参考

"機能"

makehdl (HDL Coder) | <docid:hdlcoder_ref#btke2q9 makehdltb>

「ブロック」

Viterbi Decoder (Wireless HDL Toolbox)

関連するトピック