Home > News & Updates > Electronics News Updates > Consolite – a Tiny Game Console on an FPGA

Consolite – a Tiny Game Console on an FPGA

Summary of Consolite – a Tiny Game Console on an FPGA


Consolite is a hobbyist game console project implemented on an FPGA, featuring a custom C-to-assembly compiler, assembler, and emulator. This article details the hardware stack using a Mimas V2 board to run a multiplayer Tron game with SNES controller support. The system includes 64 KiB of main memory, 48 KiB of video memory, VGA output scaled to 1024x768, and plans for future audio capabilities.

Parts used in the Consolite:

  • Mimas V2 development board
  • Spartan 6 FPGA
  • 64 MiB LPDDR RAM
  • VGA output connector
  • 3.5mm audio jack
  • microSD card slot
  • Mini USB cable
  • 7-segment display
  • Status LEDs
  • Buttons
  • Switches
  • SNES controller

For my latest project, I am diving back into Verilog to create the hardware side of Consolite. For those who don’t know, Consolite is the name I’ve given to my design of a tiny hobbyist game console and associated software toolchain. In my previous posts, I demoed a compiler that translates from a flavor of C to Consolite Assembly, an assembler that translates from Consolite Assembly to binary files, and an emulator that runs the resulting binaries.

In order to “complete the stack” in some sense, the last thing to do was to implement the console on an FPGA. I also wrote a multiplayer Tron light cycle game to check my work, which turned out to be a lot of fun especially since I ended up adding support for multiple SNES controllers. At the end of this post I’ve added a video of the system in action, as well as an embedded emulator so that you can play Tron in your browser!

This has been a long, extremely interesting project for me, and I may go into more technical detail about components such as the VGA display or SD card reader in future posts. However, this will just be an overview of the capabilities of Consolite, the hardware I used to achieve those capabilities, and of course a demo of the final product.

Major Hardware Modules

For this project, I used the Mimas V2 development board with Spartan 6 FPGA (pictured in Figure 1 below). The board only cost $50, which I consider a great deal given how much functionality it offers.

Figure 1. The Mimas V2 development board running Consolite, with relevant components labeled for clarity: (1) VGA output, (2) audio output, (3) microSD card, (4) LPDDR RAM, (5) Spartan 6 FPGA, (6) mini USB cable for power, (7) 7-segment display, (8) status LEDs, (9) buttons, (10) switches, (11) SNES controller connected to general purpose input/output (GPIO) ports.

Main Memory

The Mimas V2 has 64 MiB of on-board RAM, which is more than enough to store the 64 KiB of main memory and 48 KiB of video memory for a Consolite program. The RAM is (4) in Figure 1 above. A future 32-bit version of Consolite may take advantage of all 64 MiB of RAM, but for now the 16-bit addresses restrict it to 2^16 bytes = 64 KiB.

Video Output

The VGA output, (1) in Figure 1 above, allows you to set up any TV or monitor as a display for Consolite as long as it supports 1024×768@60Hz VGA. The VGA controller in the FPGA reads pixels from the 48 KiB of video memory and outputs a 256×192 pixel, 8-bit color screen (it is scaled up to fill the 1024×768 VGA output).

Audio

The 3.5mm audio jack, (2) in Figure 1 above, is not yet in use, but I plan on adding audio instructions in the future so that games can have music and sound effects.

Read more: Consolite – a Tiny Game Console on an FPGA

Quick Solutions to Questions related to Consolite:

  • What is Consolite?
    It is a design for a tiny hobbyist game console and associated software toolchain.
  • How does the video output work?
    The VGA controller reads pixels from 48 KiB of video memory and outputs a 256x192 pixel screen scaled up to 1024x768.
  • Can I play games on any monitor?
    Yes, as long as it supports 1024x768@60Hz VGA.
  • Does the system have built-in audio?
    No, the audio jack is not yet in use, though audio instructions are planned for the future.
  • How much main memory does Consolite use?
    The system uses 64 KiB of main memory restricted by 16-bit addresses.
  • What board was used for the hardware implementation?
    The author used the Mimas V2 development board with a Spartan 6 FPGA.
  • Is there a demo available online?
    Yes, there is an embedded emulator allowing users to play Tron directly in their browser.
  • What controllers are supported?
    The system supports multiple SNES controllers connected via general purpose input/output ports.
  • What components are labeled in Figure 1?
    Figure 1 labels components including VGA output, audio output, microSD card, LPDDR RAM, and various user interface elements like buttons and switches.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter
Scroll to Top