# Adjustable Frequency LED Chaser

A project for Tiny Tapeout 4 (https://tinytapeout.com/).

This is a simple LED chaser animation for a seven-segment display,
but a configurable bank of clock dividers allows the animation to run at
human-reasonable speeds 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.
10k
Loading
tt-block-input
Loading
tt-block-output
Loading
tt-block-bidirectional-io
Loading
tt-block-bidirectional-io
Loading
tt-block-bidirectional-io
Loading
tt-block-bidirectional-io
Loading
tt-block-bidirectional-io
Loading
tt-block-bidirectional-io
Loading
tt-block-bidirectional-io
Loading
tt-block-bidirectional-io
Bidirectional I/O pins

ERC Warnings

flop2:CLK: Clock driven by combinatorial logic
flop18:CLK: Clock driven by combinatorial logic
flop30:CLK: Clock driven by combinatorial logic
flop26:CLK: Clock driven by combinatorial logic
flop32:CLK: Clock driven by combinatorial logic
flop33:CLK: Clock driven by combinatorial logic
flop34:CLK: Clock driven by combinatorial logic
flop35:CLK: Clock driven by combinatorial logic
flop36:CLK: Clock driven by combinatorial logic
flop37:CLK: Clock driven by combinatorial logic
3 additional warning(s) hidden