A ripple-carry adder is a combinational circuit used in computer science and digital electronics for adding multi-bit binary numbers. A ripple-carry adder consists of multiple full adder circuits connected in series. Each full adder adds two corresponding bits from the input numbers along with the carry from the previous stage.
The adder works by "rippling" the carry information from one full adder to the next. The carry output from each stage becomes the carry input for the next more significant stage.
It can add two -bit binary numbers by cascading full adder stages. For example, to add two 4-bit numbers, four full adders would be connected in series.
graph LR A0[A0] --> FA0[FA0] B0[B0] --> FA0 Cin[Cin] --> FA0 A1[A1] --> FA1[FA1] B1[B1] --> FA1 A2[A2] --> FA2[FA2] B2[B2] --> FA2 A3[A3] --> FA3[FA3] B3[B3] --> FA3 FA0 --> S0[S0] FA1 --> S1[S1] FA2 --> S2[S2] FA3 --> S3[S3] FA0 --Carry--> FA1 FA1 --Carry--> FA2 FA2 --Carry--> FA3 FA3 --Carry--> Cout[Cout] style FA0 fill:#f9f,stroke:#333,stroke-width:2px style FA1 fill:#f9f,stroke:#333,stroke-width:2px style FA2 fill:#f9f,stroke:#333,stroke-width:2px style FA3 fill:#f9f,stroke:#333,stroke-width:2px
The main limitation of a ripple-carry adder is its propagation delay. As the carry has to propagate through each full adder stage before reaching the final stage, the delay increases with the number of bits being added. The worst-case delay occurs when the carry has to propagate from the least significant bit to the most significant bit, in which case the total delay counts up to