Další zajímavý (nejen) Speccy klon – ZX Uno

ZX Uno projekt sleduji po očku už poměrně dlouho. Projekt zpočátku šlapal, pak to vypadalo na lehký útlum, ale vývoj šel dopředu a koncem loňského roku opět nabral na obrátkách. Verze 4.1 mi přišla už natolik solidní, že jsem se rozhodl jeden kousek postavit. Paralelně s mým zadáním desek do výroby se rozjela crowdfundingová kampaň, která úspěšně skončila, byť zájem bych čekal větší. Nutno ovšem říci, že velká část komunity mimo Španělska o projektu moc neví. Stránky projektu jsou sice i v Angličtině, ale Fórum, kde je většina informací je převážně ve Španělštině a vyznat tam je celkem výzva. Buď pochválen Google Translate. Nicméně postavené hotové ZX Uno není nic pro mně, já si to prostě musím postavit sám. Chvíli to vypadalo zoufale, ale teď už ZX Uno běhá na mém stole. Moc jsem si s ním ještě nepohrál, takže nějaké “review” čekejte až časem. Teď bych se rád podělil o první  zkušenosti při stavbě pro ty, kteří se rozhodnou jít mojí cestou.

ZXUno_Martin_working   ZXUno_Martin_scr_boot

Součástky celkem nebyly problém, pouze použitou SPI flash pro konfiguraci FPGA jsem našel jen na eBay a u použitého encodéru RGB-PAL/NTSC jsem zase nevydýchal cenový rozdíl velkých prodejců vs. eBay. Docela rozdíl byl i u FPGA, ale tam jsem nechtěl eBay riskovat. Párkrát už jsem narazil a mám podezření, že některé prodávané čipy tohoto typu jsou různé kousky sehnané kdovíjak, v horší kvalitě, mimo toleranci. Prostě chtěl jsem mít na základní část celé konstrukce spoleh. Použité FPGA je celkem solidní, z řady Spartan-6, konkrétně XC6SLX9 v pouzdru TQFP144, což se poměrně dobře pájí. Kromě již zmíněného už konstrukce obsahuje jen 512 kB SRAM, stabilizátory napájení, konektory a samozřejmě nějakou tu bižuterii. Formát desky i rozložení konektorů je silně inspirováno Raspberry Pi, takže při troše “pižlání”, dáte ZX Uno do krabičky pro RasPi.

ZXUno_Martin_top   ZXUno_Martin_bottom

Osazení bylo celkem jednoduché, příjemné tři hodinky práce. Jako obvykle nejvíc trvala SMD drobotina. V konstrukci naštěstí nejsou použité žádné “hnusně prťavé” součástky typu 0402, nejmenší jsou blokovací kondíky 0603, ale většina dalších pasiv je 0805.

SPI flash jsem si předem naprogramoval na programátoru (btw. naprogramoval jsem všech 10 pro všechny majitele desek) a tak jsem čekal, že ZX Uno zapnu a jedeme. Černá obrazovka a svítící i červená LED dioda mně trochu zarazily. I mistr tesař se utne. Tak jsem po sobě všechno několikrát zkontroloval a vše vypadalo OK. Naměřil jsem i nějakou komunikaci z SPI flash do FPGA, ale vypadalo to, že FPGA zůstává nenakonfigurované. Začal jsem tedy více studovat španělské fórum a poměrně brzy jsem našel, že flash komunikuje s FPGA v Quad SPI režimu, kde se nepoužívá /WP a /HOLD a flash posílá data FPGA po čtyřech bitech na takt. Pro tento režim je nutné v konfigurační paměti flash nastavit bit QE na 1. To ovšem ani jeden můj programátor neumí.

No nic, nakrmíme flash přes FPGA. Xilinx IMPACT to umí a přímo s tímto počítá. Může konfiguraci nacpat jednorázově do FPGA nebo přes něj do připojené konfigurační flash. Ovšem ať jsem dělal, co jsem dělal, tak se mi FPGA detekovalo jako neznámý non-Xilinx obvod s ID 0. Mám čínskou kopii Xilinx Platform Cable USB, ale až doteď všude fungovala bez problému. Tak jsem propípal všechny cesty mezi programátorem a FPGA, zkontroloval zkraty a nic. Znovu jsem propájel celé FPGA, i když jsem byl přesvědčený, že v pájení problém není, fakt to šlo pájet moc dobře. Furt nic. Přeinstaloval jsem Xilinx ISE 14.7, kromě Windows 10, které běžně používám, jsem ho nainstaloval i do VMWare s Windows 7. Stále nic. Tak jsem začal podezřívat FPGA, že je prostě vadné. Vzal jsem druhou desku (ještě, že všechno kupuju po dvou) a osadil jsem jen nejnutnější věci pro programování FPGA – stabíky, pár pasiv a vlastní XC6SLX9. Připojím k programátoru a … jsem tam, kde jsem byl Smutný obličej. Uáááá, proč já. Kdybych byl býval koupil FPGA od Číňanů, už bych si asi rval vlasy. Takhle jsem si řekl, že není možné, aby dva obvody z Mouser byly vadné. Zapomněl jsem říct, že u pájení druhého jsem si dal sakra pozor, abych pájel na uzemněné antistatické podložce (na té konec konců pájím pořád), já byl uzemněný, všechno opravdu řádně propojené, tak jsem nepředpokládal zničení obvodu. Zrada tedy musela být někde v programování.

