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