Ant64 System Overview
A federation of specialised subsystems — each focused, each deterministic, all connected.
FireStorm — Main CPU and Chipset (GoWin GW5AT FPGA)
The Ant64's processing fabric is one FPGA containing both a 64-bit RISC-V CPU (FireStorm) and the custom chipset alongside it — graphics, audio, blitter, copper, rasteriser. CPU and chipset share the FPGA's memory ports and timing fabric, so the CPU and the hardware aren't separated by a driver layer or a memory copy — they're the same silicon, running in the same clock domain.
FireStorm Execution Engine
GoWin GW5AT-138 (Ant64 / Ant64C) · GW5AT-60 (Ant64S) · ~$26/chip volume · 22nm
FireStorm EE (RV64GC + 7 custom extensions)
|
+--> AntOS (FreeRTOS-based, multi-task)
+--> User applications (C++ · Dear ImGui · Luau · scripting)
+--> Audio engine setup, AI, pathfinding, game state
+--> Chipset register writes (one address space)
- RV64GC compatible — vanilla RISC-V binaries run unchanged from DDR3
- Wide mode — hot-path code in 36-bit SRAM has 64 GPRs, 64 FPRs, wider immediates, predicated execution, dual-issue
- Seven custom extensions — Xcrisp (memory primitives), Xstack (BSRAM stacks), Xcond (predication), Xlate (translators), Xctx (hardware contexts), Xmath (games/audio/DSP math), and the implicit Xwide
- Shallow OoO microarchitecture — register scoreboarding, dual-issue, DSP-block-backed multipliers, ~380 MHz on the GW5AT
Chipset (in the same FPGA)
| Block | Detail |
|---|---|
| Display pipeline | Up to 16 hardware layers, copper-driven raster effects |
| Blitter | Memory moves, transforms, blends, transparency |
| Audio engine | 128+ voices · FM / VA / sample / granular / physical modelling · WM8958/WM8960 codec |
| Copper | Beam-synchronised list processor for mid-scanline register changes |
| 2D rasteriser | ImGui draw-list backend · triangle setup · scanline fill · texture sampling |
| Raycaster / voxel | Hardware ray queries, voxel column rendering |
The CPU writes a sprite attribute and the next scanline shows it. No driver, no DMA-and-flush, no abstraction wall. More about FireStorm »
Memory System
| Bus | Width | Purpose |
|---|---|---|
| DDR3 (external) | 64-bit (Ant64/C), 32-bit (Ant64S) | Main code/data — up to 2GB depending on model |
| Wide-mode SRAM | 36-bit | Hot-path code for FireStorm wide mode — up to 1M × 36-bit (~4.5MB) |
| On-chip BSRAM | varies | Sprite line buffers, palette, copper lists, scratchpad |
| QSPI slave (×3) | — | Pulse, DeMon, accelerator — chip register windows |
| MIPI RX (×2, from ESP P4 supervisors) | 2-lane + clock each, 1.5 Gbps/lane = 3 Gbps each | DeMon AntOS UI feed + Pulse sequencer UI feed (composited as display layers) |
The wide-mode SRAM is Ant64 / Ant64C only. Ant64S runs FireStorm entirely from DDR3 in narrow mode (32-bit fetch). All FireStorm extensions except the wide-mode-only ones (Xcond predication, wider immediates, indexed loads via 0x7F escape) work in narrow mode.
DeMon — System Supervisor (ESP32-P4 + ESP32-C5)
DeMon is the glue — it boots, watches, bridges, displays the boot UI, and provides connectivity.
DeMon is now built around an ESP32-P4 — a single 400 MHz HP RISC-V core with 32MB PSRAM, PIE (AI/DSP) extensions, MIPI display engine, USB OTG — paired with an ESP32-C5 (Wi-Fi 6, Bluetooth 5.3, Thread, Zigbee). AntOS runs on DeMon's HP core, not on FireStorm, so the OS keeps running even when the FPGA bitstream is reloaded (a personality cartridge swap, for example).
- JTAG → FireStorm FPGA (bitstream, flash, debug)
- QSPI → FireStorm (register window)
- MIPI display TX → FireStorm (AntOS UI + sprite layer · 2D-PPA blitter with rotation · recovery screens)
- Triple SID audio engine (L/C/R, 9 SID voices, PIE-accelerated) and SAM speech synthesizer (PIE-accelerated formant TTS) — system sounds, FX, SID file playback, voice prompts, accessibility, dialogue; both streamed to FireStorm via the same MIPI link
- SPI master → Pulse, cartridge, touch TFT
- WiFi / BT / Thread / Zigbee via ESP32-C5 · optional LoRa via SX1262
- Watchdog · debug proxy · USB host (keyboard, mouse)
- 32MB PSRAM available to the supervisor — enough room for boot UI, recovery shells, and OTA staging
- RTC — MCP74910 with CR2450 backup
- 256GB internal micro SD (default, replaceable)
The ESP32-P4's MIPI display engine drives a feed into the FPGA, so DeMon can display a boot UI before FireStorm is even loaded — recovery screens, splash images, error messages — composited with FireStorm output once it's running.
Pulse — Music, Sequencer & Performance MCU (ESP32-P4 + 32MB PSRAM)
Pulse is the hands-on musical brain — every knob, dial, MIDI socket, and the sequencer UI itself live here.
Pulse is now built on the same ESP32-P4 SoC as DeMon, with 32MB of embedded PSRAM and a MIPI display engine that feeds its own UI directly into the FireStorm display compositor. Where DeMon owns boot, recovery, network, and the supervisor overlay, Pulse owns everything performance-related — MIDI, jog dials, sample storage, sequencer logic, software synth emulators, and the sequencer / mixer / sample-browser UI.
- MIDI — DIN In/Out/Thru (Ant64C, via UART optoisolators) + USB MIDI host + USB MIDI device + MPE support
- 8× RGB jog dials with integrated push buttons + RGB LEDs
- Joypads via Sticky controller (SPI master)
- MIPI display TX → FireStorm (sequencer UI + sprite layer · 2D-PPA blitter with rotation)
- QSPI → FireStorm (chipset register window)
- SPI ↔ DeMon (bidirectional command/data link — master + slave channels each side)
- 32MB PSRAM for sample libraries, AMY patch banks, sequencer state, software synth working memory
- AMY synthesis library (github.com/shorepine/amy) running natively on the ESP32-P4 — additive / FM / PCM / partials / filters / envelopes; audio streamed to FireStorm for mixing with the chipset's hardware voices
- Classic synth emulators in firmware (speech synthesis lives on DeMon — see SAM)
- Round TFT display (separate SPI) for jog dial labels and per-knob state
- 4× 3.5mm trigger / CV inputs (Kick · Snare · Sync · Foot)
Sticky — 5V Input Protection (AVR128DB64)
Cheap, replaceable, electrically isolated.
The Sticky MCU handles 5V joystick / paddle / 9-pin-mouse inputs without exposing the FPGA to surges or back-EMF:
- 4 joypad ports — Atari/C64 compatible · Sega 3-/6-button · paddles · 9-pin mice
- Per-port I2C or serial TX/RX modes
- Talks only to Pulse over SPI
- Replaceable as a socketed part — sacrificial protection layer
Pi Zero 2W — Future Accelerator (optional)
A Raspberry Pi Zero 2W attaches to the FPGA via its expansion interface — not a main CPU, but an opt-in accelerator slot for compute-heavy workloads that don't need real-time guarantees:
- 1 GHz quad-core ARM Cortex-A53, 512MB RAM
- Built-in WiFi/Bluetooth (alternative path to ESP32-C5)
- High-speed bus to FPGA via the Pi's expansion header
- Use cases: heavy emulation cores, codec work, software audio plugins, Linux services, community accelerators
(The Pi Zero 2W has no AI / TPU hardware. Small AI / DSP work happens on the supervisors via ESP32-P4 PIE extensions.)
The Pi runs an unmodified Raspberry Pi OS or a custom minimal image, and exchanges data with FireStorm via the FPGA bus. It's not required for the system to function — Ant64 boots and runs without it.
Outputs
Audio
| Output | Notes |
|---|---|
| 2× stereo speakers | Internal |
| Phono line out | Standard RCA |
| HDMI audio | Via video output |
| Optical S/PDIF | Ant64C only |
| Headphone | 3.5mm |
Video
| Output | Notes |
|---|---|
| HDMI | All models — 4K@60 via Parade PS176 DP→HDMI bridge fed by FPGA SerDes |
| VGA + 3.5mm audio | All models — DE-15 + 3.5mm jack via AG6201 HDMI→VGA bridge fed by FPGA fabric HDMI TX |
| Light synth | Generative visual output |
| ESP32-P4 MIPI feeds (×2) | DeMon's AntOS UI + Pulse's sequencer UI, composited as layers on the main display |
| Keyboard touchscreen | DeMon-driven, SPI, always active regardless of FPGA state |
| Circular display on case | Pulse-driven, SPI, always active regardless of FPGA state — far left of case, above keyboard |
Network & Connectivity
| Interface | Notes |
|---|---|
| WiFi 2.4GHz | All models (via ESP32-C5) |
| WiFi 5GHz / 6 | All models (via ESP32-C5) |
| Gigabit Ethernet | Ant64C only |
| BT 5.3 · Thread · Zigbee | Via ESP32-C5 |
| Gossip P2P mesh | AntOS built-in |
| TCP/IP debug server | AntOS built-in |
| LoRa | Optional (SX1262) |
| Pi Zero 2W WiFi/BT | Optional second wireless path |
Storage & I/O
- 256GB internal SD (via DeMon)
- Cartridge port (30-pin)
- USB keyboard / mouse
- 4× 3.5mm trigger / CV inputs
Interconnects
| Bus | Used For |
|---|---|
| QSPI | FireStorm ↔ Pulse · FireStorm ↔ DeMon · FireStorm ↔ accelerator — register access |
| MIPI 2-lane (×2) | ESP32-P4 (DeMon) → FireStorm · ESP32-P4 (Pulse) → FireStorm — UI overlays + bulk data |
| JTAG | Debug / programming — DeMon → FireStorm FPGA (bitstream + flash) |
| SPI bidirectional | DeMon ↔ Pulse (master + slave each side — peer command/data) · DeMon ↔ cart |
| Pi expansion bus | Pi Zero 2W ↔ FireStorm (accelerator data path, future) |
| Hi-speed UART | DeMon ↔ Pulse |
Software Stack
+--------------------------------------------------+
| User app (C++ / Luau / Dear ImGui) |
| Music workstation · games · demos · tools |
+--------------------------------------------------+
| AntOS (on DeMon) · FreeRTOS · Luau · DBFS |
| TCP/IP debug server · Gossip P2P |
+--------------------------------------------------+
| FireStorm EE (RV64GC + 7 extensions, in FPGA) |
| Runs the user app; AntOS UI composited as layer |
+--------------------------------------------------+
| Chipset in same FPGA: Display · Audio · Blitter |
| Copper · Raster · Raycaster |
+--------------------------------------------------+
| DeMon (ESP32-P4 + ESP32-C5) · Pulse (ESP32-P4)|
| Optional: Pi Zero 2W accelerator |
+--------------------------------------------------+
AntOS runs on DeMon (the ESP32-P4 supervisor), providing OS-level services — filesystem, network, scripting, debug server, UI — independently of the FPGA. User applications, games, and demos run on FireStorm in the FPGA, with direct access to the chipset (sprites, blitter, copper, audio engine). The two communicate via QSPI register windows and the MIPI display link. Because AntOS lives outside the FPGA, FPGA reconfigures (personality cartridges, development iteration, recovery) do not require an OS reboot — just a brief main-display blackout while the FPGA loads its new state. On power-on or reset the FPGA auto-loads its native Ant64 chipset from its own flash in a fraction of a second; a personality cartridge load takes up to ~1 second. The keyboard touchscreen (driven by DeMon) and the circular display above the keyboard (driven by Pulse) remain visible throughout, so the user always has feedback.
Model Comparison
| Feature | Ant64S | Ant64 | Ant64C |
|---|---|---|---|
| FPGA | GoWin GW5AT-60 | GoWin GW5AT-138 | GoWin GW5AT-138 |
| FireStorm EE | RV64GC + extensions | RV64GC + extensions + 32-bit-pair dual-issue | RV64GC + extensions + 32-bit-pair dual-issue |
| FPGA hard RISC-V coprocessor | — | 800 MHz, 32-bit (debug / monitor) | 800 MHz, 32-bit (debug / monitor) |
| DDR3 | 512MB, 32-bit (3.2 GB/s) | 1GB, 64-bit (6.4 GB/s) | 2GB, 64-bit (6.4 GB/s) |
| Wide-mode SRAM | — | 1M × 36-bit (~4.5MB) | 1M × 36-bit (~4.5MB) |
| Supervisor | DeMon (ESP32-P4 + ESP32-C5) | DeMon (ESP32-P4 + ESP32-C5) | DeMon (ESP32-P4 + ESP32-C5) |
| Music/control | Pulse (ESP32-P4 + 32MB PSRAM) | Pulse (ESP32-P4 + 32MB PSRAM) | Pulse (ESP32-P4 + 32MB PSRAM) |
| Accelerator | — | Pi Zero 2W (optional) | Pi Zero 2W (included) |
| WiFi | 2.4GHz | 2.4 + 5/6GHz | 2.4 + 5/6GHz |
| Ethernet | No | No | Gigabit |
| DIN MIDI | No | No | In / Out / Thru |
| Optical audio | No | No | S/PDIF |
| Video out | Main HDMI + retro VGA/audio | Main HDMI + retro VGA/audio | Main HDMI + retro VGA/audio |