
This project implements a 4x4 structural array multiplier that multiplies two 4-bit unsigned integers (A and B) to produce an 8-bit product (P = A × B), and displays the decimal equation on a VGA monitor via the Tiny VGA PMOD.
The 8 input pins (ui_in[7:0]) are bare footprint pads designed for direct cable soldering:
ui_in[3:0] = multiplicand A (values 0–15)ui_in[7:4] = multiplier B (values 0–15)Solder wires from your external digital signal source directly onto the input pads on the TinyTapeout carrier board.
The multiplication is performed using a classic array of 12 full adders arranged in a carry-propagate tree:
Inputs are registered on the rising edge of the 25 MHz clock for glitch-free operation.
A 640×480 @ 60 Hz VGA signal is generated by the hvsync_generator module, which requires a 25 MHz clock. The Tiny VGA PMOD must be connected to uo_out.
The screen displays the multiplication equation in large coloured decimal digits, centred inside a bordered panel:
A x B = P
Leading zeros are suppressed for clean readability (e.g. 3 x 7 = 21, not 03 x 07 = 021).
Below the equation panel, seven horizontal colored bands are drawn as a decorative strip that visually represents the structure of the array multiplier. Each band has a distinct color (cyan, blue, magenta, lavender, light green, light cyan, white) to evoke the layered partial-product rows of the multiplication tree.
Below that, the designers’and workshop organizers' initials and the Purdue Fort Wayne mascot, the mastodon, are also shown on the display.
uo_out header.ui_in[0]–ui_in[7] footprint pads on the board.ui_in[3:0] to a 4-bit digital source for operand A.ui_in[7:4] to a 4-bit digital source for operand B.uo_out.ui_in pads.| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | A[0] multiplicand bit 0 (solder pad) | R1 (VGA red bit 1) | (unused) |
| 1 | A[1] multiplicand bit 1 (solder pad) | G1 (VGA green bit 1) | (unused) |
| 2 | A[2] multiplicand bit 2 (solder pad) | B1 (VGA blue bit 1) | (unused) |
| 3 | A[3] multiplicand bit 3 (solder pad) | vsync | (unused) |
| 4 | B[0] multiplier bit 0 (solder pad) | R0 (VGA red bit 0) | (unused) |
| 5 | B[1] multiplier bit 1 (solder pad) | G0 (VGA green bit 0) | (unused) |
| 6 | B[2] multiplier bit 2 (solder pad) | B0 (VGA blue bit 0) | (unused) |
| 7 | B[3] multiplier bit 3 (solder pad) | hsync | (unused) |