【问题标题】:Verilog - Error: "Unresolved reference" when simulatingVerilog - 错误:模拟时出现“未解析的参考”
【发布时间】:2016-05-11 00:14:02
【问题描述】:

使用模型模拟。我正在尝试模拟一个上下两位计数器。它编译得很好,但是当我尝试运行模拟时,我收到以下错误:

** 错误:(vsim-3043) D:/ModelSim/examples/Lab7.v(46): 未解决对“状态”的引用。

模块是:

module TwoBitCounter(input Dir, clock, reset);

reg[1:0] state;

parameter S0 = 2'b00, S1=2'b01, S2=2'b10, S3 = 2'b11;

always @(posedge clock or negedge reset)
    if (reset == 0) state<=S0;

    else case(state)
        S0: if(Dir) state = S1; else state = S3;
        S1: if(Dir) state = S2; else state = S0;
        S2: if(Dir) state = S3; else state = S1;
        S3: if(Dir) state = S0; else state = S2;
    endcase

endmodule

测试台是:

module Counter_TB;

reg Dir, clock, reset;


TwoBitCounter DA0(.Dir(Dir), .clock(clock), .reset(reset) );

initial begin

reset = 0;
Dir = 1;

#5 reset = 1;

forever #205 Dir = ~Dir;

end

initial begin
clock = 0;
forever #25 clock = ~clock;
end



initial #800 $stop;

initial $monitor ("State AB: %b", state);

endmodule

【问题讨论】:

    标签: verilog modelsim


    【解决方案1】:

    由于state 是 TwoBitCounter 模块的内部变量,当您尝试在 $monitor 语句中的 testbench 模块中直接访问它时会出现错误。您可以使用分层说明符访问它:

    initial $monitor(DA0.state);
    

    或者,您可以将state 声明为TwoBitCounter 模块的output 端口并在测试台中连接到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      相关资源
      最近更新 更多