ZXUno_Martin_programming_cables   ZXUno_Martin_programming_flash

Začal jsem podezřívat čínský programátor, ovšem žádný jiný, který by uměl spolupracovat s Xilinx ISE nemám. Nevadí. Vygeneroval jsem si XSVF soubor, který jsem do ZX Uno zkusil přehrát přes ASIX Presto. Viola, jedeme. Veselý obličej Veselý obličej Veselý obličej Jo, to byla úleva.

ZXUno_Martin_scr_boot   ZXUno_Martin_scr_speccy

Všechno jsem měl postavené dobře, problém byl prostě jen v programátoru. Kdybych měl programátor, co by mi nastavil ten poblblý QE bit ve flash nebo jsem si to na Arduinu napsal sám, o čemž jsem uvažoval, ušetřil jsem si celou tuhle šílenou eskapádu s programováním flash přes FPGA JTAG.

Doosadil jsem druhou desku a běhají obě naprosto stejně a vypadá, že v pohodě. Nedalo mi to a začal jsem trochu zkoumat komunikaci mezi FPGA a programátorem. Přeci jen, jeden z důvodů, proč jsem šel do ZX Uno byl ten, že je to velmi hezký a cenově dostupný FPGA kit se kterým se dá dost vyhrát. Těším se, že zkusím časem zaemulovat Sharpíka. Vypadalo to, jako by komunikace skoro fungovala. Zkusil jsem tedy připájet piny jdoucí do konektoru přímo na desku. Předtím jsem zapomněl zmínit, že ZX Uno používá v nejnovější verzi 4.1, zřejmě kvůli úspoře míst, pro JTAG a RGB/VGA konektory Molex PicoBlade. Konektory jsou to malé a milé, ale kdo má SAFRA tohleto krimpovat. Nemluvě o tom, že jsem doma nenašel vhodné kablíky. Nakonec jsem na piny připájel Kynar drátky a na druhý konec klasickou pinovou lištu. Ale ani nahrazení PicoBlade konektoru připájením drátků nepomohlo. Zkusil jsem to tedy z druhé strany. Na programátoru jsem měl přechodku s celkem dlouhými kablíky a ty jsem teď nahradil jinými poloviční délky bez přechodky. JO! IMPACT si hned našel xc6slx9 a řekl si o data. Takhle to má vypadat. Kua, pár centimetrů drátu a den práce v tahu. No, mám další zkušenost. Na fotce nahoře se můžete podívat na zapojení, co funguje a na té samé fotce nejvíc vpravo je kablík, přes který to nejde. Přesto jsem přes něj naprogramoval pěknou řádku jiných FPGA a CPLD. No, řekli byste to?

ZX Uno má celkem pěkně řešenou konfiguraci. Po zapnutí můžete skočit do něčeho, co vypadá, jako PC BIOS, kde se dá provést řada nastavení. Můžete nakonfigurovat ROM, počítač, který se má emulovat standardně a také spustit nějaké testy. Všechno vypadá moc hezky.

ZXUno_Martin_scr_BIOSt   ZXUno_Martin_scr_BIOS_configs

Jaký počítač se emuluje nebo výběr ROM můžete samozřejmě také provádět “dočasně” přímo při startu systému, jen musí znát ty správné klávesové zkratky. Např. NMI je Ctrl+Alt+F5, reset je celkem logicky přes Ctrl+Alt+Del, ale reset celého ZX Uno přes Ctrl+Alt+Backspace už jen tak nenajdete, stejně jako klávesu EDIT pod Ctrl+Alt+F2.

ZXUno_Martin_scr_ROMst   ZXUno_Martin_scr_SamCoupe

Zlehka jsem projel konfigurace i nějaké Speccy dema a vypadalo to, že to i funguje. Mrkající veselý obličej

ZXUno_Martin_scr_ShockDemo   ZXUno_Martin_scr_Demo1

Rozhodně to ale teď bude chtít bližší zkoumání. Vypadá to, že hračka je to moc hezká a že by se s ní dalo velmi pěkně vyhrát. Jen je safra trochu problém, že hraček je hodně a času je tak málo.

Příspěvek byl publikován v rubrice Apple II, Jupiter ACE, Moderní projekty, Sinclair, ZX Spectrum se štítky , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.

19 komentářů: Další zajímavý (nejen) Speccy klon – ZX Uno

    Error thrown

    Call to undefined function create_function()