メインコンテンツ

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

Simulink を使用してレイズド コサイン フィルタ設計を検証する

Simulink と Cosimulation Wizard チュートリアルの概要

このチュートリアルでは、Simulink® モデルをテスト ベンチとして使用し、Simulink と HDL シミュレータを使用して HDL 設計を検証する HDL Verifier™ アプリケーションを設定するための基本的な手順について説明します。このチュートリアルでは、Simulink と HDL シミュレーターをコシミュレートする手順を実行して、Verilog® で記述された単純なレイズド コサイン フィルターを検証します。

メモ

このチュートリアルには、Simulink、HDL Verifier、Fixed-Point Designer™、および ModelSim® または Xcelium™ HDL シミュレータが必要です。このチュートリアルでは、HDL コシミュレーション ブロックの HDL コードをインポートする を読んでいることを前提としています。

このチュートリアルでは、次の手順を実行します。

チュートリアル:チュートリアル ファイルのセットアップ (Simulink)

他のユーザーがチュートリアル ファイルのコピーにアクセスできるようにするには、次の手順に従って、独自のチュートリアル作業用のフォルダーを設定します。

  1. MATLAB® インストール フォルダーの範囲外にフォルダーを作成し、そこにチュートリアル ファイルをコピーします。フォルダーは書き込み可能である必要があります。このチュートリアルでは、MyTests という名前のフォルダーを作成することを前提としています。

  2. 次のディレクトリにあるすべてのファイルを、作成したフォルダーにコピーします。

    matlabroot\toolbox\edalink\foundation\hdllink\demo_src\tutorial

    ここで、matlabroot はシステム上の MATLAB ルート ディレクトリです。

  3. これで、作業ディレクトリに次のファイルがすべて作成されましたが、このチュートリアルではそのうちの 2 つだけが必要になります。

    • filter_tb.v (このチュートリアルでは使用しません)

    • mycallback_solution.m (このチュートリアルでは使用しません)

    • rcosflt_beh.v (このチュートリアルでは使用しません)

    • rcosflt_rtl.v

    • rcosflt_rtl.vhd

    • rcosflt_tb.mdl

チュートリアル:コシミュレーション ウィザードを起動 (Simulink)

  1. MATLAB を起動します。

  2. チュートリアル:チュートリアル ファイルのセットアップ (Simulink) で作成したディレクトリを MATLAB の現在のディレクトリとして設定します。

  3. MATLAB コマンド プロンプトで、次のように入力します。

    >>cosimWizard

    このコマンドは、コシミュレーション ウィザードを起動します。

チュートリアル:コシミュレーションウィザードを使用してHDLコシミュレーションブロックを構成する

このチュートリアルでは、HDL Cosimulation ブロックの作成を支援するために設計された次のウィザード ページを案内します。

チュートリアル:コシミュレーション タイプを指定する (Simulink)

「コシミュレーション タイプ」ページで、次の手順を実行します。

  1. HDL cosimulation with オプションを Simulink に設定したままにします。

  2. ModelSim を使用している場合は、HDL Simulator オプションを ModelSim のままにしておきます。

    Xcelium または Vivado® を使用している場合は、HDL Simulator オプションをそれぞれ Xcelium または Vivado Simulator に変更します。

  3. HDL シミュレータ実行ファイルがシステム パスに表示される場合は、デフォルト オプション Use HDL simulator executables on the system path オプションのままにします。

    これらの実行ファイルがパス上に表示されない場合は、コシミュレーションタイプ—Simulinkブロック で説明されているように HDL シミュレータ パスを指定します。

    Cosimulation Wizard open on the Cosimulation Type pane, with ModelSim selected for HDL Simulator, and Simulink selected for the "HDL cosimulation with" parameter.

  4. Next をクリックして、HDL ファイル ページに進みます。

チュートリアル:HDL ファイルを選択 (Simulink)

