Module 4位verilog加法器不传递进位

Module 4位verilog加法器不传递进位,module,add,verilog,Module,Add,Verilog,我让我的2位加法器工作,除了出于某种原因,它没有通过进位。例如,如果我使用A=1和B=1,结果S=00,但是如果A或B是1,我得到S=1 ?我试着打印出数值,但第二个模块中的c1线似乎没有设置,出于某种原因,可能没有设置 所以输入a=1,B=1,S=00,Cout=1 应该是什么时候。S=10,Cout=0 我只使用了Verilog一天,所以语法对我来说是非常新的 module fulladder(Cin,A,B,S,Cout); // dont forget semi colon in

我让我的2位加法器工作,除了出于某种原因,它没有通过进位。例如,如果我使用A=1和B=1,结果S=00,但是如果A或B是1,我得到S=1 ?我试着打印出数值,但第二个模块中的c1线似乎没有设置,出于某种原因,可能没有设置

所以输入a=1,B=1,S=00,Cout=1 应该是什么时候。S=10,Cout=0

我只使用了Verilog一天,所以语法对我来说是非常新的

module fulladder(Cin,A,B,S,Cout); // dont forget semi colon
    input A,B, Cin; // defaults to 1 bit or [0,0] size
    output S, Cout;
    wire XOR1,AND1,AND2;

    xor(XOR1,A,B);
    and(AND1,A,B);
    xor(S,Cin,XOR1);
    and(AND2,Cin,XOR1);
    or(Cout,AND2,AND1);

endmodule

module adder4(Cin,A,B,S,Cout);
input Cin;
input [0:1]A;
input [0:1]B;
output [0:1]S;
output Cout;
wire c1;

fulladder FA1(Cin,A[0:0],B[0:0],S[0:0],c1);
fulladder FA2(c1,A[1:1],B[1:1],S[1:1],Cout);
endmodule


module t_adder;

reg Cin;
reg [1:0]A;
reg [1:0]B;// to declare size, must be on own line, wires can be more than 1 bit
wire [1:0]S;
wire Cout;
adder4 add4bit(Cin,A,B,S,Cout);

initial 
begin
    A = 1; B = 1; Cin = 0;
    #1$display("S=%b Cout = %b",S,Cout);
end

endmodule

通过将输入声明为
[0:1]
,在
加法器4
模块中反转位顺序,在其他地方它是
[1:0]


由于您将位反转,因此在加法器4中,您似乎添加了A=2'b10,B=2'b10,这将给出您看到的输出(3'b100)。

您在
加法器4
模块中反转位顺序,将输入声明为
[0:1]
,在其他地方为
[1:0]


由于您将位反转,因此在加法器4中,您似乎添加了A=2'b10,B=2'b10,这将给出您看到的输出(3'b100)。

您在
加法器4
模块中反转位顺序,将输入声明为
[0:1]
,在其他地方为
[1:0]


由于您将位反转,因此在加法器4中,您似乎添加了A=2'b10,B=2'b10,这将给出您看到的输出(3'b100)。

您在
加法器4
模块中反转位顺序,将输入声明为
[0:1]
,在其他地方为
[1:0]

由于您将位反转,因此对于加法器4,看起来您正在添加A=2'b10,B=2'b10,这将给出您看到的输出(3'b100)