次のように宣言された8ビットレジスタに格納されている符号付き整数値を出力するにはどうすればよいですか。
reg [7:0] acc;
使用:
$display("acc : %d", acc)
符号なしの値を出力します。
$display
関数の正しい構文は何ですか?
reg
として宣言すると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」関数は、入力値を同じビット幅の符号付き型に変換します。