Xosera is an FPGA based video adapter designed with the rosco_m68k retro computer in mind (and adaptable to similar systems).

Currently the design is supported for the iCE40UP5K FPGA which is fully supported by the open Yosys/NextPNR tools. Development is being done on both the iCEBreaker FPGA board as well as the Upduino 3.0 board (or Upduino 2.x with external oscillator).

Planned Xosera features:

  • VGA or HDMI (DVI) output at 640x480@60Hz or 848x480@60Hz (16:9 widescreen 480p) and perhaps 800x600@60Hz
  • 16 or 256 color palette out of 4096 colors (12-bit RGB)
  • 128KB of embedded video RAM
  • Two overlayed "planes" of video
  • Character tile based modes with color attribute byte
  • Up to 8x16 character size
  • 8KB of font RAM
  • Smooth horizontal and vertical scrolling
  • Bit-mapped 16 and 256 color graphics modes
  • "Blitter" to accelerate copy and fill operations
  • At least one "cursor" sprite (and likely more)
  • Register based interface with auto-increment (as fast as direct mapped)
  • SPI interface to registers for development from PC via FTDI (or direct GPIO use)

Current Xosera features:

  • VGA and HDMI (DVI) video generation (at resolution fixed at config time)
  • 8x16 text with 4-bit foreground/background color per character
  • Draws "test image" with "proto-blitter"
  • SPI target interface with test circuit that allows redefinition of font characters on the fly using C++ host_spi FTDI utility.
  • GNU Make based build using the pre-built FPGA-Toolchain binaries and tested on Linux (Ubuntu 20.04), Windows 10 (Cygwin64) and MacOS.
  • Fast Verilator simulation including SPI interface and using SDL2 for BMP screenshot of each video frame
  • Icarus Verilog simulation (SPI test bench coming)