01-11-2015, 01:47 AM
(This post was last modified: 01-11-2015, 01:53 AM by Apocryphan.)
This can add a 2 tick signal with only 6 ticks between each addition, it would've been faster if it weren't for the rapid 5 addition slipping from it's proper carry into a 5,0 pattern. It stacks and chains easily to increase the digits you can multiply. I have a hex version also, but i'm not at home and don't have the new layout memorized like i did this one, the hex version is a little slower (2 ticks i think) but it can easily replace the decimal cell in this to multiply in hexadecimal. The hex version will be nicer for converting to and from binary for those looking to add a multiplication function to their calculator.
Multiplier Clock
Hopper represents the Input Value, This is just a memory cell that will start subtracting 1 every 6 ticks after you input a value, and it will pulse every time the signal strength falls. I have an alternate version that pulses on the rising signal strength too, so that i can multiply by 16, although it's not necessary since that is more than any hex digit can hold.
The Decimal Adder cell
Blue wire is the carry wire, the logic in this is such.
Right Blue: if x >= PLA then, Cancel white wire, subtract PLA from x and add.
Left Blue: if x >= PLA then Reset cell to 10(0 inverted), add one to the carry Ram, the carry ram can hold a full carry of 9 which won't ever happen because you can't fit 10 in a single digit. In hex the full carry happens when multiplied by 16.
If the input doesn't overtake the PLA then it is just straight up subtracted on the white wire and all is dandy.
each digit is shifted appropriately, and then I combine the 2 values per digit using the same comparator logic for the carry.
Multiplier Clock
Hopper represents the Input Value, This is just a memory cell that will start subtracting 1 every 6 ticks after you input a value, and it will pulse every time the signal strength falls. I have an alternate version that pulses on the rising signal strength too, so that i can multiply by 16, although it's not necessary since that is more than any hex digit can hold.
The Decimal Adder cell
Blue wire is the carry wire, the logic in this is such.
Right Blue: if x >= PLA then, Cancel white wire, subtract PLA from x and add.
Left Blue: if x >= PLA then Reset cell to 10(0 inverted), add one to the carry Ram, the carry ram can hold a full carry of 9 which won't ever happen because you can't fit 10 in a single digit. In hex the full carry happens when multiplied by 16.
If the input doesn't overtake the PLA then it is just straight up subtracted on the white wire and all is dandy.
each digit is shifted appropriately, and then I combine the 2 values per digit using the same comparator logic for the carry.