Main Content

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

MATLAB のオシレーターのフィルターコンポーネントを実装する

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

設計作業

この例では、プロジェクトは VHDL® で発振器をコンパイルし、HDL シミュレーションを実行する前に、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 コマンドを実行します。これらのアクションを完了するには、オペレーティング システムに基づいて次のコマンドを使用します。

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

  • リナックス: 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 シミュレーターでこれらのプロットが生成されます。共シミュレーション直後はプロットが異なって見える場合がありますが、時間軸全体を包含するようにズームすると、同様のプロットが得られることがあります。

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

エクセリウム

概要

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

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

参考

matlabcp hdldaemon vsim nclaunch

関連するトピック

著作権 2003-2023 The MathWorks, Inc.