(Not a CLA) PDCCA - The Purely Digital Carry Cancel Adder

Hello everybody. In this post, I’ll explain what a PDCCA is.

So, what is a PDCCA?
PDCCA stands for Purely Digital Carry Cancel Adder. You might be familiar with regular CCAs and if you are, then you probably know they depend on signal strength to work. The PDCCA removes this dependency, making it a completely digital circuit.

How does a PDCCA work?
Let’s suppose we have two 4-bit numbers, A and B (though they can be any size)
Then the first step is to XOR all the bits of A with the corresponding bits of B.
So, for example for A = 0b0011 and B = 0b0100, you’ll do: (read from top)
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 0 = 1
So the result is: 0b0111 or 7.
The next step is to compute the carries. This is done using this equation C = !CC AND P OR G, where:
C stands for Carry
CC stands for Carry cancel
and G stands for Generation
The G signal is produced when both A and B are 1.
CC is the opposite, it is produced when both inputs are 0. But since the carry equation only uses its inverse, we can instead have CC to be 1 when at least one input is 1 and save an inverter.
The generation of these signals can be implemented with AND and OR towers.
AND is for G and OR is for CC (we’re using the inverse of CC). Third tower is XOR. The output of the XOR is XORed again with the carry from the previous bit. For the first pair of bits, the XOR result is left as it is, or if we implement Cin (carry in), then it is XORed with the Cin input. The carry from the first bit is simply G. The output of the last carry circuit isn’t further processed in any way and becomes the Cout (carry out) output, which can be used to join multiple adders together to work as one. The output of the second XORs is the result.
Logic diagram

Uploading: 2024-06-30_15.41.46.png…
Uploading: 2024-06-30_15.41.57.png…
Uploading: 2024-06-30_15.42.05.png…
Uploading: 2024-06-30_15.42.11.png…
Uploading: 2024-06-30_19.03.21.png…

This is also known as a CLA (Carry Look-Ahead adder), though most CLAs use generate and propagate instead of generate and cancel. CCAs are actually an implementation of them, inside minecraft since signal strength can represent multiple wires.

Notice how in CLAs the bigger the inputs, the more gates needed to calculate carry for the farther outputs (even though the circuit does not get deeper).


That’s cool ngl, tho id be nice if I’d change the title to cla if it rly is one (idk that much ABT them)

This is not a CLA, as it has a ripple for its carry… both CCA and CLA have sync Carry chains and are made in part to remove the ripple.

Does it even make sense to pursue the invention of a PDCCA?

Right. I didn’t want to go through the represented circuitry and assumed that by PDCCA he only meant “decomposing” the signal strength representation into 16 (or however big the adder is) binary carry/cancel groups.