Skip to content

tommythorn/no-time-for-squares

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

See it in action!

Analog Clock using a beam-racing triangle render

The VGA timing is based directly on VEGA 640x480 @ 75 Hz.

Using a tile-based beam-racing triangle render has always seemed like a good way to deal with the lack of a framebuffer. Tiny Tapeout gave me an opportunity to play with it. However as this effort is pretty much defined by a mad-scramble to get SOMETHING done for Nov 4th everything is a consequence of that, so the design is very simple and not very ambitious.

Every frame the 640x480 VGA matrix is scanned, advancing the state of the intersecting lines of the three triangles. If the (x,y) coordinate of the "beam" lines on the positive side of each line, the beam is inside the triangle. Among the visible triangles, the highest priority triangle sets the color, else we default to a grey color. Twelve dots are also marked, to make it easier to read the clock.

The algorithm might be easily understood by examining the software model in Rust, in the sw directory.

The main "UI" is two buttons to advance hour and minutes respectively. The least significant two bits selects which outputs are routed to the bidirectional port (frame number, seconds * 4 + hz-strobe * 2 + vs-strobe, minute * 4, hour * 4).

What is Tiny Tapeout?

TinyTapeout is an educational project that aims to make it easier and cheaper than ever to get your digital designs manufactured on a real chip.

To learn more and get started, visit https://tinytapeout.com.

Wokwi Projects

Edit the info.yaml and change the wokwi_id to the ID of your Wokwi project. You can find the ID in the URL of your project, it's the big number after wokwi.com/projects/.

The GitHub action will automatically fetch the digital netlist from Wokwi and build the ASIC files.

Verilog Projects

Edit the info.yaml and uncomment the source_files and top_module properties, and change the value of language to "Verilog". Add your Verilog files to the src folder, and list them in the source_files property.

The GitHub action will automatically build the ASIC files using OpenLane.

Enable GitHub actions to build the results page

Resources

What next?

About

VGA Clock Design For Tiny Tapeout 05

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •