File Type Mode Size
.github/ dir 0 0
.gitignore file 644 173
LICENSE file 644 11357
Makefile file 644 518
README.md file 644 3242
clockgen/ dir 0 0
docs/ dir 0 0
icestick.pcf file 644 572
icestick.ys file 644 135
info.yaml file 644 1714
src/ dir 0 0
test/ dir 0 0
README.md

Munch

Munch is an audiovisual presentation (a "demo") for the Tiny Tapeout Demoscene competition. It shows a munching squares animation and some text via Leo's VGA PMOD, and plays some music via the Tiny Tapeout Audio Pmod.

For more technical details, read the documentation for project.

What is Tiny Tapeout?

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

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

Running on the iCEstick

In addition to the standard Tiny Tapeout OpenLane build, this can also be built for the Lattice iCEstick. Run make icestick to produce munch.bin, which can be programmed onto your iCEstick with iceprog munch.bin.

You will of course need the usual tools - yosys, nextpnr, and Project IceStorm. You can get everything in one convenient package from the Yosys OSS CAD Suite.

This should produce a bitstream that is functionally identical to the ASIC version, and, with the interface noted below, it will follow all the descriptions from the main TT documentation.

Pin mapping

The Tiny Tapeout interface (ui_in, uo_out, etc.) are mapped to pins on the iCEstick with src/iceshim.v.

The main PMOD connector (port1, pins 78-91) is configured as uo_out. The two other headers are mapped to ui_in (port0, 112-119) and uio_out (port2, 44-62) except for the two lowest pins on port2. port2[0] is the external clock input clk and port2[1] is the reset line rst_n.

Additionally, uio_out[6:4] is mapped to the first three LEDs. It displays the internal state of the top three bits of the pattern clock.

External clock

The iCEstick's internal clock is fixed at 12MHz (or at least, if it is adjustable I didn't bother figuring out how). I used a Pi Pico to generate a clock to better emulate the Tiny Tapeout dev board hardware. I have a program in clockgen that can do this because I was not sure if the TT micropython firmware would work on a regular Pico. It outputs a 25.177MHz clock on GPIO 21 (pin 27). It can also be tuned by connecting to it via serial and pressing + or - to adjust the clock divider.

Running

The demo will start directly after programming/power on, but it needs the reset line brought low to properly initialize all the registers. It should be brought low for at least three periods of the input clock.

Supplemental tests

There are two module tests under test/ for testing the LFSR and audio output. The LFSR test make -f Makefile.lfsr just ensures that the LFSR period is the full 11 bits. The audio test (make -f Makefile.audio) doesn't actually test anything. I just use it to inspect the waveforms with GTKWave.

Clone: https://git.bytex64.net/tt-munch.git