Ant64 System Overview

Ant64 system overview

A federation of specialised subsystems — each focused, each deterministic, all connected.


FireStorm — Main CPU and Chipset (GoWin GW5AST 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 GW5AST-138 · ~$26/chip volume · 22nm

FireStorm EE (RV64GC + 7 custom extensions)
    |
    +--> User applications (C++ · Dear ImGui · game logic)
    +--> Audio engine setup, AI, pathfinding, game state
    +--> Chipset register writes (one address space)
  • RV64GC compatible — vanilla RISC-V binaries run unchanged from the HyperRAM narrow region
  • 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 GW5AST

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 · WM8960/WM8962 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) 72-bit Main code/data — 1.125 GB (Ant64S) / 2.25 GB (Ant64) / 4.5 GB (Ant64C); SODIMM-upgradable to 4.5 GB
Wide-mode SRAM 36-bit Hot-path code for FireStorm wide mode — up to 1M × 36-bit (~4.5MB)
HyperRAM (external) 8-bit Narrow mode (standard RV64GC) — unmodified RISC-V code/data runs here. Two banks, 32 MB total (the second on a private bus); shared with personality ROM
On-chip BSRAM varies Sprite line buffers, palette, copper lists, scratchpad
OPI — Pulse — chip register window
PCIe ×1 — DeMon (CM5) — bidirectional comms (register + data)
HDMI RX (×2, from DeMon/CM) — HDMI0 over-plane + HDMI1 under-plane video
MIPI RX (×1, from Pulse) 2-lane + clock, 1.5 Gbps/lane = 3 Gbps Pulse sequencer UI feed (composited as a display layer)

Wide mode — and the wide-mode-only extensions (Xcond predication, wider immediates, indexed loads via 0x7F escape) — runs off the 36-bit SRAM bus; software need not special-case the model.


DeMon — System Supervisor (Raspberry Pi CM4 / CM5)

DeMon is the glue — it boots, watches, bridges, displays the boot UI, and provides connectivity.

DeMon is now built around a Raspberry Pi Compute Module — a CM5 lite (quad-core ARM: Cortex-A72 on CM4, A76 on CM5), 1–8 GB RAM, with a VideoCore GPU — paired with an ESP32-C5 (Wi-Fi 6, Bluetooth 5.3, Thread, Zigbee) for wireless. AntOS runs on the CM, on a real Linux underneath, not on FireStorm, so the OS keeps running even when the FPGA bitstream is reloaded (a personality cartridge swap, for example). The VideoCore GPU also runs AntOS's ImGui UI on stock GLES — no software rasterisation — so the FPGA's primitive-render accelerator is no longer needed.

  • Programs the FireStorm FPGA (bitstream, flash, hardware debug across the whole Ant64)
  • 2× HDMI → FireStorm — HDMI0 carries the 720p ImGui over-plane and HDMI1 carries the under-plane video; CM↔FPGA data uses PCIe
  • PCIe ×1 → FireStorm — bidirectional comms to the FPGA's PCIe / SerDes hard IP (register + data return path)
  • MIPI DSI → 4″ keyboard touch TFT (local UI surface, right of the keyboard) — always live, independent of FPGA state
  • Triple SID engine (L/C/R, 9 SID voices) and SAM speech synthesizer (formant TTS) — run in software on the CM; system sounds, FX, SID-file playback, voice prompts, accessibility, dialogue; streamed to FireStorm over HDMI / PCIe
  • SPI master → Pulse, cartridge, keyboard TFT (bidirectional peer link to Pulse)
  • Phreak wireless subsystem — WiFi / BT / Thread / Zigbee via ESP32-C5 · optional LoRa Plus (LR2021 / Wio-LR2021) · optional GPS (NEO-M10)
  • Machine identity — ATECC608C secure element (unique, verifiable serial) · RTC MCP79410 with CR2450 backup
  • Watchdog · hardware debug · USB host (keyboard, mouse)
  • Storage — internal HS USB hub: DBFS master (D:) + shadow (D!:) + internal general drive (B:) + external memory stick (E:) · external SD card slot (A:) · cartridge (C:, Ant64 only)

The CM drives the keyboard touch TFT over MIPI directly, so DeMon can show a boot UI before FireStorm is even loaded — recovery screens, splash images, error messages — on that always-live surface, while the main display (FPGA-driven) picks up the CM's HDMI overlay once FireStorm is running.

More about DeMon »


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 built on an ESP32-P4 SoC, 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. Pulse runs a dedicated real-time RTOS — fixed tasks, no user scripting — which lets it act as the higher-throughput, lower-jitter data pump to FireStorm — thanks to having no OS load to time-slice against, not a wider bus (Pulse uses an OPI register window; the CM5-based DeMon connects over PCIe) — where the script-running DeMon is the busier general-purpose host.

  • MIDI — DIN In/Out/Thru (Ant64C, via UART optoisolators; MIDI 1.0) + USB MIDI 2.0 (host port + device port) + 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/tilemap layer descriptions, rendered by FireStorm)
  • OPI → FireStorm (chipset register window; small-packet path parallel to MIPI)
  • 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)

