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

问题描述 投票:-1回答:1
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

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

verilog variable-assignment
1个回答
1
投票

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

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

在第二个变体中,您为state指定了一个数值。这是initial块的用途。

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

© www.soinside.com 2019 - 2024. All rights reserved.