HDL ファイル ページで、次の手順を実行します。

  1. HDL ファイルをファイル リストに追加します。

    1. Add をクリックし、チュートリアル:チュートリアル ファイルのセットアップ (Simulink) で作成したディレクトリを参照します。

    2. Verilogの場合はrcosflt_rtl.vを選択します。VHDL®の場合はrcosflt_rtl.vhdを選択します。

    3. ファイル リスト内のファイルを確認し、ファイルの種類が期待どおりに識別されていることを確認します。

  2. Next をクリックして、HDL コンパイル ページに進みます。

チュートリアル:HDL コンパイル コマンドを指定する (Simulink)

コシミュレーション ウィザードは、コンパイル コマンド ウィンドウにデフォルトのコマンドを一覧表示します。このチュートリアルではこれらのコマンドを変更する必要はありません。

独自のコードを使用して Cosimulation Wizard を実行する場合、このウィンドウでコンパイル コマンドを追加または変更できます。たとえば、-vlog01compat スイッチを追加できます。

ModelSim ユーザー:HDL コンパイル ペインは、次の図のようになります。

Xcelium ユーザー:HDL コンパイル ペインは、次の図のようになります。

Next をクリックして、HDL モジュール ペインに進みます。

MATLAB コンソールにコンパイル ログが表示されます。コンパイル中にエラーが発生した場合、そのエラーはステータス領域に表示されます。次の手順に進む前に、エラーを解消するために可能な設定を変更してください。

チュートリアル:コシミュレーションのシミュレーション オプションを選択 (Simulink)

ModelSim または Xcelium を使用している場合は、シミュレーション オプション ペインで次の手順を実行します。

  1. 協調シミュレーション用の HDL モジュール/エンティティの名前を指定します。

    ドロップダウンリストからrcosflt_rtlを選択します。このモジュールは、コシミュレーションに使用する Verilog/VHDL モジュールです。

    ドロップダウン リストに rcosflt_rtl が表示されない場合は、ファイル名を手動で入力できます。

  2. Connection method の場合、ファイアウォール ポリシーで TCP/IP ソケット通信が許可されていない場合は、Shared Memory を選択します。

    シミュレーション オプションは、次の図に示すオプションのようになります。

    Xcelium ユーザー:HDLモジュールのオプションは次の図のようになります。

  3. Next をクリックして、Simulink ポート ペインに進みます。

    コシミュレーション ウィザードは、指定された HDL モジュールとシミュレーション オプションを使用して、バックグラウンド コンソールで HDL シミュレーターを起動します。ウィザードが HDL シミュレータを起動すると、ウィザードは Verilog/VHDL モデル rcosflt_rtl の入力ポートと出力ポートを設定し、次のステップで表示します。

Vivado シミュレータを使用している場合、シミュレーション オプション ペインの外観は少し異なります。

  1. Name of HDL module to cosimulate with は読み取り専用パラメータであり、チュートリアル:HDL ファイルを選択 (Simulink) ステージで指定された最上位 HDL モジュールを表示します。

  2. 内部信号の波形ファイルを生成する場合は、Debug internal signals パラメータを wave に設定します。このオプションはシミュレーションのパフォーマンスに影響する可能性があります。波形生成を無効にするには、このパラメータを off に設定します。

  3. HDL time precision パラメータを必要な時間精度に設定します。

  4. Next をクリックして Input/Output Ports ペインに進みます。

    コシミュレーション ウィザードは、指定された HDL モジュールとシミュレーション オプションを使用して、バックグラウンド コンソールで HDL シミュレーターを起動します。ウィザードが HDL シミュレータを起動すると、ウィザードは Verilog/VHDL モデル rcosflt_rtl の入力ポートと出力ポートを設定し、次のステップで表示します。

チュートリアル:ポートタイプを指定する

このステップでは、Cosimulation Wizard は、それぞれ rcosflt_rtl の入力ポートと出力ポートを含む 2 つのテーブルを表示します。

