Ripple Carry Adder in Verilog

  • 1642
  • 0

紀錄與分享

module hw2(S0,S1,S2,S3,C4,A0,A1,A2,A3,B0,B1,B2,B3,C0); 

 

input  A0,A1,A2,A3,B0,B1,B2,B3,C0; 

output S0,S1,S2,S3,C4; 

wire   C1,C2,C3; 

 

m1 U0 (.S(S0),.C(C1),.X(A0),.Y(B0),.Z(C0)); 

m1 U1 (.S(S1),.C(C2),.X(A1),.Y(B1),.Z(C1)); 

m1 U2 (.S(S2),.C(C3),.X(A2),.Y(B2),.Z(C2)); 

m1 U3 (.S(S3),.C(C4),.X(A3),.Y(B3),.Z(C3)); 

 

endmodule 

 

module m1(X,Y,Z,S,C); 

 

input  X,Y,Z; 

output S,C; 

wire   S,C; 

 

assign S=(X^Y)^Z; 

   C=((X^Y)&Z)|(X&Y);    

 

endmodule