Verilog - 将寄存器初始化为高阻抗?

时间:2016-02-25 14:54:14

标签: verilog simulation hdl quartus

以下代码尝试将寄存器output_reg初始化为高阻抗,然后在1的上升沿将其设置为clk

module test(
    input clk,
    output out,
    output reg output_reg
);

    assign out = output_reg;

    initial
        begin
            output_reg <= 1'bz;
        end

    always @(posedge clk)
        begin
            output_reg <= 1'b1;
        end

endmodule

然而,模拟(Altera Quartus 9.1)将output_reg显示为已初始化1,而不是z

enter image description here

我不知道为什么always块会覆盖initial块。

注意:如果我删除always块,则注册表会初始化为z

1 个答案:

答案 0 :(得分:0)

这是因为竞争条件。这里,第二个块首先覆盖,或者你可以说第一个块正在执行@ 0ns,但第二个块是@ 0.00 ... 01ns。通常,您无法将值分配给多个程序块中的相同引脚/端口。