我如何$ fwrite文件中的负整数?

时间:2015-09-18 17:36:57

标签: verilog

我在Verilog中有一个ALU,我想在verilog中进行简单的验证测试。

我想写一个文件,即ALU的输出。我使用以下代码:

$fwrite(File,"La salida es: %d",uut.ALUOutput);

我的输出向量的大小为32位,带有符号。操作正确但当ALUOutput为负数时,在文件中,输出将保存为整数unsigned。

例如,在负数的文件中,我获得了以下不正确的表示:

4294967264

但我想获得以下结果:

-32

有人能说我怎样才能在文件中写下负数?

1 个答案:

答案 0 :(得分:3)

使用$signedIEEE Std 1800-2012,第11.7节和第34条;签名表达式"):

module tb;

integer f1;
reg signed [31:0] ALUOutput;

initial begin
    f1 = $fopen("foo.txt", "w");
    ALUOutput = -32;
    $fwrite(f1, "ALUOutput: %d",  $signed(ALUOutput));
    $fdisplay(f1);
    ALUOutput = 32;
    $fwrite(f1, "ALUOutput: %d",  $signed(ALUOutput));
    $fdisplay(f1);
    $fclose(f1);
end

endmodule

/*

foo.txt:
ALUOutput:         -32
ALUOutput:          32
*/