A project for Tiny Tapeout 4.
This is a simple circuit implementing an LED chaser animation for a seven-segment display, but a configurable bank of clock dividers allows the animation to run at human-reasonable speeds (1-10Hz) for all input clock frequencies. The intent is to support a wide range of PCBs: as long as there's any clock and display whatsoever, you get a pretty demo. (It can also be used as a frequency counter in a pinch.)
By default, a new frame of the 6-frame LED chaser pattern is displayed on outputs 0 through 5 every rising clock edge. Inputs 0 through 4 toggle clock dividers of 2x (2^1), 4x (2^2), 16x (2^4), 256x (2^8), and 65536x (2^16) respectively. These dividers stack multiplicatively for a maximum clock division of 2^31 = 2.15e9, which easily slows the maximum expected 50MHz clock to sub-Hertz frequencies. Combining a subset of the clock dividers allows fine adjustment.
The first six frames after chip startup may be partially incorrect.