我定义了一个 3 位进位超前加法器模块并尝试将其连接起来,首先找到第二个输入的 2 的补码,然后使用该数字与更多的 3 位 CLA 进行加法。
我的代码编译没有问题,但是当我尝试查看 VCD 中的波形时,一些变量以十六进制显示,尽管我没有在任何地方明确使用十六进制定义。我试图将显示转换为有符号十进制,但我不知道从哪里开始。这是完整的测试台,因为我不知道要删除哪些案例:
module CLA_15bit_tb ();
reg [14:0] A, B; // Inputs
reg mode; // mode (add or subtract)
wire [14:0] S ; // result
wire Ovf ; // Outputs are wires.
wire Cout;
CLA_15bit_top dut (A,B,mode,S,Cout,Ovf);
initial begin
$dumpfile("CLA_15bit_top.vcd");
$dumpvars(0,CLA_15bit_tb);
$display("Simulation started.");
A = 15'd0; // Set all inputs to zero.
B = 15'd0;
mode = 1'd0;
#10; // Wait 10 time units.
A = 15'd25;
B = 15'd50;
mode = 1'd0; // For addition
#10; // Wait 10 time units.
A = 15'd30;
B = 15'd100;
mode = 1'd1; // For subtraction
#10; // Wait 10 time units.
A = 15'd578;
B = 15'd421;
mode = 1'd0;
#10;
A = 15'd7865;
B = 15'd1065;
mode = 1'd1;
#10;
A = 15'd25000;
B = 15'd16000;
mode = 1'd0;
#10;
A = 15'd865;
B = 15'd1065;
mode = 1'd1;
#10;
A = 15'd32767;
B = 15'd32766;
mode = 1'd1;
#10;
$display("Simulation finished.");
$finish();
end
endmodule
您混淆了信号值与用于显示它们的表示形式。即使您使用十进制文字来分配值,表示形式也可以是十六进制。您不需要“转换”任何东西,只需更改波形查看器的设置以十进制表示形式显示值即可。