补码显示为小数

Display of complement as a decimal

我正在为数字设计工作一个 Verilog 项目 class 我的项目是创建一个计算器,除其他外,它采用 16b 有符号输入的补码并将其以十进制形式显示在在模拟器中监控。

这是我的测试台显示器:

$monitor ("opCode(%b),in1(%d),in2(%d),result(%d),overflow(%b)", opCode, in1, in2, result, overflow);

我无法让模拟器以负十进制表示形式显示我输入的补码。这只是模拟器不会显示的东西,还是 $monitor 的问题?所有其他结果都正确显示为小数。

结果显示如下输出。它显示补码结果显示为 65526,应该是 -10。上面和下面的结果分别正确显示15和11。

opCode(0111),in1(10),in2(5),result(15),overflow(0)
opCode(1000),in1(10),in2(5),result(65526),overflow(1)
opCode(1001),in1(10),in2(5),result(11),overflow(0)

尝试将 result 声明为 signed

reg signed [15:0] result;

(见In verilog printing signed integer value stored in a variable of type reg