tinysys: A small computer with two RISC-V CPUs
I have been using and programming computers for about 40 years now, and I’ve been missing the 80s style computers, yet I like the modern day approach to computers and operating systems in general.
So I thought, why not build something that has limited capabilities, but is also able to run binaries generated by modern programming languages, and have modern I/O capabilities, and a small RTOS to drive it?
The result was tinysys, and I’d like to share how it got built.
Before I do that, however, feel free to browse around and/or use all the project files (sample code, SDK, board files, enclosure design) here: https://github.com/ecilasun/tinysys
What is tinysys?
Tinysys is built using a core FPGA board, which houses one Xilinx A7200T and a 256Mbyte DDR3 part. Majority of the actual hardware is on the carrier board designed specifically for the occasion, and houses a stereo audio DAC, a 12bit DVI 1.0 output chip (well it’s actually 24 bits but more on that later), a USB host chip and a ESP32-C6-WROOM-1 module for Bluetooth and USB serial communications. It also has some utility devices implemented on the FPGA fabric such as a DMA, audio/video scan-out devices, a mailbox to talk between the CPUs. All of this is run by a small 56Kbyte ROM image which handles multitasking, user input and simple crash reporting. Of course, add to this an SDCard reader and we’re able to run pretty much anything on this machine.
The dual CPUs do not have any branch prediction or pipelining (apart from some overlap of memory access and fetch/execute), so they’re quite simple. In that regard, this machine is not a raspberry PI (or even ESP32-C6) competitor, and therefore not a strictly ‘modern’ computer. It is what a retro computer would have been if I had anything to say about it.
The machine is built to boot very rapidly and can run an overlay ROM image from the SDCard. This makes it quite easy to replace the OS if you ever happen to get frustrated with it, wish to fix a bug, or make the device run an entirely custom code fit for the application you have in mind.
More to follow
I’ve built this machine in a way that is easy to manufacture, and provided all the hardware documentation, KiCad files and the SOLIDWORKS files for the enclosure. All one needs to add is a QMTECH A7200T core board (484BGA) and after flashing the two devices (ESP and the FPAG) it should ‘just work’
I do not feel like the project would be complete without some documentation and device details, so I’ll be writing up some articles to cover that part soon.
Stay tuned.