1

以下は、一部のモデル sim コードです。

 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は何を表している? それらは行番号ですか?このコードに何か問題がありますか?

4

1 に答える 1

8

これは、何かが「Visual Studio」コードである以上、「ModelSim」コードではありません。ベリログです

#トークンは、ナノ秒単位の遅延を示します。

したがって、このコードの意味は次のとおりです。

  • 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 に設定します。

(...カウントアップを続け、tb_in_top を 5 ns ごとに 1 ずつ増やします ...)

  • t = 80 ns で、tb_in_top を 4 ビットのバイナリ値 1111 に設定します。
  • t = 180 ns で、シミュレーションを終了します。

はい、Verilog にはforループがあります。

補遺

ループは次の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 は#ロジックに合成できないことに注意してください。シミュレーションにのみ使用できます。

于 2010-09-10T21:53:29.673 に答える