Cosimulation Wizard は各ポートのポート タイプを識別しようとします。ウィザードがポートを誤って識別した場合は、これらのテーブルを使用してポート タイプを変更できます。

  • 入力ポートは、ClockResetInput、または Unused から選択できます。HDL Verifier は、コシミュレーション中に Input とマークされた入力ポートのみを Simulink に接続します。

  • HDL Verifier は、コシミュレーション中に Output とマークされた出力ポートを Simulink に接続します。ウィザードと Simulink は、コシミュレーション中に Unused とマークされた出力ポートを無視します。

  • Clock および Reset として識別される信号のパラメータは、後の手順で変更できます。

デフォルトのポート タイプを受け入れ、Next をクリックして Output Port Details ページに進みます。

チュートリアル:出力ポートの詳細を指定する

出力ポートの詳細ページで、次の手順を実行します。

  1. バックプロパゲーションを介して継承するには、filter_out のサンプル時間を -1 に設定します。

  2. Verilog コードから、Cosimulation Wizard が出力を S34,29 形式で表していることがわかります。次のフィールドを変更します。

    • データ型をFixedpointにする

    • Signed にサイン

    • 分数の長さを 29 にする

    .結果は次の画像のようになります。

  3. Next をクリックして、クロック/リセットの詳細ページに進みます。

チュートリアル:時計の設定と詳細のリセット

このチュートリアルでは、クロック Period (ns) を 20 に設定します。Verilog コードから、リセットは同期されており、アクティブな値は 1 であることがわかります。クロックの立ち上がりエッジによってトリガーされ、1 ns の時点で HDL 設計全体をリセットできます。リセット信号には 15 ns の持続時間を使用します。

クロック/リセットの詳細ページで、次の手順を実行します。

  1. クロック周期を 20 に設定します。

  2. アクティブ エッジを Rising のままにするか、設定します。

  3. リセット初期値を 1 のままにするか、1 に設定します。

  4. リセット信号の持続時間を 15 に設定します。

    クロックとリセットは、次の図に示す信号と同じになります。

  5. Next をクリックして、開始時間の調整ページに進みます。

チュートリアル:開始時間の調整を確認する

開始時間アライメント ページには、クロック信号とリセット信号の波形のプロットが表示されます。コシミュレーション ウィザードは、コシミュレーションを開始する HDL 時間を赤い線で表示します。開始時間は、Simulink が HDL シミュレータから最初の入力サンプルを取得する時間でもあります。

  1. 開始時刻の調整を設定または確認する

    私たちのクロックのアクティブ エッジは立ち上がりエッジです。したがって、HDL シミュレータの 20 ns の時点で、レイズド コサイン フィルタの登録された出力は安定します。競合状態は存在せず、コシミュレーションを開始するためのデフォルトの HDL 時間 (20 ns) がこのシミュレーションに必要な値です。開始時間を変更する必要はありません。

  2. ブロック生成に進むには、Next をクリックします。

チュートリアル:ブロックを生成する

HDL Cosimulation ブロックを生成する前に、コシミュレーション ウィザードを終了する前にタイムスケールを決定するオプションがあります。あるいは、後でタイムスケールを計算するように HDL Verifier に指示することもできます。検証ソフトウェアによるタイムスケールの計算は、生成された HDL Cosimulation ブロックのすべての入力/出力ポートを接続してシミュレーションを開始した後に行われます。

  1. Automatically determine timescale at start of simulation を選択したままにします (デフォルト)。後で、シミュレーションを開始する前に、計算されたタイムスケールを表示し、その値を変更する機会があります。

    Cosimulation Wizard open on the Block Generation pane. The parameter "Automatically determine timescale at start of simulation" is checked.

  2. Finish をクリックして、コシミュレーション ウィザード セッションを完了します。

チュートリアル:HDL設計を検証するためのテストベンチを作成する

