Skip to content

Specifications

CPU

  • 32 Bit
  • Fully custom instruction set (called B32P2)
  • 6 Stage pipeline
  • 16 Registers (15 GP and R0 is always 0)
  • L1i and L1d cache (direct mapped, 128 cache lines of 8 instructions per line)
    • Cache controller with write-back policy and dirty bit tracking, acting as arbiter for external DRAM
  • 32 Bit program counter for 4 GiW (or 16 GiB) of addressable memory
  • Shared instruction and data memory
  • 50 MHz, with some memory related components running at 100 MHz
  • Extendable amount of hardware interrupts

GPU

  • 640x480 HDMI output using TMDS
  • Two tile based planes of 40x25 visible characters at 8x8 pixels (320x200 pixels). This is mainly for text and sprites
    • Background plane with horizontal scrolling support (64x25 tiles in memory)
    • Window plane
  • One bitmap plane
    • Bitmap resolution of 320x240 at 8bits per pixel (r3g3b2 color depth)
  • All video memory is dual port, meaning that the CPU can write at any time during the frame rendering process
  • Interrupts the CPU after each frame drawn to allow for synchronization

Memory

  • 112 MiW (448 MiB) DDR3 SDRAM available through L1 cache
  • 1 KiW (4 KiB) single cycle ROM
  • ~ 100 KiB single cycle dual port dual clock VRAM in various data widths
  • 128 entries of CPU hardware stack
  • SPI Flash and Micro SD Card available in software through SPI hardware interface

I/O

Memory mapped I/O via Memory Unit that presents the following I/O:

  • 1 UART interface (for USB - UART converter)
  • 6 SPI interfaces (2x SPI Flash, 2x SPI USB Host, 1x ENC28J60, 1x Micro SD)
  • 8 GPIO pins
  • 3 One shot timers
  • Registers for boot mode, FPGA temp, Microseconds

Performance

Note

I still need to evaluate performance once more software is up and running

Hopefully comparable if not faster than an Intel 486 (SX as there is no Floating Point support yet)