Main Content

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

MATLABで発振器のフィルター コンポーネントを実装する

この例では、 HDL Verifier™関数matlabcpを使用して、Mentor Graphics® ModelSim® および Questa® または Cadence® Xcelium™ で HDL プロジェクトのフィルター コンポーネントを実装する方法を示します。HDL を使用して HDL プロジェクトで使用する複雑なコンポーネントをモデル化する代わりに、 matlabcpを使用してコンポーネントを実装できます。

設計作業

この例では、プロジェクトは HDL シミュレーションを実行する前に、VHDL® でオシレーターをコンパイルし、 MATLAB®を使用してフィルター コンポーネントを定義します。発振器は HDL で書かれた単純な固定小数点正弦波発生器であり、ローパス フィルターに供給します。このローパス フィルターは、 MATLABのポリフェーズ技術を使用して実装された 8 倍オーバーサンプリングの 255 次 (256 タップ) フィルターです。フィルターの入力と出力は、HDL シミュレーターとMATLABの間でmatlabcpによって伝送され、結果はシミュレーター波形ビューアーを使用して表示されます。この例では、シミュレーター波形ビューアーを使用して結果を表示することにより、 matlabcpが、後のステップでMATLABを必要とせずに、 MATLABで設計されたコンポーネントをより大きな HDL ワークフローにシームレスに統合できることを示します。この図は、この協調シミュレーション プロセスの全体的な流れを示しています。

この例では、HDL 開発者の視点を考慮しているため、HDL シミュレーターとコマンド ライン ターミナルを使用してテストを実行すること、およびMATLABを使用してプロジェクト コンポーネントの一部を実装することに主に重点を置きます。

デザインファイルとスクリプトファイルの概要

この例では、デザイン ファイルとスクリプト ファイルの 2 種類のファイルを使用します。

「デザインファイル」

  • ファイルsimple_osc.vhd には、 VHDL を使用して設計された単純な正弦波発振器が含まれています。

  • ファイルosc_filter.vhd は、 matlabcpがコンポーネントの入力を受信し、コンポーネントの出力を送信するために使用される空のコンポーネントです。

  • ファイルosc_top.vhd には、オシレーターとローパス フィルターの最上位モデルが含まれています。

  • ファイルoscfilter.m には、 MATLABで実装されたフィルターの動作実装が含まれています。

「スクリプトファイル」

  • ファイルqcommands_osc.tcl には、協調シミュレーションを実行するために ModelSim/Questasim に送信される TCL コマンドが含まれています。

  • ファイルtclcmd_cosim_xc.m には、コシミュレーションを実行するために Xcelium に送信される TCL コマンドが含まれています。

MATLAB関数と HDL モジュールのバインド

matlabcpを使用して、 MATLAB関数を HDL モジュールにバインドできます。入力ポートと出力ポートが宣言された空の HDL コンポーネントが必要です。matlabcp はMATLABと HDL シミュレーター間の通信用のシェルとして空のコンポーネントを使用し、 MATLAB関数がその機能を提供するため、これらのファイルが必要です。単一コンポーネントを検証するときにmatlabcpを使用すると、 MATLAB がシステムのさまざまな部分をシミュレートできるため、テスト用の HDL コードの作成に必要な時間と労力が節約されます。このアプローチでは、テストの生成とコンポーネントのテスト、およびより効率的な検証ワークフローの作成に焦点が移ります。matlabcpに必要なファイルの作成については、 MATLABコンポーネント関数を作成するを参照してください。

協調シミュレーションの実行

この例では、ターミナルから ModelSim/Questasim または Xcelium およびMATLABにアクセスする必要があります。これらのシミュレータをシステム パスに含める必要があります。コシミュレーションを開始するには、 MATLAB を開き、HDL シミュレーターとMATLAB間の通信用のhdldaemonコマンドを実行します。これらのアクションを完了するには、オペレーティング システムに基づいて次のコマンドを使用します。

  • Windows: matlab -nodesktop -r "hdldaemon"

  • Linux: xterm -e "matlab -nodesktop -r "hdldaemon"" &

これにより、 MATLAB が別のターミナル ウィンドウでヘッドレス モードで開き、HDL Link MATLABサーバーが起動します。MATLAB を実行している端末には、このメッセージが表示されます。

"HDLDaemon shared memory server is running with 0 connections"

このメッセージが表示されたら、 MATLABコマンド ウィンドウに適切なコマンド (シミュレーターとオペレーティング システムに基づく) を入力して、協調シミュレーションを開始します。

  • Windows と Linux:

To launch ModelSim/Questasim and execute TCL commands in the simulator,
run this command.
vsim('tclstart','do qcommands_osc.tcl');

「エクセリウム」

1. MATLABコマンド プロンプトで次のコマンドを入力して、 MATLABスクリプトtclcmd_osc_xc.mを実行します。

tclcmd_osc_xc;

2.MATLABコマンド プロンプトで次のコマンドを入力して、Xcelium を起動します。

nclaunch('tclstart', tclcmds);

それぞれのコマンドを入力すると、コシミュレーションが開始され、それぞれの HDL シミュレーターでこれらのプロットが生成されます。コシミュレーション直後はプロットが異なって見える場合がありますが、時間軸全体を含むようにズームすると、同様のプロットが得られることがあります。

ModelSim/Questasim

「エクセリウム」

概要

この例では、HDL プロジェクトの主要コンポーネントの代わりにMATLABを使用し、ローパス フィルターの HDL 実装を置き換える方法を示します。ファイルosc_filter.vhd は、入力をMATLAB関数に送り、 MATLAB関数からの出力をプロジェクトの残りの部分に送信するためのシステム内のプレースホルダーです。フィルターの実装と、入力をフィルターして出力を生成するプロセスは、完全にMATLAB関数によって駆動されます。

MATLABを使用すると、HDL シミュレーション プロジェクトのさまざまなコンポーネントをMATLAB の動作実装に置き換えることができ、HDL プロジェクトの準備に必要な時間が短縮されます。このアプローチでは、プロジェクトの他のコンポーネントの検証と作成に時間を費やすのではなく、問題のコンポーネントのテストと検証に焦点を移します。

参考

matlabcp hdldaemon vsim nclaunch

関連するトピック

著作権 2003-2023 The MathWorks, Inc.