
Katomata is a Tiny Tapeout demoscene entry: a 1D elementary cellular automata visualizer for VGA. It implements Stephen Wolfram's classification of Elementary Cellular Automata and continuously cycles through all 256 rules (rule 0 through rule 255), drawing the time evolution of each rule directly on a 640x480 @ 60 Hz VGA frame.
A 1D elementary cellular automaton is a row of binary cells that evolves in discrete steps. The next state of each cell is decided by its own state and that of its two immediate neighbours - three bits in, one bit out, so 2^3 = 8 input patterns and one output bit per pattern. Packing those 8 output bits into a byte gives 2^8 = 256 possible "rules", numbered 0-255. Rule 30 (the default starting rule here) is famously chaotic; rule 90 produces a Sierpinski triangle; rule 110 is Turing complete.
automata_engine module using the current rule byte.tt_um_katomata (top): VGA pipeline, framing logic, rule sequencer,
color mapping.hvsync_generator: standard 640x480 @ 60 Hz horizontal/vertical sync
generator (with an added vmaxxed end-of-frame strobe).automata_engine: pure-combinational 1->1 row update for the
selected rule byte.counter_gen, pos_edge_detect, neg_edge_detect: small reusable
helpers.clk with a 25.175 MHz pixel clock.rst_n low briefly to reset, then release.There are no input pins to drive - all 8 ui_in and 8 uio_in bits
are unused.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | R1 | ||
| 1 | G1 | ||
| 2 | B1 | ||
| 3 | VSync | ||
| 4 | R0 | ||
| 5 | G0 | ||
| 6 | B0 | ||
| 7 | HSync |