modelsim源代码

时间:2010-09-10 21:41:31

标签: 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

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

1 个答案:

答案 0 :(得分: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秒将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

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