質問

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

 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に注意してください # 時間遅延操作はロジックに合成できません。シミュレーションにのみ使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top