FPGAボード Cmod S7を導入してみた(3)
前回はLED1つを点灯させるまでの手順をご紹介しました。今回は、実用的なテストベンチである自己点検型テストベンチの構築をご紹介します。1.対象の回路
-
2bitデコーダを作ってみます。
入力: ボード上のボタン
出力: ボード上のLED
右の真理値表通り、入力の状態(2bit: 00,01,10,11)に対応して出力のいずれか一つを点灯させます。
2.実装
次のソースファイルをダウンロードしてください。constraintファイル[Cmod-S7-25-Master.xdc]
HDLファイル[ButtunLED.sv]
ダウンロードしたファイルは、Add sourcesからプロジェクトに追加してください。 コードの簡単な説明は以下の通りです。
3.テストベンチ
次のソースファイルをダウンロードしてください。テストベンチ[ButtunLED_tb.sv]
テストベクタ[tesrvectors.tv]
Add source-->Add simulation sourceでプロジェクトに追加します。
コードの簡単な説明は以下の通りです。 テストベンチは仮想のクロック毎にテストベクタを読み込み、結果を比較して答え合わせをします。出力に相違があればエラーメッセージを表示し、エラー数のカウントを増やしていきます。2bitであれば波形を追えますが、この形式でなら入出力が増えてもエラーの有無を判断することができます。
(以下の図ではstop();がコメントアウトされていますが無くて構いません。私の環境ではstop();に到達するとソフトウェアが落ちるので、10000サイクル目まで回しています。)
4.シミュレーション
Simulation-->Run simulation-->Run behsvioral simulationでシミュレーションをスタートします。エラーのカウントが増えることなく終了すれば成功です。試しにテストベクタに間違った答えを入れれば、エラーカウントが増えることをご確認いただけます。
5.動作確認
前回と同様に(1)Synthesis、(2)Implementation、(3)Generate bitstream、(4)Programの順番で行います。 設計通りに動作するはずです。次回はIPの使用方法についてご説明します。