【问题标题】:modelsim source codemodelsim源代码
【发布时间】:2010-09-10 21:41:30
【问题描述】:

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

【问题讨论】:

    标签: verilog modelsim


    【解决方案1】:

    它不是“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不能合成为逻辑;只能用于模拟。

    【讨论】:

    • 它将循环 2^4 (16) 次。请注意,您的原始来源每行文本有两个语句。
    • 通过查看for 循环声明:for(index = 0; index &lt; 16; index = index + 1)。它就像 C 一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多