質問
以下は、モデルのコードです。
begin
tb_in_top = 0;
#5 tb_in_top = 4'b0000;#5 tb_in_top = 4'b0001;
#5 tb_in_top = 4'b0010;#5 tb_in_top = 4'b0011;
#5 tb_in_top = 4'b0100;#5 tb_in_top = 4'b0101;
#5 tb_in_top = 4'b0110;#5 tb_in_top = 4'b0111;
#5 tb_in_top = 4'b1000;#5 tb_in_top = 4'b1001;
#5 tb_in_top = 4'b1010;#5 tb_in_top = 4'b1011;
#5 tb_in_top = 4'b1100;#5 tb_in_top = 4'b1101;
#5 tb_in_top = 4'b1110;#5 tb_in_top = 4'b1111;
#100 $finish;
end
#5と#100は何を表していますか?それらの行番号はありますか?このコードに何か問題がありますか?
解決
「ModelSim」コードではなく、「Visual Studio」コードがあります。これは verilog.
#
トークンは、ナノ秒の遅延を意味します。
したがって、このコードの意味は次のとおりです。
- t = 0で、tb_in_topをすべて0に設定します。
- t = 5 nsで、TB_IN_TOPを4ビットバイナリ値0000に設定します。
- t = 10 nsで、TB_IN_TOPを4ビットバイナリ値0001に設定します。
- t = 15 nsで、TB_IN_TOPを4ビットバイナリ値0010に設定します。
- t = 20 nsで、TB_IN_TOPを4ビットバイナリ値0011に設定します。
(... 5 nsごとにTB_IN_TOPを1で増加させ続けてください...)
- t = 80 nsで、TB_IN_TOPを4ビットバイナリ値1111に設定します。
- t = 180 nsで、シミュレーションを終了します。
はい、Verilogは持っています for
ループ、そしてはい、それは1つであるべきです。
補遺
for
ループは次のようになります:
integer index;
reg [3:0] tb_in_top;
begin
tb_in_top = 0;
for(index = 0; index < 16; index = index + 1)
begin
#5 tb_in_top = tb_in_top + 4'h1;
end
#100 $finish;
end
最後に、使用するVerilogに注意してください #
時間遅延操作はロジックに合成できません。シミュレーションにのみ使用できます。
所属していません StackOverflow