9

如何打印存储在 8 位寄存器中的有符号整数值,声明为:

reg [7:0] acc;

使用:

$display("acc : %d", acc)

它打印无符号值。

$display该函数的正确语法是什么?

4

2 回答 2

10

如果您声明regas signed$display将显示减号:

module tb;

reg signed [7:0] acc;

initial begin
    acc = 8'hf0;
    $display("acc : %d", acc);
end

endmodule

打印出来:

acc :         -16
于 2012-02-17T13:53:45.417 回答
8

也遇到了这个问题并查看了 SystemVerilog 2012 标准,但在有关格式说明符的部分中没有看到任何关于签名的提及。这是另一种(基本上等效)也可以使用的解决方案:

$display("acc : %d", $signed(acc))

"$signed" 函数将输入值转换为具有相同位宽的有符号类型。

于 2016-02-15T20:16:56.430 回答