代码之家  ›  专栏  ›  技术社区  ›  sujeto1

模拟从Quartus发射的Modelsim无法正常工作

  •  0
  • sujeto1  · 技术社区  · 9 年前

    这是测试台

    `timescale 1 ps/ 1 ps
    
    module sum_fix_vlg_tst();
    
    reg select;
    reg [7:-8] valor_a;
    reg [7:-8] valor_b;
    
    
    // wires                                               
    wire [8:-8]  result_fx;
    
    sum_fix i1 (
    
    .result_fx(result_fx),
    .select(select),
    .valor_a(valor_a),
    .valor_b(valor_b)
     );
    
    initial                                                
    $monitor ("valor_a = %b, valor_b = %b, result_fx = %b", valor_a, 
    valor_b,result_fx);
    
    initial
    begin                                                  
    #10
    select = 1;
    valor_a = 32'b0000000011111111;
    valor_b = 32'b0000000011111111;
    
    #20
    
    valor_a = 32'b1111111111111111;
    valor_b = 32'b1111111111111111;
    
    #30
    
    valor_a = 32'b1001100111001000;
    valor_b = 32'b0001111000111101;
    
    end                                                    
    
    endmodule
    

    这是uut

    `timescale 1 ps/ 1 ps
    module sum_fix (valor_a,valor_b,result_fx,select);
    
    input [7:-8] valor_a,valor_b;
    output reg [8:-8] result_fx;
    input select;
    
    
    always@ (valor_a or valor_b)
    begin 
    if (select==1)
    result_fx = valor_a + valor_b;
    else    
    result_fx = valor_a - valor_b;
    end
    
    endmodule
    

    用Quartus well编译。然后我像这样启动Modelsim: 工具>RTL模拟 。它启动了Modelsim,但它只给了我很多 zzzzzz 输入和 xxxxxxxxxxxx 在输出中没有任何波动。

    我想说,我不确定我是否正确地将这个测试台添加到项目中。我是初学者。我所做的是: 工作分配>设置>编译测试:单击“测试台”>新 ,查找文件并添加,然后确定。我不确定这是正确的方式,因为它看起来太复杂了。请帮忙。

    此外,我建议我在quartus中启动测试台编写器模板,但我最终更改了文件中的所有内容,最终结果是上面的代码。

    1 回复  |  直到 9 年前
        1
  •  1
  •   wilcroft    9 年前

    所以,我在EDAPlayrgound上尝试了你的代码( http://www.edaplayground.com/x/Cyc ),我觉得很好。(如果你愿意,你可以自己试一下)。

    你看到了 X 这是因为在时间0时,您还没有为任何输入指定值(因为您在分配任何内容之前延迟了10个时间步)。考虑删除第一个 #10 ,或者在它前面放一些作业。

    ( 十、 =未知值; Z =高阻抗,这意味着既不是1输入也不是0输入)。

    至于在Quartus中设置它,您的方法是正确的。