このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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)
関連するトピック
Generate HDL Code (Wireless HDL Toolbox)
生成された HDL コードのテスト ベンチの選択 (HDL Coder)