FPGA MAX10(11)-ModelSim②

前回は、Modelsimを使用してシミュレーション評価をしました。前回の内容に関しては、下記のサイトを参考にしてください。

FPGA MAX10(10)-ModelSim①

テストベンチで疑似入出力信号を入出力することで、回路が想定した動きをしているかどうかシミュレーション上で確認することができたと思います

前回は、Modelsim単体を起動して、シミュレーションの実行する流れを行いました。今回は、QuartusPrimeからModelsimを起動して、シミュレーションを実行してみたいと思います。

前回と同様で、プッシュスイッチを押すとトグルスイッチで指定した数値をSPI通信で送信、受信を行い、7セグメントに表示する回路を使用してシミュレーションを行おうと思います。テストベンチも前回と同様のものを使用したいと思います。

それでは、Modelsimを使用してシミュレーションを実行しようと思います。
まずはQuartusPrimeを使用して、Modelsimを実行するための設定を行います。新規プロジェクト作成時、既に設定していればよいのですが、私は設定していなかったので、まずは設定します。

FPGA MAX10(10)-ModelSim①

前々回に、プッシュスイッチを押すとトグルスイッチで指定した数値をSPI通信で送信、受信を行い、7セグメントに表示する機能を作成しました。

FPGA MAX10(8)-SPI通信

ただし、プッシュスイッチを少し押しただけであるが、プッシュスイッチ(SET_N)が押し続けている状態になっています。FPGAとしては、10MHz(100nsec)クロックで動作しているので、スイッチは押し続けていると判定されてしまいます。そのため、一度送信すればよい数値データを繰り返し送信してしまっています。

そこで、ポーリング処理とエッジ検出機能を追加しました。プッシュスイッチを押すと、一度だけSPI通信を行っており、ポーリング処理とエッジ処理が動作していることがわかります。

前回までは、実機動作やSignalTapを使用して評価をしていましたが、今回は、Modelsimを使用してシミュレーション評価をしてみたいと思います。簡易的な回路であれば、実機動作で作りこんでいくことも可能ですが、複雑な回路になると、Modelsimなどの論理シミュレータを使用してデバッグしていくと作業が効率的です。

今回、下記の2つの流れでModelsimを動作させてみようと思います。どちらも結果としては同じになりますので、使いやすいほうでよいかと思います。

  • Modelsim単体を起動して、シミュレーションの実行。
  • QuartusPrimeからModelsimを起動して、シミュレーションを実行。

それでは、Modelsimを使用してシミュレーションを実行しようと思います。シミュレーションは、前々回のポーリング処理とエッジ検出機能が追加していないバージョンのモデルを使用してシミュレーションを行いたいと思います。今回は、Modelsim単体を起動して、シミュレーションの実行してみたいと思います。まずはテストベンチの作成です。下記のようにテストベンチを作成しました。