MiSTer FPGA
Úvod
Minulý rok som úplne náhodnou a nie úplne premyslenou kúpou zanedbaného Atari 600XL prišiel k novému koníčku z ktorého vyrástol poriadny kôň menom ATARI. Postupne som začal objavovať ako vyzerá svet Atari počítačov po roku 2017. Keďže môj kontakt s 8 bitmi sa prerušil v roku 1990 prechodom na PC mal som/mám čo doháňať. Obzvlášť 16bitové modely Atari boli pre mňa terra incognita. Keďže som nechcel zbrklo kúpiť nejaké ST a potom ho resuscituovať, prirodzene prišla reč na emulátory, v ktorých by sa platforma dala ošahať/preklikať. Softvérová emulácia či už na PC alebo Raspberry Pi ma nikdy až tak nebrala. Ničmenej som objavil, že existujú emulátory na báze programovateľného hradlového poľa (FPGA) a to ma zaujalo. Takáto emulácia vlastne ani emuláciou nieje, ide o re-implementovanie pôvodného hardvéru alebo jeho funkčnej interpretácie do FPGA čipu. Tým sa dá dosiahnuť vernejšie napodobnenie danej platformy, čo sa prejaví napríklad pri demách, ktoré sú citlivejšie na časovanie a synchronizáciu vizuálu a audia.
MIST a MiSTer
Ako prvý som objavil projekt MIST od Lothareka a spol. Po pozretí všetkých videí a wiki som si MIST pridal na wishlist. Po niekoľkých mesiacoch som sa k MISTu o5 vrátil a v rámci googlenia som objavil projekt MiSTer. MiSTer je tiež open source projekt ktorý vyvíja chlapík menom sorgelig, ktorý je aj autorom niekoľkých jadier pre MIST (napríklad ZX Spectrum, Sam Coupe, ruské počítače Vector-06C, BK0011M a iné). Na rozdiel od MISTu, ktorý je postavený na proprietárnom hardvéri je MiSTer postavený na vývojovej doske ku ktorej je možné/nutné pripojiť prídavné dosky. Niečo ako Raspbery Pi alebo Arduino s rozširujúcimi doskami – schield-mi. MiSTer má podľa mňa viac možností na rozširovanie periférií ale aj lepší potenciál na vývoj jadier. Ale na to aby fungoval treba trocha bastliť a to je presne to, kvôli čomu som sa rozhodol ísť touto cestou. Je mi jasné, že práve toto nemusí každému vyhovovať. V tomto prípade kúpu MISTu určite nebudete ľutovať. Pre mňa mal MiSTer ale jeden háčik, a to, že práve Atari ST zatiaľ nepatrí medzi podporované jadrá. Neodradilo ma to, už som sa namotal.
Takže, čo vlastne je ten MiSTer?
Nebudem dopodrobna rozoberať technickú špecifikáciu. Uvediem akurát niekoľko rozdielov oproti MISTu ktoré mi prídu doležité. MiSTer je postavený na bežne dostupnej vývojovej doske Terasic DE10-Nano, ktorá má SoC Altera Cyclone V FPGA s integrovaným dvojjadrovým ARM Cortex-A9 procesorom taktovaným na 800MHz a zdieľanou pamäťou DDR3 1GB medzi FPGA a ARMom. Takýto hardvér vďaka väčšiemu FPGA umožňuje implementovť komplexnejšie systémy, pričom časť funkcionality sa dá “outsourceovať” na ARM (na ktorom beží Linux) – takzvaný hybridný emulátor. DE10-Nano poskytuje aj sieťovú konektivitu – ethernet / WiFi, HDMI video výstup a USB OTG. MiSTer tiež škáluje originálne video na štandardné HDMI rozlíšenie takže nieje nutné mať monitor s VGA vstupom. Ničmenej VGA výstup s originálnym rozlíšením je k dispozícii na rozširujúcej doske. Rozširujúcich dosiek má MiSTer hneď niekoľko. Nebudete ich potrebovať všetky, s jedinou najdôležitejšou SDRAM doskou budete môcť spústiť vačsinu jadier.
- SDRAM doska (odporúčaná) je malý plošák s 32MB SDRAM ktorý sa pripája na GPIO0 header DE10-Nano a slúži ako pamäť pre väčšinu jadier.
- I/O doska (voliteľná) sa pripája na GPIO1 header DE10-Nano. Na doske je už spomínaný VGA konektor, analógový a digitálny optický výstup, tlačítka (on/off), LEDky, miesto pre ventilátor a slot pre sekundárnu SD kartu, ktorá je potrebná pre niekoľko jadier (konkrétne MSX, Atari 800/5200 a Sharp X68000). SD kartu je ale možné pripojiť aj bez I/O dosky, k tomu sa ešte dostaneme.
- RTC doska (voliteľná) sa pripája na LTC konektor a poskytuje hodiny reálneho času, ktoré možete mať aj bez RTC dosky ak máte MiSTer pripojený k internetu cez ethernet. Dosku podporujú len dve jadrá.
- USB hub doska (voliteľná) pridáva 7 portový USB hub umiestnený pod základnou doskou DE10-Nano. Táto doska napráva nevýhodu DE10-Nano ktorou je jediný micro USB OTG port na ktorý chceme pripojiť periférie ako klávesnica, myš a joysticky. Tu je aj ďalší rozdiel oproti MISTu ku ktorému môžete pripojit retro joysticky s DB9 konektorom.
Schémy a výrobné podklady (gerber files) na všetky dosky sú voľne stiahnuteľné a sú považované ako DIY (urob si sám). Môžete si ich dať vyrobiť vo vlastnej réžii, predávať alebo ich kúpiť od niekoho na fórach. To isté platí aj podkladoch pre 3D tlač case-u.
Ako začať?
Podľa návodu budeme potrebovať tri veci: základnú dosku DE10-Nano, USB hub a rozširujúce dosky.
Základná doska Terasic DE10-Nano
Základnú vývojovú dosku možno kúpiť priamo od výrobcu (Terasic) v Mouser-i alebo v Digi-Key. Ja som sa rozhodol pre Mouser. Zároveň som si ujasnil, že budem potrebovať SDRAM rozširujúcu dosku takže som okrem DE10-Nano (114,92EUR) do košíka pridal aj 2 kusy (pre istotu) pamäte AS4C16M16SA-6TCN (5,72EUR) takže spolu s DPH ma to stálo 144,77EUR (poštovné bolo zadarmo). Tu je samozrejme namieste sa zamyslieť, či toto celé nieje náhodou nezmysel keďže MIST od Lothareka stojí 212,74EUR a my sme už takmer v ¾ ceny MISTu ako správne tušíte ešte sme neskončili. Ale kedže “Cesta je cieľ“ ideme ďalej. SoC Altera pri záťaži celkom slušne hreje takže odprúčam heatsink aj ventilátor. Použil som 12V ventilátor z GME (2.36EUR) o rozmeroch 40x40x10mm ktorý má rozbehové napätie 4,5V a zapojil som ho na 5V (pin 11) a GND (pin 12) GPIO1 konektora (viď obrázok sapojenie sekundárnej SD karty nižšie). Case som si vylačil na 3D tlačiarni tento, pretože je najmenší a má aj úchytky pre ventilátor.
Rozširujúce doska SDRAM
Pre začiatok som sa rozhodol pre horizontálnu vonkajšiu montáž univerzálnej SDRAM dosky (pretože neblokuje Arduino piny na DE10-Nano a umožnuje vyššie pracovné frekvencie). Plošný spoj som dal vyrobiť v PCBWay jednak preto, že na stránke je linka na one-click-order ale hlavne preto, že s PCBWay mám dlhodobo dobrú skúsenosť. Výroba PCB aj s poštovným ma stála 12USD. Z Aliexpress som si objednal konektor za 4,64USD (z nejakého dôvodu som mal free shipping) a 100nF kondenzátory som mal doma. Po mesiaci čakania na plošáky a konektory som konečne mohol dosku osadiť a otestovať. Najvyššiu frekvenciu 167MHz sa mi nepodarilo dosiahnuť. Na 160Mhz ale už test bežal bez chýb viac ako hodinu. Tu nájdete zoznam jadier ktoré používajú SDRAM a aj ich požiadavky na frekvenciu.
USB zariadenia
Ako som už spomínal DE10-Nano má obmedzenie v podobe jedného micro USB OTG portu. To znamená, že potrebujeme USB OTG hub (ideálne napájaný) na pripojenie klávesnice, myši a joystickov. Ideálne riešenie predstavuje rozširujúca USB hub doska. Pretože micro USB konektor by nemusel ustáť časté používanie. Ja som zatiaľ napriek tomuto odporúčaniu použil jednoduchý dvojportový micro USB hub (1,97USD) z Ebayu. Do jedného portu pripájam klávesnico-myš Logitech K400 a do druhého gamepad Defender OMEGA. MiSTer umožňuje namapovať ovládanie jednotlivých jadier ale aj samotného GUI na joystick, takže v mnohých prípadoch sa zaobídete aj bez klávesnice.
Inštalácia
Spočíva v zinicializovaní primárnej SD karty, odporúčam pri tom postupovať podľa návodu. Dobrá správa je, že MiSTer nieje “picky” na typ/výrobcu/triedu SD karty, mala by stačiť hocijaká micro SD karta väčšia ako 2GB. Na SD kartu budete postupne nahrávať jadrá (cores) jednotlivých zariadení v podobe *.rbf súborov ktoré najdete v adresári release na stránke príslušného jadra na githube. Pripojením MiSTeru do siete, či už cez etehernet alebo WiFi budete môcť updatovať firware aj bez vyberania SD karty.
Sekundárna SD karta
Ako som už spomínal, niektoré jadrá (medzi nim aj naše beloved Atari) potrebujú sekundárnu SD kartu pripojenú na SPI. Slot na micro SD kartu je možné pripojiť priamo na SPI piny GPIO1 konektora. Micro SD slot som kúpil na ebayi (1,97USD) a pripojil som ho nasledovne.
- 3V pin 29 -> VD
- GND pin 30 -> VS
- GPIO_1[13] pin 16 -> D0
- GPIO_1[11] pin 14 -> CLK
- GPIO_1[7] pin 8 -> CMD
- GPIO_1[5] pin 6 -> D3
Pre uchytenie SD slotu o case som zmodifikoval a vytlačil lištu napájania.
V prípade jadier Atari800/Atari5200 kartu naformátujte na FAT16 a rozbaľte na ňu súbor sdcard.zip, ktorý nájdete v adresári release.
Záver
Vzľadom na to, že autor, sorgelig, začal projekt vyvíjať pred 11timi mesiacmi, konkrétne 11teho júna 2017, tak teraz, v máji 2018 MiSTer podporuje úctyhodných 26 jadier počítačov/herných konzol a 50 akrád. Čo si podľa mňa zaslúži veľký rešpekt a aj podporu. Nechcem to porovnávať s MISTom, pretože sú to rozdielne prístupy. MIST je po hardvérovej stránke finálny produkt, MiSTer je otvorená platforma na spôsob napr. Raspberry Pi. Obstarávacie náklady sú veľmi podobné. Verím, že komunita užívateľov ale aj autorov jadier a tvorcov prídavného hardvéru sa bude naďalej rozrastať. Bolo by fajn si na MiSTeri jedného dňa pustiť napríklad niektorý československý počítač ako napríklad PMD85, Didaktiky alebo Ondru ale aj Atari ST kvôli ktorému to vlastne celé pre mňa začalo. Dovtedy, „Thank you MiSTer!“
vyborny clanok, Peto 🙂
Bohuzel, ze ST core pro MISTer porad neni a asi jen tak nebude. Jenze Sorgelig tvrdi, ze ST platfoma je na nic, ze se mu nelibi, tak ji delat nebude.
Ja si udelal radost a koupil z asi posledni serie MIST. ST core funguje, ale neni to zase takova hitparada. Co se tyka puvodniho ST, je to docela verne, ale STE pokulhava. Na druhou stranu umi specialni mody s monochromem 1280×960 a s CPU 68020 coz neni spatne a uz se s tim da i neco delat.
Prekvapilo me, ze Atari 8bit core je udelany velice pekne a umi dost veci. Jenom skoda, ze nepodporuje Multijoy…
Taky je skoda ze vyvoj ST core uz neni tak aktivni, chtelo by to tam dost veci dodelat/opravit.
Fuha, to som nevedel, ze ja na tom ST jadro az tak zle. Nikdy som sice nebol nadsencom tychto FPGA rieseni, ale ako „zalozne“ riesenie ma to lakalo. No som rad, ze som za to nakoniec nevyflakol peniaze. To uz potom asi radsej podporit projekty ako Suska, ale tam ten vyvoj ide strasne pomaly a ta cena, no, tiez skoda reci.
Skoda toho ST jadra, ze sa uz ani pre mist nevyvija. Ja som nakoniec ST vyriesil presne tak ako som nechcel 😉 kupil som pre istotu 2 x 1040 STF a potom som ich deratizoval a opravoval.