Verilog未显示8位加法器的正确结果

Verilog未显示8位加法器的正确结果,verilog,Verilog,我在显示我的8位加法器verilog的结果时遇到了一些问题 module Adder(a,b,cin,s,co); input [7:0]a; input [7:0]b; output [7:0]s; output co; wire [6:0] u; input cin; Carry c1(a[0],b[0],cin,s[0],u[0]); Carry c2(a[1],b[1],u[0],s[1],u[1]); Carry c3(a[2],b[2],u[1],s[2],u[2]); Carry

我在显示我的8位加法器verilog的结果时遇到了一些问题

module Adder(a,b,cin,s,co);
input [7:0]a;
input [7:0]b;
output [7:0]s;
output co;
wire [6:0] u;
input cin;

Carry c1(a[0],b[0],cin,s[0],u[0]);
Carry c2(a[1],b[1],u[0],s[1],u[1]);
Carry c3(a[2],b[2],u[1],s[2],u[2]);
Carry c4(a[3],b[3],u[2],s[3],u[3]);
Carry c5(a[4],b[4],u[3],s[4],u[4]);
Carry c6(a[5],b[5],u[4],s[5],u[5]);
Carry c7(a[6],b[6],u[5],s[6],u[6]);
Carry c8(a[7],b[7],u[6],s[7],co);

endmodule


我如何修复它,使它不添加这些数字,而是添加我想要的数字。 (a=00000010;b=00000010;cin=0;)
我已经尝试过更改数字,但除非是00000001,否则它不会起作用。

默认情况下,Verilog将数字文本值解释为十进制。值
00000010
为十进制10。
$monitor
语句使用
%b
,并将十进制值10正确显示为
1010
。10+10之和为20(十进制),正确显示为
10100
(二进制)

为了让Verilog将
00000010
解释为二进制,需要将基数指定为
'b00000010

            a <= 'b00000010; b <= 'b00000010; cin <= 0;
a
module testbench;

          reg [7:0]a;
          reg [7:0]b;
          reg cin;
          wire [7:0]s;
          wire co;
          Adder add(a, b, cin, s, co);
          initial begin
    $dumpfile("result.vcd");
    $dumpvars;
         a <= 00000010; b <= 00000010; cin <= 0;
     #5 

      $monitor("time=%4d: %b + %b + %b: sum = %b, carry = %b\n",$time,a,b,cin,s,co);
end
endmodule
time=   5: 00001010 + 00001010 + 0: sum = 00010100, carry = 0
            a <= 'b00000010; b <= 'b00000010; cin <= 0;