When linking to these pages, please use the URL: www.iki.fi/cube/ - it's permanent.
FPGA

I've done software for a long time, ranging from high level implementations of rendering systems, all the way down to GPU microcode but I've never really done any hardware design or implementation.

So I thought it would be a fun experiment to design and implement my own 8-bit computer system on an FPGA, starting with the CPU, and adding the graphics and audio subsystems. Along the way I added some other useful subsystems and here's a design what I came up with.

CPU

  • 8-bit CISC processor running @ 12.5MHz
  • 8 general purpose registers
  • 5 special registers
  • 858 opcodes
  • Instruction set similar to Zilog Z80 and NEC 70K/0


Memory

  • 64KB dual port RAM shared by the CPU and graphics unit
  • 7 single port 16KB RAM banks accesible only by the CPU
  • 16KB dedicated palette RAM
  • DMA engine
  • SD card controller


Graphics

  • Maximum resolution: 320x240 @ 59.18560Hz
  • Palette: 16 out of 4096 colors
  • Dual playfield
  • 7 graphics modes
  • 8 32x32 sprites
  • Horizontal scrolling
  • Line parameter table
  • VBL, HBL and raster line interrupts


Audio

  • 4 stereo audio channels with antialiasing oscillators using polyBLEP and polyBLAMP
  • ADSR and volume control per channel
  • 5 waveforms: sawtooth, pulse, triangle, sine, LFSR noise
  • 12dB lowpass/highpass/bandpass/bandstop filter per channel
  • 2 delay units with 6dB lowpass filters
  • Reverb unit


Aggression - Project SC Intro .mp4
project_sc_intro

Watch in YouTube

Release date: August 2024