Um Full-Adder é um circuito lógico combinacional que realiza a soma de três bits:
- A: primeiro bit de entrada
- B: segundo bit de entrada
- Cin (Carry-in): o "vai um" da casa anterior (menos significativa)
- S (Sum): resultado da soma dos três bits
- Cout (Carry-out): "vai um" para a próxima etapa (mais significativa)
| A | B | Cin | Sum | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
- Soma (Sum) =
A ⊕ B ⊕ Cin - Carry-out (Cout) =
(A & B) | (A & Cin) | (B & Cin)
Você pode montar um Full-Adder usando duas portas XOR, duas AND e uma OR:
Sum = A ⊕ B ⊕ Cin
Cout = (A & B) | (B & Cin) | (A & Cin)
module full_adder (
input A,
input B,
input Cin,
output Sum,
output Cout
);
assign Sum = A ^ B ^ Cin;
assign Cout = (A & B) | (A & Cin) | (B & Cin);
endmodule- Somadores maiores (4, 8, 16 bits)
- ALUs (Unidades Lógicas e Aritméticas)
- Contadores
- Sistemas embarcados e FPGAs