作った回路のVHDLを使って回路のシミュレーションを行い設計とおりに動作しているか検証します。Quartus付属のModelSIM-Altera Editionを使います。本ページは、当ホームページでインストールした環境が前提ですので、ぜひご覧になってください。
次のステップでシミュレーションを行います。
1.ModelSIMの起動
2.プロジェクトの作成
3.VHDLファイルの登録
4.コンパイル
5.テストベンチの作成
6.再コンパイル
7.シミュレーション
ターミナルから次のコマンドを投入します。lubuntuはQuartusをインストールしたときのはホームディレクトリです。
sudo /home/lubuntu/intelFPGA_lite/17.1/modelsim_ase/linuxaloem/vsim
まず、プロジェクトを作成します。
1.[File]-[New]-[Project]をクリックして次の画面を開きます。
2.Project NameとProject Locationを指定します。私は、Quartusのプロジェクトと同様にしました。
3.[OK]を押します。
Quartusで設計した回路をプロジェクトに登録します。
1.[Project]-[Add to Project]-[Exixting File...]をクリックします。
2.次の画面でFile NameにQuartusで作成した回路のVHDLファイルを選択して、[OK]
プロジェクトファイルをコンパイルします。
1.[Compile]-[Compile All]をクリックします。
2.コンパイルが終了するとStstusの?がチェックになり、次のような画面になります。
シミュレーションで使う入力波形を作ります。ボタンを押す操作を入力波形にします。ここでは、5回のLowになる波形を作ります。
1.「Library」タブを開きリストの中の「work」の左の[+]をクリックしてツリーを開きます。
2.コンパイルしたファイルを選択して右クリックします。
3.メニューから[Create Wave]をクリックします。
4.Waveの画面が開くので作業しやすいように画面を最大化します。
5.入力ピンで指定した名前Push_SWを右クリックし、メニューから[Edit]-[Wave Edittor]-[Create/Modify Waveform]をクリックします。
6.次の画面で「Constant」を選択して[Next](End Timeは、1000nsのままでいいです。)
7.次の画面で「Value」に1を入力して[Finish]
8.波形が小さい場合は、Waveをクリックしてからキーボードの[i]または[o]を押して調整します。
9.をクリックして波形の編集モードに入ります。
10.Push_SW波形の最初の1/6あたりを短い幅でドラッグします。ドラッグしたところが反転するので右クリックします。
11.メニューが出てくるので[Wave Editor]-[Invert]をクリックします。
12.次の画面で[OK]
13.10から13を5回繰り返し次のような波形にします。
14.[File]-[Export]-[Waveform]でテストベンチを出力します。
15.次の画面でSave Asに「VHDL Testbench」を選択してFile Nameに新規ファイル名を入力します。(ここではkinkon2_testWb.vhdにしています。)
作成したテストベンチを登録してコンパイルします。
1.[Project]-[Add to Project]-[Exixting File...]で、作成したテストベンチファイルを登録します。
2.[Compile]-[Compile Order...]でテストベンチが一番下になるように調整します。
3.[Compile]-[Compile All]をクリックします。
4.コンパイルが終了するとStstusの?がチェックになり、次のような画面になります。
テストベンチを使って回路のシミュレーションを行います。
1.[Simulate]-[Start Simulation]をクリックします。
2.次の画面でテストベンチファイルを選択して[OK]
3.simタブを選択して次の画面でDUTをクリックします。
4.ObjectsからWaveに入出力信号とDffをドラッグ&ドロップでコピーします。(Waveが表示されていない時は[View]-[Wave]をクリック。)
5.Wave画面のDFFを右クリックしてメニューを表示します。[Modify]-[Force...]をクリックします。
(実回路では電源を入れたときの状態により回路の初期値は決まりますが、シミュレーションDFFなどの部品は初期値を決めないとシミュレーションの出力が得られません。)
6.次の画面でValueに1または0を、KindでDepsitを選択して[OK]
7.Transcript窓で、run 1000nsと入力実行することにより次のようなシミュレーション結果がWave窓に得られます。波形がうまく表示できないときはキーボードの[o]キー(縮小)または[i]キー(拡大)で調節してください。
8.Push_SW信号の立ち上がり(Low⇒High)にあわせて、kin出力とkon出力が反転しているのがわかります。kinとkon相互も反転しています。シミュレーションは成功です。