Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

MATLABでのフィルター コンポーネントのテスト

この例では、MATLAB® をHDL コンポーネントのテストベンチとして使用する方法を示します。HDL ローパス フィルターをコンパイルし、matlabtb を使用してテストします。

スナップショットの準備ができたら、Cadence® Xcelium® シミュレーター セッションを開始します。(PATH 上に Xcelium シミュレーターの実行可能ファイルが必要です。)MATLAB とHDL シミュレーターの間で共有メモリ接続を使用するため、両方が同じコンピューター上に存在する必要があります。

この例では、Verilog ローパス フィルターがMathWorks™ Filter Design HDL Coder™製品を使用して設計および生成されており、私たちの仕事はそれをMATLABフィルターと比較することによってテストすることです。この例ではフィルター デザイナーを実行しません。このフィルタのサンプル時間は 10 ns (サンプル レート 100 MHz)、通過帯域 Fpass = 20 MHz、阻止帯域 Fstop = 25 MHz です。Verilog フィルタには 2 サンプルの遅延があります。

ファイル lowpass_filter.v には、 Filter Design HDL Coderによって生成されたローパス フィルターが含まれています。

ファイルfilter_tb_incisive.mにはMATLABテストベンチが含まれています。

MATLABサーバーを起動する

共有メモリ通信を使用するように、 MATLABサーバー hdldaemon を起動します。

hdldaemon;

Tcl コマンドの指定

次に、シミュレーションの実行前に HDL シミュレーターで実行する Tcl コマンドを指定します。次のコマンドのリストは、Tcl シェルで実行されます。これらのコマンドはプロジェクトをコンパイルおよび詳細化し、hdlsimmatlab Tcl コマンドを通じて xmsim を起動します。-input で始まるすべてのコマンドは xmsim に渡され、xmsim Tcl シェルで実行されます。これらのコマンドは次のことを行います。

  • Verilogフィルターをコンパイルする

  • フィルタを精緻化し、ポートへの読み取り/書き込みアクセスをオンにします

  • hdlsimmatlab を呼び出してMATLABテスト ベンチ サポートを使用して xmsim を開始します。残りのコマンドは xmsim で実行されます

  • MATLAB関数 filter_tb_incisive が 10 ns ごとに呼び出されるようにスケジュールします。

  • 時計を有効にする

  • 22ns後にモジュールをリセットします

  • 10nsのクロックを駆動する

  • フィルター入力を 0 に初期化します。

tclcmd = {  ['exec xmvlog -64bit lowpass_filter.v'],...
             'exec xmelab -64bit -access +wc lowpass_filter',...
             ['hdlsimmatlab -gui  lowpass_filter ', ...
              ' -input "{@matlabtb lowpass_filter 10ns -repeat 10ns -mfunc filter_tb_incisive}"',...
              ' -input "{@force lowpass_filter.clk_enable 1 -after 0ns}"',...
              ' -input "{@force lowpass_filter.reset 1 -after 0ns 0 -after 22ns}"',...
              ' -input "{@force lowpass_filter.clk 1 -after 0ns 0 -after 5ns -repeat 10ns}"',...
              ' -input "{@deposit lowpass_filter.filter_in 0}"',...
             ]};

Xcelium® シミュレーターを開始する

次に、nclaunch コマンドを使用して HDL シミュレーターを起動します。'tclstart'プロパティにより、指定された Tcl コマンドが起動時に実行されます。HDL シミュレーターが起動されたら、 xmsimコンソールで run コマンドを使用し、適切なシミュレーション時間を指定してシミュレーションを開始します。たとえば、 run 100000

nclaunch('tclstart',tclcmd);

この時点で、2 つのサブプロットを持つMATLAB Figure が開きます。上のプロットは、入力信号のスペクトルを示しています。下のプロットは、 MATLABフィルター出力のスペクトルと重ねられた HDL フィルター出力のスペクトルを示しています。出力スペクトルの違いを確認するには、ズームインする必要があります。時間領域での絶対誤差の移動平均と最大値もプロットの下に示されています。この数値は 1024 サンプルごとに更新されます。

これでこの例は終わりです。

この例を実行するたびに、新しいシミュレータ セッションが開始されるため、この例の実行が完了したら必ず HDL シミュレータを終了してください。また、この例では、一時ディレクトリにいくつかの一時ファイルが作成されたことにも注意してください。