このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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.