2015-09-18 2 views
2

У меня есть ALU в Verilog, и я хочу сделать простой тест проверки в verilog.

Я хочу записать в файл, выход ALU. Я использую следующий код:

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

Мой выходной вектор имеет размер 32 бит с подписанным. Операция правильная, но когда ALUOutput является отрицательным числом, в файле выход сохраняется как целое без знака.

Например, в файле для отрицательного числа, я получил следующее неправильное представление:

4294967264 

Но я хочу, чтобы получить следующий результат:

-32 

Может кто-нибудь сказать мне, как могу ли я написать отрицательное число в файле?

+0

Покажите свою декларацию 'ALUOutput'. – toolic

ответ

2

Использование $signed (IEEE Std 1800-2012, раздел 11.7 "Подписанные выражения"):

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 
*/ 
+1

Спасибо @toolic за ваш ответ !!!. Это очень помогло. – Adriana

+0

@ Адриана: Пожалуйста. Вы можете принять ответ, чтобы другие знали, что он был решен. – toolic

Смежные вопросы