Модуль абсолютных значений в Verilog, возвращающий только неизвестные значения - PullRequest
0 голосов
/ 02 февраля 2019

Я новичок в 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 голосов
/ 03 февраля 2019

В вашем примере блок initial выполняется с задержкой 0, не давая возможности always @* выполнить.

Либо измените $display на $strobe, либо добавьте задержку до$display заявление.

...