modelsim源代码

nod*_*nja 1 verilog modelsim

以下是一些modelsim代码:

 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
Run Code Online (Sandbox Code Playgroud)

#5和#100代表什么?这些行号是?这段代码有问题吗?

Mik*_*one 8

它不是"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循环,是的,那应该是一个.

附录

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
Run Code Online (Sandbox Code Playgroud)

最后,请注意使用#延时操作的Verilog 无法合成逻辑; 它只能用于模拟.