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

时间:2019-02-02 20:24:36

标签: verilog

我是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。 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在您的示例中,initial块以0的延迟执行,而没有给always @*一个执行的机会。

$display更改为$strobe,或在$display语句之前添加延迟。