verilog寄存器分配在模拟中作为XXXXXXX出现

时间:2017-12-16 09:20:09

标签: verilog variable-assignment

input [6:0] load,
 input up,
 input down,
output reg [6:0] currentvalue
);

  reg [6:0] state, nextup, nextdown;

initial
    begin
        state = load;
    end
嘿伙计们!我正在尝试创建一个模块,我收到一个7位输入(加载)并将输入值分配给7位寄存器(状态)。当我通过ISE模拟器运行此代码时,我得到XXXXXXXX作为寄存器值'state'。除此之外,该模块似乎工作正常,并没有错误。 我尝试了以下代替原始代码,看看它是否可行。

initial
     begin
       state = 7'd35;
     end

它确实有效。我只是有一个含糊的想法,我将输入值分配给寄存器时出现问题,但我无法弄清楚如何解决这个问题。请帮忙!谢谢!

1 个答案:

答案 0 :(得分:1)

verilog中的所有4状态变量都初始化为' x'。

initial块用于在模拟开始之前初始化变量。因此,在第一个版本state = load中,您刚刚分配了' x'负载的价值'至state(已经是' x')。

在第二个版本中,您为state分配了一个数值。这是initial块的用途。

在模拟中,所有主要操作都发生在模块缺少的always块中。你需要编写一个测试平台代码,为你的模块输入产生一些刺激,以便看到任何反应。