verilog寄存器分配在模拟中显示为XXXXXXX

verilog寄存器分配在模拟中显示为XXXXXXX,verilog,variable-assignment,Verilog,Variable Assignment,嘿,伙计们!我正在尝试制作一个模块,在该模块中,我接收一个7位输入(加载),并将输入值分配给一个7位寄存器(状态)。当我通过ISE模拟器运行此代码时,我得到了XXXXXXXX的寄存器值“state”。除此之外,模块似乎工作正常,没有错误。 我尝试了下面的代码,而不是我的原始代码,看看它是否能工作 input [6:0] load, input up, input down, output reg [6:0] currentvalue ); reg [6:0] state, nextup

嘿,伙计们!我正在尝试制作一个模块,在该模块中,我接收一个7位输入(加载),并将输入值分配给一个7位寄存器(状态)。当我通过ISE模拟器运行此代码时,我得到了XXXXXXXX的寄存器值“state”。除此之外,模块似乎工作正常,没有错误。 我尝试了下面的代码,而不是我的原始代码,看看它是否能工作

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

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

initial
    begin
        state = load;
    end

它确实起了作用。我只是有一个模糊的想法,那就是把输入值分配给寄存器有问题,但我还没有弄清楚如何解决这个问题。请帮忙!谢谢

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

initial
块用于在模拟开始之前初始化变量。因此,在第一个版本
state=load
中,您刚刚将'load'的'x'值指定给
state
(已经是'x')

在第二个变量中,您为
状态
指定了一个数值。这就是
初始
块的作用


在模拟中,所有主要动作都发生在模块缺少的
始终
块中。您需要编写一个测试台代码,为您的模块输入生成一些刺激,以查看任何反应。

您只显示一行有效的代码“它不工作”。显示更多代码,并指定其不起作用的位置和频率。更重要的是找到经验丰富的程序员的Verilog模块,看看它是什么样子。Verilog不像C,它需要一种完全不同的编码风格。
initial
     begin
       state = 7'd35;
     end