このチュートリアルでは、実際にテストベンチを作成することはありません。代わりに、完成したモデル (rcosflt_tb.mdl) は、チュートリアル:チュートリアル ファイルのセットアップ (Simulink) で作成したディレクトリにあります。

  1. Finish をクリックすると、Simulink によってモデルが作成され、次の項目が入力されます。

    • HDL Cosimulation ブロック

    • HDL デザインを再コンパイルするためのブロック (ブロックをダブルクリックすると起動されるスクリプトへのリンクが含まれています)

    • HDL シミュレータを起動するブロック (ブロックをダブルクリックすると起動されるスクリプトへのリンクが含まれています)

    A Simulink pane with an HDL Cosimulation block for Modelsim labeled rcosflt_rtl, a block labeled "Compile HDL Design", and a block labeled "Launch HDL Simulator".

    とりあえずモデルをそのままにして、次のステップに進みます。

    Vivado ユーザー: Simulink はモデルを作成し、次の項目を入力します。

    • HDL Cosimulation ブロック

    • 共有ライブラリ(DLL ファイル)を再生成するためのブロック。ブロックには、ブロックをダブルクリックすると起動されるスクリプトへのリンクが含まれています。

    A Simulink pane with an HDL Cosimulation block for Vivado cosimulation labeled rcosflt_rtl, and a block labeled "Generate DLL".

  2. チュートリアル:チュートリアル ファイルのセットアップ (Simulink) で作成したディレクトリにあるファイル rcosflt_tb を開きます。

    このファイルには、Simulink テストベンチのモデルが含まれています。このテスト ベンチを使用して、対応する HDL Cosimulation ブロックを生成した HDL デザインを検証します。

  3. 次のように、HDL Cosimulation ブロックをテストベンチ モデルに追加します。

    1. 新しく生成されたモデルから HDL Cosimulation ブロックをこのテスト ベンチ モデルにコピーします。

    2. 定数ブロックと変換ブロックが HDL Cosimulation ブロックへの入力として並び、バスが出力として並ぶようにブロックを配置します。

    3. テストベンチ内のブロックを HDL Cosimulation ブロックに接続します。

  4. スクリプト ブロックをテスト ベンチの下の領域にコピーします。モデルは次の図のようになります。

  5. モデルを保存します。

チュートリアル:コシミュレーションを実行してHDL設計を検証する

  1. Launch HDL Simulator というラベルの付いたブロックをダブルクリックして、HDL シミュレーターを起動します。

    Vivado ユーザー: Simulink ツールストリップの Simulation タブで、Run をクリックしてコシミュレーションを開始します。協調シミュレーションが開始され、その後停止し、タイムスケールを決定するように求められます。ステップ 3 に進みます。

  2. HDL シミュレータの準備ができたら、Simulink に戻ってシミュレーションを開始します。

  3. タイムスケールを決定します。

    コシミュレーション ウィザードの最後のページで Automatically determine timescale at start of simulation オプションを選択したことを思い出してください。これを行うと、HDL Verifier はシミュレーションを開始する代わりに、タイムスケールの詳細 GUI を起動します。

    HDL シミュレータと Simulink は両方とも filter_in ポートと filter_out ポートを 1 秒間隔でサンプリングします。ただし、HDL シミュレータでのサンプル時間はクロック周期 (2 ns) と同じである必要があります。

    1. /rcosflt_rtl/clk の Simulink サンプル時間を 1 (秒) に変更し、Enter を押します。その後、ウィザードはテーブルを更新します。次の図は新しいタイムスケールを示しています。Simulink の 1 秒は、HDL シミュレータの 2e-008 秒に相当します。

    2. タイムスケールの詳細を終了するには、OK をクリックします。

  4. シミュレーションを再開します。

  5. テストベンチ モデル内のスコープからの結果を確認します。スコープには、レイズド コサイン フィルターへの入力の遅延バージョンとそのフィルターの出力の両方が表示されます。このフィルタの出力を直接サンプリングすると、シンボル間干渉は発生しません。

このステップで、Simulink チュートリアルで使用するための Cosimulation Wizard が終了します。