Adder (BCT): Difference between revisions

From TernaryWiki
Jump to navigationJump to search
No edit summary
(One intermediate revision by the same user not shown)
Line 10: Line 10:


== Carry Select Adder ==
== Carry Select Adder ==
Another fast adder design is the carry select adder. This design uses MUXs to select the correct answer from adder blocks that pre-calculate the possible carries in parallel. Most of the adder's delay then becomes the MUXs selecting correct answers just in time with the adder blocks sized to finish around the same time. The current design is 2.5 times faster than the ripple carry at 22 delays. The big disadvantage of a carry select adder is it's size and complexity. Due to ternary's base 3 logic there are three ways a carry can go so three pre-calculated answers need to be generated.
Another fast adder design is the carry select adder. This design uses [[MUX (BCT)|MUXs]] to select the correct answer from adder blocks that pre-calculate the possible carries in parallel. Most of the adder's delay then becomes the [[MUX (BCT)|MUXs]] selecting correct answers just in time with the adder blocks sized to finish around the same time. The current design is 2.5 times faster than the ripple carry at 22 delays. The big disadvantage of a carry select adder is it's size and complexity. Due to ternary's base 3 logic there are three ways a carry can go so three pre-calculated answers need to be generated.
[[File:Carry-Select-Adder-BCT.png|none|thumb|984x984px|BCT Carry Select Adder]]
[[File:Carry-Select-Adder-BCT.png|none|thumb|984x984px|BCT Carry Select Adder]]


<table>
<tr>
<td style="vertical-align: text-top; padding-right: 32px;">
=== Prebiased Carry Select ===
=== Prebiased Carry Select ===
[[File:Prebiased-Carry-Select-BCT.png|none|thumb|BCT Prebiased Carry Select Subcircuit ]]
[[File:Prebiased-Carry-Select-BCT.png|none|thumb|BCT Prebiased Carry Select Subcircuit]]
 
</td>
<td style="vertical-align: text-top; padding-right: 32px;">
==== Positive Prebiased Adder ====
==== Positive Prebiased Adder ====
[[File:Positive-Biased-Adder-BCT.png|none|thumb|BCT Positive Biased Adder]]
[[File:Positive-Biased-Adder-BCT.png|none|thumb|BCT Positive Biased Adder]]
 
</td>
<td style="vertical-align: text-top;">
==== Negative Prebiased Adder ====
==== Negative Prebiased Adder ====
[[File:Negative-Biased-Adder-BCT.png|none|thumb|BCT Negative Prebiased Adder Subcircuit]]
[[File:Negative-Biased-Adder-BCT.png|none|thumb|BCT Negative Prebiased Adder Subcircuit]]
</td>
</tr>
</table>


=== Carry Select ===
=== Carry Select ===

Revision as of 10:31, 6 August 2025

Adder can add (or subtract) two numbers together. Negating the B input will result in a subtraction.

Ripple Carry Adder

The ripple carry adder is the simplest of adders but it's also the slowest. The carry results ripple through all the Full Adders one after another. The output delay is the total of all Full Adders. The current design takes 56 delays.

BCT Ripple Carry Adder

Carry Lookahead Adder

I already have a design for a fast balanced ternary lookahead Incrementer. It's can add or subtract one from a Tryte in just 7 delays.

However, I have not figured out a working carry lookahead adder. A balanced ternary design might not be practical or even possible.

Carry Select Adder

Another fast adder design is the carry select adder. This design uses MUXs to select the correct answer from adder blocks that pre-calculate the possible carries in parallel. Most of the adder's delay then becomes the MUXs selecting correct answers just in time with the adder blocks sized to finish around the same time. The current design is 2.5 times faster than the ripple carry at 22 delays. The big disadvantage of a carry select adder is it's size and complexity. Due to ternary's base 3 logic there are three ways a carry can go so three pre-calculated answers need to be generated.

BCT Carry Select Adder

Prebiased Carry Select

BCT Prebiased Carry Select Subcircuit

Positive Prebiased Adder

BCT Positive Biased Adder

Negative Prebiased Adder

BCT Negative Prebiased Adder Subcircuit

Carry Select

BCT Carry Select Subcircuit

Word Adder

The lookahead Incrementer can be used to greatly speed up the adding of two Words. Both the high and low Trytes can add in parallel and then use an Incrementer to propagate the low result carry through the high result to finalize the answer. This only takes Adder + Incrementer delays.

I wonder if the technique of using parallel carry select adding and lookahead Incrementer carry propagating could possibly be hybridized to make an even faster adder? I have not had time to explore this yet.