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