以下是一些模型代码:

 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代表什么?这些线号吗?此代码有问题吗?

有帮助吗?

解决方案

它不是“模型”代码,而不是“ 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增加1个tb_in_top ...)

  • 在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

最后,请注意使用 # 时间延迟操作不能合成逻辑;它只能用于仿真。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top