Печать целочисленного значения со знаком, хранящегося в переменной типа reg

Как напечатать целочисленное значение со знаком, хранящееся в 8-битном регистре, объявленном как:

reg [7:0] acc;

С использованием:

$display("acc : %d", acc)

Он печатает беззнаковое значение.

Какой правильный синтаксис для функции $display?


person Nullpoet    schedule 17.02.2012    source источник


Ответы (2)


Если вы объявите reg как signed, $display покажет знак минус:

module tb;

reg signed [7:0] acc;

initial begin
    acc = 8'hf0;
    $display("acc : %d", acc);
end

endmodule

Распечатывает:

acc :         -16
person toolic    schedule 17.02.2012

Столкнулся с этой проблемой и просмотрел стандарт SystemVerilog 2012, но не нашел упоминания о подписи в разделе о спецификаторах формата. Вот альтернативное (в основном эквивалентное) решение, которое также работает:

$display("acc : %d", $signed(acc))

Функция "$signed" преобразует входное значение в знаковый тип с той же разрядностью.

person campkeith    schedule 15.02.2016