The design is a digital stopwatch that counts seconds and minutes using the global Tiny Tapeout clock (~12 MHz). A clock divider generates a 1 Hz enable pulse, which increments the seconds counter. When seconds reach 59, they reset to 0 and minutes increment. Both values (minutes and seconds) are converted into BCD format and driven onto a 4-digit multiplexed 7-segment display.
Control is provided through input pins: ui_in[0] → Start stopwatch ui_in[1] → Stop stopwatch
The output pins (uo_out and uio_out) are connected to the 7-segment display’s segment and digit-select lines.
Apply reset (rst_n = 0 for a few clock cycles, then rst_n = 1). Drive ena = 1 (project enable). Set ui_in[0] = 1 to start counting; clear it afterwards. Observe seconds and minutes incrementing on the display. Set ui_in[1] = 1 to stop counting. Outputs can also be monitored in simulation by watching: uo_out[6:0] → segment bits uo_out[7] → decimal point uio_out[3:0] → active digit select
To see the stopwatch visually, connect: uo_out[6:0] → segment lines (a–g) of a common-anode 7-segment display uo_out[7] → decimal point (optional) uio_out[3:0] → digit enable lines (an0–an3)
# | Input | Output | Bidirectional |
---|---|---|---|
0 | start | seg[0] | an[0] |
1 | stop | seg[1] | an[1] |
2 | seg[2] | an[2] | |
3 | seg[3] | an[3] | |
4 | seg[4] | ||
5 | seg[5] | ||
6 | seg[6] | ||
7 | dp |