More about Pulse »


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

Heavy Compute — No Separate Accelerator

Earlier designs added a Raspberry Pi Zero 2W on the FPGA's expansion header as an optional accelerator. That's retired: DeMon is now itself a quad-core Raspberry Pi CM5, so the application-class CPU this slot was meant to add is already at the centre of the system, and the FPGA's high-speed links are committed to it (PCIe + 2× HDMI).

Heavy work now runs where the silicon already is:

  • On DeMon (the CM) — emulation cores, codec work, software audio plugins, Linux services, and larger AI / DSP / ML inference (quad ARM + NEON + VideoCore GPU).
  • On the FPGA's on-die A25 hard core — an 800 MHz RISC-V coprocessor, present under any image, for latency-sensitive kernels.
  • Via Xaccel — FireStorm handing compute kernels to the A25 (over AXI) or to the CM (over PCIe), with results returned through the register scoreboard.

Small AI / DSP work also runs on Pulse's ESP32-P4 PIE extensions. None of it needs a separate board — Ant64 boots and runs with the compute it already has.


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

Three display roles

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
Supervisor UI feeds DeMon's ImGui overlay (720p, via HDMI from the CM) + Pulse's sequencer UI (MIPI), composited as layers on the main display
Keyboard touchscreen DeMon-driven (MIPI DSI), 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 All models (built into the CM5)
BT 5.3 · Thread · Zigbee Via ESP32-C5
Gossip P2P mesh AntOS built-in
TCP/IP debug server AntOS built-in
LoRa Optional (LR2021 / Wio-LR2021)

Storage & I/O

  • Internal DBFS drive (D:) + shadow drive (D!:) + general drive (HS USB hub via DeMon) · external SD card slot · external USB memory-stick port
  • Cartridge port (30-pin)
  • USB keyboard / mouse
  • 4× 3.5mm trigger / CV inputs

Interconnects

Bus Used For
PCIe ×1 FireStorm ↔ DeMon (CM5) — bidirectional comms (register + data), incl. FireStorm → DeMon return
HDMI (×2) DeMon (CM5) → FireStorm — HDMI0 over-plane + HDMI1 under-plane video
OPI FireStorm ↔ Pulse — chip register window (small-packet path)
MIPI 2-lane Pulse (ESP32-P4) → FireStorm — sequencer UI overlay + bulk data
OPI (8-bit SPI) FireStorm → Pulse — mixer readback, telemetry, audio/data return (+ Tempest interrupt)
MIPI DSI DeMon (CM5) → keyboard touch TFT
FPGA config / debug DeMon (CM5) → FireStorm — bitstream, flash, hardware debug
SPI bidirectional DeMon ↔ Pulse (master + slave each side — peer command/data) · DeMon ↔ cart
Hi-speed UART DeMon ↔ Pulse

Software Stack

Where the system runs

+--------------------------------------------------+
|  User app  (C++ / Luau / Dear ImGui)             |
|  Music workstation · games · demos · tools       |
+--------------------------------------------------+
|  AntOS (on DeMon/CM4-5) · Linux · 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 (RPi CM5 + ESP32-C5) · Pulse (ESP32-P4)|
+--------------------------------------------------+

AntOS runs on DeMon (the CM5 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). DeMon and FireStorm communicate over the CM's PCIe link and HDMI overlay; Pulse reaches FireStorm over its own OPI register window and MIPI feed. 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 GW5AST-138 GoWin GW5AST-138 GoWin GW5AST-138
FireStorm EE RV64GC + extensions + 32-bit-pair dual-issue 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) 800 MHz, 32-bit (debug / monitor)
DDR3 1.125GB→4.5GB, 72-bit (7.2 GB/s) 2.25GB→4.5GB, 72-bit (7.2 GB/s) 4.5GB, 72-bit (7.2 GB/s)
Wide-mode SRAM 1M × 36-bit (~4.5MB) 1M × 36-bit (~4.5MB) 1M × 36-bit (~4.5MB)
Supervisor DeMon (RPi CM5 + ESP32-C5) DeMon (RPi CM5 + ESP32-C5) DeMon (RPi CM5 + ESP32-C5)
Music/control Pulse (ESP32-P4 + 32MB PSRAM) Pulse (ESP32-P4 + 32MB PSRAM) Pulse (ESP32-P4 + 32MB PSRAM)
WiFi 2.4 + 5 GHz (Wi-Fi 6) 2.4 + 5 GHz (Wi-Fi 6) 2.4 + 5 GHz (Wi-Fi 6)
Ethernet Gigabit Gigabit 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

Important: The Ant64 family of home computers are at early design/prototype stage, everything you see here is subject to change.