Main Content

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

MATLABでスペクトル表示コンポーネントを実装する

この例では、Mentor Graphics® ModelSim® および Questa® または Cadence® Xcelium™ でMATLAB®を実行し、HDL Verifier™関数matlabcpを使用して、より大きな HDL プロジェクトの出力を視覚化する方法を示します。MATLABのスコープ、プロット、ビューアのホストを使用して HDL モジュールの出力を視覚化および分析すると、HDL モジュールの開発とその検証が迅速化されます。この例では、 matlabcp関数を使用して、HDL モジュールをその出力にバインドします。MATLABの関数plotを使用して、HDL モジュールの出力を視覚化します。

設計作業

この例では、 matlabcpを使用して、正弦波ジェネレーター、ローパス フィルター、スペクトルを表す空の HDL ファイルで構成される VHDL® プロジェクトからの信号のスペクトルを視覚化します。表示コンポーネント。 matlabcp は、空の HDL ファイルを使用してプロジェクト出力をMATLAB関数に送信し、データを 128 サンプルのフレームにバッファリングします。フレームが完了するたびに、 MATLAB関数はフレーム内のフィルターされていないデータとフィルターされたデータのスペクトルをプロットします。HDL データの読み取りにmatlabcpを使用すると、 MATLAB がHDL シミュレーターと並行してデータ処理とグラフィック作成を実行するため、生のシミュレーター データとビジュアル プロットの間の移行が合理化されます。この図は、協調シミュレーション システムの概要を示しています。

この例では、HDL 開発者の視点を念頭に置いているため、HDL シミュレーターとコマンド ライン ターミナルを使用してテストを実行し、 MATLABを使用して HDL シミュレーションのデータを操作および視覚化することに主に重点を置いています。

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

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

「デザインファイル」

  • ファイルsine_waves.vhd には、 VHDL で実装された周波数ホッピング正弦波が含まれています。

  • ファイルspec_lowpass_filter.vhd にはローパス フィルターが含まれています。

  • ファイルspec_display.vhd には、 matlabcpが VHDL データをMATLABコードにフィードするために使用する空のコンポーネントが含まれています。

  • ファイルspecdisp_top.vhd には、 matlabcpの信号ソース、ローパス フィルター、および空のコンポーネント間の最上位配線が含まれています。

  • ファイルspecdisplay.m には、 HDL シミュレーターからの入力を処理し、そのスペクトルをプロットするMATLABコードが含まれています。

「スクリプトファイル」

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

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

さらに、この例では、ModelSim/QuestaSim または Xcelium とMATLAB がシステム パス上にある必要があります。これは、これらの製品をターミナルから実行できる必要があるためです。

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

matlabcpを使用して、 MATLAB関数を HDL モジュールにバインドできます。入力ポートと出力ポートが宣言された空の HDL コンポーネントが必要です。matlabcp は空の HDL コンポーネントをMATLABと HDL シミュレーター間の通信用のシェルとして使用し、 MATLAB関数はコンポーネントの機能を提供するため、これらのファイルが必要です。matlabcpを使用すると、 MATLAB はシミュレーションの進行に応じてシミュレーター データを処理できるため、元の出力を視覚的な形式に変換するのに必要な時間を節約できます。matlabcpに必要なファイルの作成については、 MATLABコンポーネント関数を作成するを参照してください。

協調シミュレーションを実行する

コシミュレーションを開始するには、 MATLAB を開き、HDL シミュレーターとMATLAB間の通信用の HDL Link MATLABサーバーを実行します。これらのアクションを完了するには、オペレーティング システムに基づいて次のコマンドを使用します。

  • Windows: matlab -nodesktop -r "hdldaemon"

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

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

"HDLDaemon shared memory server is running with 0 connections"

次に、協調シミュレーションを開始します。適切なコマンド (シミュレーターとオペレーティング システムに基づく) をMATLABコマンド ウィンドウに入力します。

モデルシム/クエストシム

  • Windows と Linux:

Launch ModelSim/QuestaSim and execute TCL commands in the simulator by
entering this command.
vsim('tclstart','do qcommands_spec.tcl');

「エクセリウム」

  • Linux:

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

tclcmds_spec_xc;

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

nclaunch('tclstart', tclcmds);

このコマンドは協調シミュレーションを開始します。シミュレーションの過程で、 MATLAB は複数のフレームをキャプチャ、処理、および表示します。プロットは、フィルターされていない信号とフィルターされた信号のパワー スペクトルの比較を示しています。周波数がより高い値に近づくにつれて、フィルターされた信号が減少し、最終的に特定の点でゼロになることが観察されます。この動作は、ローパス フィルターでは一般的なものです。

概要

この例では、MATLABを使用して、HDL シミュレーションの処理が終了した後に結果を解釈して表示する方法を示します。シミュレーターはプロジェクトの結果を変更せずに表示できますが、視覚化のために結果に変換を適用するのは難しい場合があります。この例では、周波数ホッピング正弦波のスペクトルが必要ですが、このスペクトルを取得するにはフーリエ変換が必要です。この要件により、コーディング、シミュレーション、結果の検証のプロセスが大幅に複雑になります。

MATLABとmatlabcpを使用すると、 MATLAB がシミュレーションからデータを読み取り、組み込み機能を利用してフーリエ変換を適用し、結果を表示できるため、この視覚化を大幅に高速化できます。検証プロセスでMATLABを使用することにより、データの視覚化の複雑さが軽減され、シミュレーション結果を視覚化されたデータに変換するプロセスが合理化されます。

参考

matlabcp hdldaemon vsim nclaunch

関連するトピック

著作権 2005-2023 The MathWorks, Inc.