For a while I have been needing a 16 bit adder for a von neumann CPU I will be making. One issue, I hate pistons. So I needed some type of solid state 16 bit adder. Ripple carry was out of the question (even at 1 tick per bit). Block ripple carry look ahead and Carry block look ahead are good ideas but are also a tad too slow for my tastes (around 8-10 ticks). So CLE right? well turns out 16 bit CLE is not fun at all and also CLE is a completely difference form factor than im used to working in. So I said ok I will make CLA, LFA to be exact. Well that too was too slow as LFA has 2 tick BK cells (2 ticks is as fast as you can get a pure BK cell). So I started looking at PLA (Proper Lookahead Adder, named by properenglish as he published it first on youtube). Now I knew it was 4 ticks for 8 bits but I got worried about about 16 bits. So I researched it a bit (started messing around on my plot) And I figured it would only be 1 more tick for 16 bits. That's 5 ticks in total so I started out on a adder adventure. And this is the result.
Size:
per bit size: 2 wide per bit.
L*W*H: 32*36*13
Specs:
Type: Parallel prefix binary addition module.
Speed: 1/2 second (5 ticks).
Throughput: 3 hz (3 ticks).
Word size: 16 bits
Cin and cout?: Yes
Clock type: Asynchronous
Output noise: Mid zero
Sync execution: Yes
One thing to note this adder has a noisy output, that means that will give 4 output states. zero, High, low, mid zero.
Mid zero just means that the output signal is slightly on, this is no issue as its only 3 blocks. These blocks are taken into account in the Length
measurement.
But anyways who am I stalling? pictures!
![[Image: 8N8EASE.jpg]](http://i.imgur.com/8N8EASE.jpg)
![[Image: OTUA7mm.jpg]](http://i.imgur.com/OTUA7mm.jpg)
![[Image: mXq75P9.jpg]](http://i.imgur.com/mXq75P9.jpg)
![[Image: Vs6d5Vg.jpg]](http://i.imgur.com/Vs6d5Vg.jpg)
![[Image: aGX9AzM.jpg]](http://i.imgur.com/aGX9AzM.jpg)
![[Image: vgYTn1r.jpg]](http://i.imgur.com/vgYTn1r.jpg)
-Cutters
Size:
per bit size: 2 wide per bit.
L*W*H: 32*36*13
Specs:
Type: Parallel prefix binary addition module.
Speed: 1/2 second (5 ticks).
Throughput: 3 hz (3 ticks).
Word size: 16 bits
Cin and cout?: Yes
Clock type: Asynchronous
Output noise: Mid zero
Sync execution: Yes
One thing to note this adder has a noisy output, that means that will give 4 output states. zero, High, low, mid zero.
Mid zero just means that the output signal is slightly on, this is no issue as its only 3 blocks. These blocks are taken into account in the Length
measurement.
But anyways who am I stalling? pictures!
![[Image: 8N8EASE.jpg]](http://i.imgur.com/8N8EASE.jpg)
![[Image: OTUA7mm.jpg]](http://i.imgur.com/OTUA7mm.jpg)
![[Image: mXq75P9.jpg]](http://i.imgur.com/mXq75P9.jpg)
![[Image: Vs6d5Vg.jpg]](http://i.imgur.com/Vs6d5Vg.jpg)
![[Image: aGX9AzM.jpg]](http://i.imgur.com/aGX9AzM.jpg)
![[Image: vgYTn1r.jpg]](http://i.imgur.com/vgYTn1r.jpg)
-Cutters
What exactly is the difference between a "Proper look ahead adder" and an LFA. Does it take advantage of some CLE logic to reach later bits while still using mostly BK cells? (This is how I've heard it)
Nice work cut!