Main Content

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

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

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

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

Simulink モデルの概要

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

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

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

HDL コードの生成

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

Viterbi デコーダーの HDL コードを生成し、新しい Simulink モデルを開くには、テストベンチの生成 をクリックし、次に HDL コシミュレーション をクリックします。

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

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

HDL シミュレーターを起動するには、モデル内の Start Simulator ブロックをダブルクリックします。このアクションは、HDL シミュレーターを起動するだけでなく、HDL コードをコンパイルするコマンドを入力し、MATLAB および Simulink との共同シミュレーションを準備します。

シミュレーションの実行

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

シミュレーションが終了すると、Simulink モデルに結果が表示されます。この例では、結果は 2 つの表示ブロックに表示されるビット エラー レート (BER) として表示されます。2 つのディスプレイには、Wireless HDL Toolbox 製品の Viterbi デコーダ ブロックと、HDL Coder を使用して実装された HDL コード ブロックからの BER 結果が表示されます。結果に基づくと、HDL Coder 実装は元のブロックと同じ結果を生成します。

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

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

EsNo = 5;

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

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

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

参考

機能

makehdl (HDL Coder) makehdltb (HDL Coder)

ブロック

Viterbi Decoder (Wireless HDL Toolbox)

関連するトピック