如何创建2';Verilog中的s补码加法器?

如何创建2';Verilog中的s补码加法器?,verilog,Verilog,这是正在使用的纹波进位加法器,但是,当sub=1A=4B=3时,程序不返回溢出,总和为1100而不是0110。我们有没有搞错携带行为 module fullAdder(A, B, Cin, sum, Cout); input A, B, Cin; output sum, Cout; assign sum = A^B^Cin; assign Cout = (Cin&A) | (Cin&B) |(A&B); endmodule module

这是正在使用的纹波进位加法器,但是,当sub=1A=4B=3时,程序不返回溢出,总和为1100而不是0110。我们有没有搞错携带行为

module fullAdder(A, B, Cin, sum, Cout);
    input A, B, Cin;
    output sum, Cout;
    assign sum = A^B^Cin;
    assign Cout = (Cin&A) | (Cin&B) |(A&B);
endmodule


module RCA4bit(A, B, C0, sum, C1, overflow);
    input [3:0] A;
    input [3:0] B;
    output [3:0] sum;
    input C0;
    output C1;
    output overflow;
     wire [2:0] carry;
     fullAdder RCA1(A[0], B[0], C0, sum[0], carry[0]);
     fullAdder RCA2(A[1], B[1], carry[0], sum[1], carry[1]);
     fullAdder RCA3(A[2], B[2], carry[1], sum[2], carry[2]);
     fullAdder RCA4(A[3], B[3], carry[2], sum[3], C1);
     assign overflow = C1 ^ carry[2];
endmodule

module RCA4bit2cmp(A, B, sub, sum, C1, overflow);
   input [3:0] A;
   input [3:0] B;
   output [3:0] sum;
   input sub;
   output C1;
   output overflow;

    wire [3:0]invB;
    assign invB = sub?~B:B;

    RCL4bit RC4(A, invB, sub, sum, C1, overflow);

endmodule

你的溢出项对我来说没有意义,我认为溢出只是进位,我不知道你为什么要用进位[2]对它进行异或运算

除此之外,我没有发现任何错误,我不明白这怎么会给出1100作为输出,我也不明白为什么你期望答案是0110(6)

如果A为0100,b为0011,则invB为1100,加上额外的Cin意味着b:

  0100   (A)
  1100   (invB)
+ 0001   (Cin)
_________
 10001  
溢出为1,结果为0001(4-3=1)


您是否尝试过通过波形检查,看看您的结果与此有何分歧?

您的溢出项对我来说没有意义,我认为溢出只是进位,我不知道您为什么用进位[2]进行异或

除此之外,我没有发现任何错误,我不明白这怎么会给出1100作为输出,我也不明白为什么你期望答案是0110(6)

如果A为0100,b为0011,则invB为1100,加上额外的Cin意味着b:

  0100   (A)
  1100   (invB)
+ 0001   (Cin)
_________
 10001  
溢出为1,结果为0001(4-3=1)


您是否尝试过通过波形检查,看看您的结果与此有何分歧?

为什么invB没有负载?“sub”是什么意思?你想从A中减去B吗?啊,对不起。在原始代码中,行是RCL4位RC4(A、invB、sub、sum、C1、溢出);我将编辑上面的内容。是的,如果sub=1,我们将从A中减去B。否则它只是一个加法器。为什么invB没有负载?“sub”是什么意思?你想从A中减去B吗?啊,对不起。在原始代码中,行是RCL4位RC4(A、invB、sub、sum、C1、溢出);我将编辑上面的内容。是的,如果sub=1,那么我们将从A中减去B。否则它只是一个加法器。溢出可以通过对最后两个进位进行异或运算来确定。溢出可以通过对最后两个进位进行异或运算来确定。