1

下面是一些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 代表什么?那些是行号吗?这段代码有问题吗?

4

1 回答 1

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

最后需要注意的是,使用#延时操作的 Verilog 不能合成为逻辑;它只能用于模拟。

于 2010-09-10T21:53:29.673 回答