
This project is a VGA screensaver that displays a bouncing logo containing the text UACJ (top row) and A.M.G (bottom row) on a 640×480 @ 60 Hz display. It is based on the original DVD Screensaver with Tiny Tapeout Logo (Tiny VGA) by Uri Shaked, adapted and personalized by Angélica Morales Gallegos.
The design is composed of three main modules:
vga_sync_generator – Generates the hsync, vsync, display_on, and pixel coordinate (x, y) signals following standard 640×480 VGA timing.bitmap_rom – Defines which pixels are active based on the current coordinates. The letters U, A, C, J (top) and A, M, G with dots (bottom) are drawn using rectangular coordinate ranges. Coordinates are clamped to the range 0–127 to prevent wrapping artifacts.tt_um_...) – Integrates both modules into the TinyTapeout standard interface. It handles the bouncing movement of the logo, color changes on each bounce, and drives the 6-bit RGB output (2 bits per channel).When the logo reaches a screen edge, it reverses direction and cycles through a color palette, replicating the classic DVD screensaver behavior.
Connect the design to a VGA-compatible display using the TinyTapeout demo board or a compatible VGA PMOD. Apply a 25.175 MHz pixel clock (standard for 640×480 @ 60 Hz).
Inputs (via ui_in):
| Bit | Function |
|---|---|
| 0 | cfg_solid_color – When high, selects a solid palette color; when low, enables gradient color mode |
Outputs (via uo_out):
| Bits | Function |
|---|---|
| 7 | vsync |
| 6 | hsync |
| 5:4 | Red channel (2 bits) |
| 3:2 | Green channel (2 bits) |
| 1:0 | Blue channel (2 bits) |
Reset: Assert rst_n low to reset the design, then release high to begin operation.
Once running, the display will show the UACJ / A.M.G logo bouncing around the screen and changing color on each edge collision.
The design was verified on the TinyTapeout Playground, confirming correct movement, color changes, proper text rendering, and absence of visual artifacts.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | R1 | ||
| 1 | G1 | ||
| 2 | B1 | ||
| 3 | VSync | ||
| 4 | R0 | ||
| 5 | G0 | ||
| 6 | B0 | ||
| 7 | HSync |