Ed,
I can believe that it's hard to see what's going on in the multiplier. I've spend many hours trying to cram the logic into the smallest area possible, which, of course, obscures its beauty. Please find attached an mcl file with another compact version similar to what I sent last time, along with an expanded version that separates out the components. (This one is a thing of beauty!)
The design does C = A * B, where A and B are 32 bits and C is 64 bits. The first partial product appears in the expanded version in 205 cycles. There are 8 bits per row in the C register, low order bit upper right. The algorithm starts with the high order bit of the multiplier, thus the first partial product has high order bits. Additional partial products are seen every 256 cycles, final product in a total of 8141 cycles. The product continues to reappear every 256 cycles thereafter. In the compact version the final bit of the product arrives at the XOR in 8116 cycles.
The mcl is set to multiply 2^32-1 times 2^32-1 = 2^64 - 2^33 + 1.
There are 6 components (they are labeled in the mcl).
A - shift register, multiplicand, 252 cells
B - shift register, multiplier, 124 cells
C - shift register, product, 256 cells, 40 inside the multiplier in compact version
FA - single full adder, does a serial add
Gate - gates A to FA when corresponding B bit was on, removes bit from B after it's used
Clock - tells Gate when to look at B, a fill-empty counter, 128 cells in length, period = 252
The main reason I designed this multiplier is to show off 4-tick logic. (Don't think anyone else is using these devices yet.) I'm sure it's difficult to recognize some of the logic elements in FA, Gate, and Clock since some look different from the 6-tick variety, however, the logic consists entirely of ORs, ANDs, XORs, INVERTERs, and LATCHs. A 4-tick inverter is shown in the mcl file.
4-tick logic has two main advantages - density and speed. A loop in 6-tick logic takes 50% more cells and 50% longer to traverse. High energy is a salient feature. There are many electrons where nothing seems to be happening.
I hope this gives a better view of what's going on. Let me know what you think.
This has chewed up a lot of my nights recently, however, I'm considering working on a Turing machine - if I can find the time. I've laid out the logic for a 2-D if white, go left set black; if black, go right set white. Anyone still interested?
Nyles Heise