Basic Explanation This multiplier uses look up tables. To preserve look up space, only squares can found. (ie Address 5 will index to 25) We can then make use of the follwoing properties: (A+B)^2 = A^2 +2AB + B^2 - (A - B)^2 = A^2 -2AB + B^2 ---------------------------------------- 4AB So, after (A+B) and (A-B) are entered into the ROM, the second result is subtracted from the first, and then shifted to the right by two. Advanced Schematic.: This makes use of the above with a small addition. X + Y and X -Y are always even if both X and Y are even or both odd, we can further reduce our table sizes. If one is odd, and the other even (The XOR of the LSB), we then subtract one from B and procede with the multiply. Since we will never look up an odd number, half the table can be removed. Also, since an even number squared will always have the two LSB bits as zeroes, we can leave them out of the table as well, getting rid of the shifter needed at the end. (Basically, this last part is just (A+B)/4 == (A/4 + B/4) ) After the multiply is done, if we had reduced B by one, we then add A to our total, and have our final product. (This is just A * B == A*(B-1) + A ) We haven't tested this one fully yet.