绝对值模块中的Verilog只返回未知值

问题描述 投票:0回答:1

我是新来的Verilog和想实现一个简单的16位绝对值模块,但是,我只获得未知值作为输出。

下面是我写的代码:

module refabs(b, a);
input wire [15:0] a;
output reg signed [15:0] b;
    always @* begin
        b = ((a < 0) ? -a : a);
    end
endmodule

module testbench;
reg [15:0] a;
wire [15:0] b;
refabs abs(b, a);
initial begin
a = -30000;
    begin
    $display("refabs(%x) = %x", a, b);
    end
end
endmodule

我最终得到的输出是:refabs(8ad0)= XXXX。任何帮助深表感谢。

verilog
1个回答
0
投票

在您的例子中,initial块具有0延迟执行不给always @*执行的机会。

要么改变你的$display$strobe,或$display语句之前增加一个延迟。

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