The MiSTeryNano FPGA Companion implements support functions for FPGA based retro computing projects like MiSTeryNano project. While the FPGA typically implements the hardware of the retro machine itself the Companion uses a microcontroller to add support for modern peripherals like USB keyboard, mice and SD cards. It also implements an on-screen-display menu to allow the user to configure the retro machine.
The FPGA Companion replaces the MiSTeryNano firmware that was formerly part of the MiSTeryNano project. It is also used by the NanoMig, the NanoMac, the C64Nano, the VIC20Nano, the A2600Nano and the NanoApple2.
While the MiSTeryNano was initially designed with a BL616 MCU as the support MCU the FPGA Companion introduces more flexibility and allows to choose from different MCUs to act as the support MCU. From the FPGAs perspective these behave identical although not all MCUs may support all functions to the same extent and e.g. the ESP32 is rather limited when it comes to USB support. The MCU is communicating via SPI interface to the FPGA.
Currently the FPGA Companion can be used with the following MCUs:
- M0S/BL616 or TANG onboard BL616, see the build instuctions, and
- Raspberry Pi Pico/RP2040, see the build instructions
- ESP32 S2/S3, see the build instructions
The inital version of MiSTeryNano relied on the BL616 as a support MCU. Some shortcomings of that platform caused the code to be ported to other MCUs which then may have their own advantages and disadvantages.
- Pros
- Very powerful Risc-V CPU
- USB 2.0 highspeed host support
- WiFi 6 support
- Bluetooth BLE 5.2 support
- Cons
- Limited SDK support
- USB needs manual update of the CherryUSB stack
- No classic Bluetooth support
- Limited SDK support
- Pros
- Powerful and well-supported SDK
- Widely available and cheap
- Fullspeed USB host support
- Cons
- No built-in bluetooth and WiFi support
- Only available via seperate modules (e.g. on Pico(W))
- No built-in bluetooth and WiFi support
- Pros
- Powerful and well-supported SDK
- Widely available and cheap
- Built-in Bluetooth and WiFi
- Cons
- Very limited USB host support
- Only one device (no hub)
- USB stack complex to use
- Very limited USB host support
You might also want to check out the following related projects:
- MiSTeryNano HDL implementation of the Atari ST home computer
- NanoMig HDL implementation of the Commodore Amiga home computer
- NanoMac HDL implementation of the Apple Macintosh Plus computer
- C64 Nano HDL implementationm of the Commodore C64 home computer
- VIC20 Nano HDL implementation of the Commodore VIC20 home computer
- A2600 Nano HDL implementation of the Atari 2600 game console
- NanoApple2 HDL implementation of the Apple IIe home computer