Main Content

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

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

この例では、HDL Verifier™ 関数 matlabcp を使用して、Mentor Graphics® ModelSim® と Questa® または Cadence® Xcelium™ で MATLAB® を実行し、より大きな 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 サーバーを実行します。これらのアクションを完了するには、オペレーティング システムに基づいて次のコマンドを使用します。

  • ウィンドウズ: matlab -nodesktop -r "hdldaemon"

  • リナックス: xterm -e "matlab -nodesktop -r "hdldaemon"" &

このコマンドは、HDL リンク 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');

エクセリウム

  • リナックス:

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

tclcmds_spec_xc;

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

nclaunch('tclstart', tclcmds);

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

概要

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

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

参考

matlabcp hdldaemon vsim nclaunch

関連するトピック

著作権 2005-2023 The MathWorks, Inc.