Zo bouw je een retrocomputer
Ben je een liefhebber van oude computersystemen, dan heb je al gemerkt dat de apparaten steeds schaarser en duurder worden. Voor een originele 80486, MSX, Amiga, Atari ST of Amstrad moet je diep in de buidel tasten … áls je er al een tegenkomt. Voor velen zit er dan ook niets anders op dan met emulators of virtuele machines aan de slag te gaan. Dat geeft helaas niet altijd het gewenste resultaat. Gelukkig is er een alternatief: zelf bouwen met een speciale chip en losse onderdelen.
Spreekt het onderwerp retrocomputing of retrogames je aan, dan heb je de FPGA-chip (field-programmable gate array) wellicht al eens voorbij zien komen. De FPGA wordt vaak aangeprezen als een ‘wonderchip’ die totale nauwkeurigheid biedt en geen vertraging heeft zoals een emulator. Verschillende commerciële bedrijven, zoals www.analogue.co, gebruiken de FPGA als hart van hun spelsystemen en hebben daar groot succes mee.
Dankzij de betaalbaarheid neemt de populariteit bij hobbyisten die er eigen opensource-projecten mee starten dan ook snel toe. Een van die opensource-projecten is het MiSTer-project dat op een gebruiksvriendelijke manier verschillende oude computers via de FPGA-chip van de Terasic DE10-Nano-development-kit opnieuw tot leven brengt. Op dit moment wordt gewerkt aan verschillende FPGA-implementaties zoals een 80486-pc, NeoGeo, Game Boy en Sega Mega CD. Het aantal projecten neemt snel toe.
01 Wat is een FPGA?
De beste manier om een FPGA te omschrijven, is dat het een flexibele chip is die je naar wens kunt (her)programmeren. De moderne FPGA bestaat uit een groot aantal programmeerbare logische schakelingen die samen een functie kunnen uitvoeren. Je kunt de chip zodanig programmeren dat hij precies doet wat je wilt en volledig geoptimaliseerd is voor de functie waarvoor hij geprogrammeerd is. Het mooie is dat de FPGA ook weer opnieuw geprogrammeerd kan worden om een nieuwe functie uit te voeren. De programmeerbare infrastructuur kent bijna geen grenzen, een FPGA kan worden gebruikt om elke gewenste logische functie of verzameling functies te implementeren, zelfs meerdere processorkernen. De FPGA is vooral bedoeld voor de professionele doeleinden waarbij data-intensieve toepassingen veel efficiënter verwerkt moeten worden. Maar een FPGA-chip kan dus ook gebruikt worden om zich voor te doen als een oude retromachine.
Zo maak je van je pc een retrogame-emulator
02 Emulatie en her-implementatie
Emuleren is een uiterst inefficiënte manier om hardware te simuleren. Voor een vrij simpele hardware-emulatie is naar verhouding een beest van een processor nodig. Ook worden in de meeste gevallen niet alle instructies goed geëmuleerd, zodat de software uiteindelijk niet werkt zoals het op de originele hardware deed. Daarbij hebben vele aspecten invloed op de prestaties. Is het systeem even druk met een ander proces, dan is dat vrijwel direct te merken in de emulatie. Bij het spelen een spelletje kan dat ongewenste resultaten geven. Denk aan een platformspel dat de ene keer een tiende van een seconde eerder input vraagt om te springen en een andere keer een tiende later. De ene keer tuimel je de afgrond in, de andere keer haal je net het einde niet.
Een relatief eenvoudige FPGA kan dit trucje veel efficiënter uitvoeren, omdat de originele elektronische circuits op de FPGA worden gerecreëerd en de instructies niet softwarematig vertaalt hoeven worden. Deze werkwijze geeft nagenoeg dezelfde ervaring als de originele hardware, omdat de instructies uitgevoerd worden zoals dat bij het origineel ook gebeurde. Bij sommige implementaties gaat het zelfs zo ver dat bepaalde vertragingen, die op de originele hardware optreden, ook optreden bij de emulatie via de FPGA. Bij gebruik van een FPGA spreekt de community liever niet over emulatie, maar over het ‘her-implementeren’ van de originele hardware.
©PXimport
03 Van Minimig tot MiSTer
De eerste stappen om een FPGA te gebruiken voor het recreëren van een retrocomputer werden gezet in januari 2005. Toen kwam de Nederlandse elektrotechnisch ingenieur Dennis van Weeren met het concept om een nieuwe Amiga 500 met de FPGA als basis te ontwikkelen: de Minimig of Mini Amiga. Waarschijnlijk heeft dit project anderen geïnspireerd en zijn hier weer verschillende ideeën uit voortgevloeid. Een daarvan is de MiST FPGA-computer, ontworpen rondom de Intel Cyclone III FPGA en bedoeld om klassieke 16bit-computers zoals de Amiga en Atari ST op te implementeren. De vrij actieve community heeft verschillende zogenoemde cores voor het systeem ontwikkeld, zoals een NES (Nintendo Entertainment System), Apple+ II en Commodore 64. Maar de Cyclone III liep tegen zijn limiet. Veel meer dan deze 8- en 16bit-systemen pasten niet in deze FPGA, er was een grotere FPGA nodig.
De Intel Altera Cyclone III FPGA Development Kit kostte destijds ruim 1.200 dollar en was daarom niet interessant om als basis te gebruiken voor de MiST FPGA-computer. De Terasic DE10-Nano Development Kit met Cyclone V FPGA heeft een veel lager prijskaartje van ongeveer 110 euro. Deze development kit werd de basis voor het MiSTer-project, dat opgestart is door Alexey Melnikov. Deze grotere FPGA maakt veel meer mogelijk, zo kan er een 80486-pc op geïmplementeerd worden. Verder zijn er cores van een Sega Mega CD, GameBoy Advance en NeoGeo AES.
©PXimport
04 MiSTer-uitbreidingen
Een van de uitbreidingen voor het MiSTer-project is het MiSTer IO Board. Dit uitbreidingsbord is ook ontworpen Alexey Melnikov (de projectleider van het MiSTer-project). Het ontwerp is vrij verkrijgbaar voor iedereen. Het MiSTer IO Board is een optionele uitbreiding die boven op de Terasic DE10-Nano-soc wordt aangesloten. Het voegt functies toe aan het MiSTer-platform, zoals een VGA-connector voor analoge videobeelden, 3,5mm-audiopoort, drie knoppen, drie statusleds, een tweede slot voor een micro-sd-kaart, een fan voor koeling en een gebruikerspoort in de vorm van een usb-connector (dit is geen normale usb-poort, maar een soort seriële poort).
Het IO Board is niet de populairste uitbreidingsmodule, dat is de MiSTer SDRAM-geheugenmodule. Het ddr3-geheugen dat op de Terasic DE10-Nano zit is te snel voor de meeste cores. Het heeft een te hoge latentie en is niet geschikt voor de timings die nodig zijn voor het edo-dram van vroeger. Er zijn drie varianten van de MiSTer SDRAM-geheugenmodule met 32, 64 en 128 MB geheugen. De SDRAM-geheugenmodule met 128 MB geheugen is nodig voor de nieuwste cores zoals de NeoGeo en om Game Boy Advance-roms op te laden. Een volledig overzicht van de uitbreidingen en de cores vind je op de wiki-pagina.
©PXimport
05 Waar te koop?
MiSTer is opensource en vrij toegankelijk voor iedereen. Het wordt door de community in leven gehouden. De aanbieders van onderdelen hebben deze vaak zelf in elkaar gezet. Veel van deze aanbieders zijn gevestigd in de VS. Maar ook op Chinese websites als AliExpress duiken steeds vaker onderdelen op voor het MiSTer-project. Wij hebben onderdelen van de webshop www.misterfpga.co.uk gebruikt. Deze webshop is gevestigd in het Verenigd Koninkrijk en biedt een brede keuze aan uitbreidingen. De Terasic DE10-Nano Development Kit is bij verschillende webshops te vinden. Wij kochten ons exemplaar via www.digikey.com. Op het forum www.misterfpga.org vind je meer informatie over het project en de verschillende uitbreidingen.
©PXimport
06 Zelf aan de slag
Om met MiSTer aan de slag te gaan, hoef je natuurlijk niet direct álle onderdelen aan te schaffen. De meest belangrijke onderdelen zijn de Terasic DE10-Nano, een koelelement en een MiSTer SDRAM-geheugenmodule. Het IO Board, de usb-hub en de behuizing kunnen ook op een later moment worden toegevoegd. Wel heb je een omvormer nodig van micro-usb-b (mannetje) naar usb-a (vrouwtje) nodig om het toetsenbord op aan te sluiten. Eventueel kun je ook een eigen usb-hub aansluiten op de usb-otg-connector.