FPGA:Verilog HDL 4ビット加算回路のシュミレーション
FPGA:Verilog HDL 4ビット加算回路のFPGAへの実装を進め、実際のFPGAでの動作の確認をしてきた。しかし実際の開発ではいきなりFPGAに書き込む前に、シュミレーションして動作の確認をする。シュミレーションをしてみる。(引き続き、入門Verilog HDL記述―ハードウェア記述言語の速習&実践の書籍の内容をVivadoで実行する手順)
File-Newと進み、適当な名前をつけてプロジェクトを作り、Add SourcesのダイヤログっでAdd or create design sourcesにチェックを入れ、Createを選択して、adder.vを作る。
module adder(a,b,q);
input [3:0] a;
input [3:0] b;
output [3:0] q;
assign q=a+b;
endmodule
ここまでは以前と同じ。
その後、今度は再度、Add Sourcesのダイヤログ
Add or create simulation sourcesを選択しNextを押す。
シュミレーションをするための、モジュールを作成する。
`timescale 1ns / 1ps
module adder_tb;
reg [3:0] a,b;
wire [3:0] q;
//set 1 clock
parameter STEP = 100000;
//call test module
adder addr (a,b,q);
//test input
initial begin
a = 4'b0000; b=4'b0000;
#STEP a = 4'b0101; b=4'b1010;
#STEP a = 4'b0111; b=4'b1010;
#STEP a = 4'b0001; b=4'b1111;
#STEP a = 4'b1111; b=4'b1111;
#STEP $finish;
end
endmodule
・`timescale 1ns / 1psはデフォルトで入っている。
シュミレーションの単位を決める。1ユニット単位が1nsで/の後ろは丸め精度を設定する。
・モジュールは奇数を設定しない。timescaleはコンパイラ指示子。
・module adder_tb;
シュミレーションもモジュールで定義するが、入力も出力もなしでかっこの無い形とする。
・入力はregで、出力はwireで定義する。
・parameter STEP = 100000;
宣言により変数の定義をする。ここではシュミレーションの時間単位。シュミレーションのユニットが1nsなので100usecになる。
・adder addr (a,b,q);
テストする対象を呼び出す
・initial begin
end
の区間で入力信号を時間的に変化させる。STEP毎に、aとbの値を変化させる。
最後は#STEP $finishで終わる。
$finishのかわりに$stopってのもあるみたいだが違いは調べていない。
その後、$monitorと表示をするコマンドが続くが、Vivadoの場合はいらない。
コメント
コメントを投稿