如何打印存储在 8 位寄存器中的有符号整数值,声明为:
reg [7:0] acc;
使用:
$display("acc : %d", acc)
它打印无符号值。
$display
该函数的正确语法是什么?
如果您声明reg
as signed
,$display
将显示减号:
module tb;
reg signed [7:0] acc;
initial begin
acc = 8'hf0;
$display("acc : %d", acc);
end
endmodule
打印出来:
acc : -16
也遇到了这个问题并查看了 SystemVerilog 2012 标准,但在有关格式说明符的部分中没有看到任何关于签名的提及。这是另一种(基本上等效)也可以使用的解决方案:
$display("acc : %d", $signed(acc))
"$signed" 函数将输入值转换为具有相同位宽的有符号类型。