补码显示为小数
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)
我正在为数字设计工作一个 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)