在verilog打印中,有符号整数值存储在reg类型的变量中

时间:2012-02-17 07:56:07

标签: verilog xilinx

如何打印存储在声明为

的8位寄存器中的有符号整数值
  

reg [7:0] acc;

使用

  

$ display(“acc:%d”,acc)

打印无符号值。

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

2 个答案:

答案 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))

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