The Full Adder — Our example
As a truth table
| An | Bn | Cn | Cnp1 | Sn |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
As a C program
int An, Bn, Cn, Cnp1, Sn ; int tSum = An + Bn + Cn ; Sn = tSum & 0x1 ; Cnp1 = (tSum & 0x2) >> 1 ;
As a SystemVerilog program
module fulladder(
input An,
input Bn,
input Cn,
output Cnp1,
output Sn) ;
assign {Cnp1, Sn} = An + Bn + Cn ;
endmodule