330 Asicle v2

330 : Asicle v2

Design render

How it works

VGA screenshot with questions CRATE and ANGLE

Asicle is a Wordle clone implemented directly in hardware. A first version of it was taped out on the Google-Skywater MPW6 shuttle. This second version is a rewrite for Tiny Tapeout.

The 25-fold decrease in area mostly comes from moving the word list and font bitmaps to external flash on the QSPI Pmod, with some architectural changes to compensate for slower memory access. The design was also adapted to the Tiny Tapeout ecosystem by using the Gamepad Pmod for input and the Tiny VGA Pmod for output.

How to test

  • Connect the Pmods:
    • Gamepad to input port (optional, you can also drive the input pins using the commander app or momentary push buttons)
    • QSPI to bidirectional port
    • Tiny VGA to output port
  • Flash the data file to the QSPI Pmod using the Tiny Tapeout flasher
  • Select the design
  • Set the clock to 25.175 MHz and reset the design
  • Play the game

If you haven't played Wordle before, the aim is to guess a five-letter English word in six attempts. Each time you get feedback: a green square indicates that the letter is correct, a yellow square indicates that it appears in the hidden word but at a different position, and a grey square means that the letter doesn't appear in the solution at all.

Gamepad controls:

  • <kbd>🠝</kbd> <kbd>🠟</kbd>: change the letter in the selected position
  • <kbd>🠜</kbd> <kbd>🠞</kbd>: move the selection
  • <kbd>A</kbd>: make a guess
  • <kbd>START</kbd>: start a new game (if the current one is finished)
  • <kbd>SELECT</kbd>+<kbd>START</kbd>: start a new game (any time)
  • <kbd>SELECT</kbd>+<kbd>X</kbd>: show the solution*
  • <kbd>SELECT</kbd>+<kbd>Y</kbd>: re-roll the solution*

(* only in debug mode)

Direct input using ui_in:

  • <kbd>0</kbd> <kbd>1</kbd>: change the letter in the selected position
  • <kbd>2</kbd> <kbd>3</kbd>: move the selection
  • <kbd>4</kbd>: make a guess
  • <kbd>5</kbd>: start a new game
  • <kbd>6</kbd>: show the solution
  • <kbd>7</kbd>: re-roll the solution

External hardware

IO

#InputOutputBidirectional
0uptinyvga: r1qspi: cs0 (flash)
1downtinyvga: g1qspi: sd0/mosi
2lefttinyvga: b1qspi: sd1/miso
3righttinyvga: vsyncqspi: sck
4guess / gamepad: latchtinyvga: r0qspi: sd2
5new game / gamepad: clocktinyvga: g0qspi: sd3
6peek (debug) / gamepad: datatinyvga: b0qspi: cs1 (unused)
7roll (debug)tinyvga: hsyncqspi: cs2 (unused)

Chip location

Controller Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux Mux tt_um_chip_rom (Chip ROM) tt_um_factory_test (Tiny Tapeout Factory Test) tt_um_htfab_asicle2 (Asicle v2) tt_um_htfab_caterpillar (Simon's Caterpillar) tt_um_urish_simon (Simon Says memory game) tt_um_microlane_demo (microlane demo project) tt_um_ygdes_hdsiso8_dlhq (ttihp-HDSISO8) tt_um_ygdes_hdsiso8_rs (ttihp-HDSISO8RS) tt_um_YannGuidon_TinyScanChain (TinyScanChain5L) tt_um_MichaelBell_photo_frame (Photo Frame) tt_um_digital_clock_example (7-Segment Digital Desk Clock) tt_um_miniMAC (miniMAC_5L) tt_um_tinymoa_ihp0p4_16x16 (TinyMOA-IHP0P4-16x16) tt_um_glyph_mode_hd (Glyph Mode HD) tt_um_prism_lite (ihp_cmos51_prism) tt_um_htfab_rotfpga2 (ROTFPGA v2) tt_um_SotaSoC (SotaSoC) tt_um_essen (Fast bfloat multiplication) tt_um_calonso88_spi_i2c_reg_bank (Register bank accessible through SPI and I2C) tt_um_urish_usb_cdc (USB CDC (Serial) Device) tt_um_urish_rings (VGA Rings) tt_um_toivoh_demo (Orion Iron Ion [TT08 demo competition]) tt_um_2048_vga_game (2048 sliding tile puzzle game (VGA)) tt_um_pakesson_glitcher (Glitcher) tt_um_chatelao_fp8_multiplier (OCP MXFP8 Streaming MAC Unit) tt_um_algofoogle_raybox_zero (raybox-zero TTIHP0p4 edition) tt_um_flummer_ltc (Linear Timecode (LTC) generator with I2C control) tt_um_lledoux_s3fdp_seqcomb (Pattern-Guided Arithmetic Optimizations with MLIR) tt_um_snake_game (SnakeGame) tt_um_spongent88 (Spongent-88 Hash Accelerator) tt_um_lledoux_bf16_diminished_kulisch (Pattern-Guided Arithmetic Optimizations with MLIR kulisch bf16) tt_um_float_synth_nikleberg (float_synth) tt_um_silicon_strummer (Silicon Strummer) tt_um_vga_clock (VGA clock) tt_um_urish_sic1 (SIC-1 8-bit SUBLEQ Single Instruction Computer) tt_um_algofoogle_vgaringosc (Ring osc on VGA) tt_um_tinymoa_ihp0p4_8x8 (TinyMOA-IHP0P4-8x8) tt_um_tinytapeout_logo_screensaver (VGA Screensaver with Tiny Tapeout Logo) tt_um_lisa (LISA 8-Bit Microcontroller) tt_um_nicklausthompson_twi_monitor (TWI Monitor) Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available Available