Our program works by using a 4x4 array multiplier computes the product of two 4-bit binary numbers, m and q, through bitwise multiplication and summing partial products. Each bit of q is multiplied by every bit of m, generating partial products that are shifted based on their significance. Full adders (FA) then sum these partial products. At each stage, the full adders combine two partial product bits and any carry from the previous stage. As the process progresses through the rows, the number of bits to sum increases, which is managed by additional full adders. The final output is an 8-bit product p, with the least significant bit produced by the sum of the first row and the most significant bit formed by the final carry after all additions.
To test the 4x4 multipler feed the multiplier two 4 bit inputs. From here the partial products will be calculated and the remaining product should be a binary representation of the decimal product. To verify you can convert final products between binary and decimal and compare expected values.
Tiny Tapeout design
# | Input | Output | Bidirectional |
---|---|---|---|
0 | m[0] | p[0] | |
1 | m[1] | p[1] | |
2 | m[2] | p[2] | |
3 | m[3] | p[3] | |
4 | q[0] | p[4] | |
5 | q[1] | p[5] | |
6 | q[2] | p[6] | |
7 | q[3] | p[7] |